Materialen
Materialen zijn gedeelde resources die bepalen hoe driehoekige meshes worden weergegeven. Puntwolken daarentegen geven helemaal geen materialen weer.
Materialen worden gebruikt om op te geven
- welke patronen moeten worden toegepast,
- of objecten transparant moeten worden gemaakt,
- hoe verlichting communiceert met het oppervlak.
Materialen worden automatisch gemaakt tijdens de modelconversie en zijn tijdens runtime toegankelijk. U kunt ook aangepaste materialen maken op basis van code en bestaande materialen vervangen. Dit scenario is vooral zinvol als u hetzelfde materiaal wilt delen over veel meshes. Aangezien wijzigingen van een materiaal zichtbaar zijn op elke mesh die ernaar verwijst, kan deze methode worden gebruikt om eenvoudig wijzigingen toe te passen.
Notitie
Sommige gebruiksvoorbeelden, zoals het markeren van een gekozen object, kunnen worden uitgevoerd door materialen te wijzigen, maar zijn veel eenvoudiger te bereiken via de HierarchicalStateOverrideComponent.
Materiaaltypen
Azure Remote Rendering heeft twee verschillende materiaaltypen:
PBR-materialen worden gebruikt voor oppervlakken die zo fysiek mogelijk moeten worden gerenderd. Realistische verlichting wordt berekend voor deze materialen met behulp van fysiek gebaseerde rendering (PBR). Als u optimaal gebruik wilt maken van dit materiaaltype, is het belangrijk dat u invoergegevens van hoge kwaliteit levert, zoals ruwheid en normale kaarten.
Kleurmaterialen worden gebruikt voor gevallen waarin geen extra verlichting gewenst is. Deze materialen zijn altijd volledig helder en zijn gemakkelijker in te stellen. Kleurmaterialen worden gebruikt voor gegevens die helemaal geen verlichting mogen hebben of die al statische verlichting bevatten, zoals modellen die zijn verkregen via fotogrammetrie.
Mesh versus MeshComponent materiaaltoewijzing
Driehoekige meshes hebben een of meer submeshes . Elke submesh verwijst naar één materiaal. U kunt het materiaal wijzigen om rechtstreeks op de mesh te gebruiken of u kunt overschrijven welk materiaal moet worden gebruikt voor een submesh op een MeshComponent.
Wanneer u een materiaal rechtstreeks op de mesh-resource wijzigt, is deze wijziging van invloed op alle exemplaren van die mesh. Het wijzigen ervan op de MeshComponent is echter alleen van invloed op dat ene mesh-exemplaar. Welke methode geschikter is, is afhankelijk van het gewenste gedrag, maar het wijzigen van een MeshComponent is de meest voorkomende benadering.
Materiaalontdubbeling
Tijdens de conversie worden meerdere materialen met dezelfde eigenschappen en patronen automatisch gededupliceerd in één materiaal. U kunt deze functie uitschakelen in de conversie-instellingen, maar we raden u aan deze functie in te schakelen voor de beste prestaties.
Materiaalklassen
Alle materialen die door de API worden geleverd, zijn afgeleid van de basisklasse Material
. Hun type kan worden doorgevraagd Material.MaterialSubType
of door ze rechtstreeks te casten:
void SetMaterialColorToGreen(Material material)
{
if (material.MaterialSubType == MaterialType.Color)
{
ColorMaterial colorMaterial = material as ColorMaterial;
colorMaterial.AlbedoColor = new Color4(0, 1, 0, 1);
return;
}
PbrMaterial pbrMat = material as PbrMaterial;
if (pbrMat != null)
{
pbrMat.AlbedoColor = new Color4(0, 1, 0, 1);
return;
}
}
void SetMaterialColorToGreen(ApiHandle<Material> material)
{
if (material->GetMaterialSubType() == MaterialType::Color)
{
ApiHandle<ColorMaterial> colorMaterial = material.as<ColorMaterial>();
colorMaterial->SetAlbedoColor({ 0, 1, 0, 1 });
return;
}
if (material->GetMaterialSubType() == MaterialType::Pbr)
{
ApiHandle<PbrMaterial> pbrMat = material.as<PbrMaterial>();
pbrMat->SetAlbedoColor({ 0, 1, 0, 1 });
return;
}
}
API-documentatie
- C#-materiaalklasse
- C# ColorMaterial-klasse
- C# PbrMaterial-klasse
- C# RenderingConnection.CreateMaterial()
- C++ Materiaalklasse
- Klasse C++ ColorMaterial
- C++ PbrMaterial-klasse
- C++ RenderingConnection::CreateMaterial()