Material
Material är delade resurser som definierar hur triangulära nät återges . Punktmoln å andra sidan exponerar inte material alls.
Material används för att ange
- vilka texturer som ska tillämpas,
- om objekt ska vara transparenta,
- hur belysning interagerar med ytan.
Material skapas automatiskt under modellkonverteringen och är tillgängliga vid körning. Du kan också skapa anpassade material från kod och ersätta befintliga. Det här scenariot är särskilt meningsfullt om du vill dela samma material i många nät. Eftersom ändringar av ett material visas på varje nät som refererar till det, kan den här metoden användas för att enkelt tillämpa ändringar.
Kommentar
Vissa användningsfall, till exempel att markera ett valt objekt, kan göras genom att ändra material, men är mycket enklare att uppnå via HierarchicalStateOverrideComponent.
Materialtyper
Azure Remote Rendering har två olika materialtyper:
PBR-material används för ytor som ska återges så fysiskt korrekta som möjligt. Realistisk belysning beräknas för dessa material med fysisk återgivning (PBR). För att få ut mesta möjliga av den här materialtypen är det viktigt att tillhandahålla indata av hög kvalitet, till exempel grovhet och normala kartor.
Färgmaterial används för fall där ingen extra belysning önskas. Dessa material är alltid helt ljusa och är lättare att konfigurera. Färgmaterial används för data som antingen inte ska ha någon belysning alls eller som redan innehåller statisk belysning, till exempel modeller som erhålls via fotogrammetri.
Mesh jämfört med MeshComponent-materialtilldelning
Triangulära nät har en eller flera underblad. Varje undermapp refererar till ett material. Du kan ändra materialet så att det antingen används direkt i nätet, eller så kan du åsidosätta vilket material som ska användas för en undermapp på en MeshComponent.
När du ändrar ett material direkt på nätresursen påverkar den här ändringen alla instanser av det nätet. Att ändra den på MeshComponent påverkar dock bara den ena mesh-instansen. Vilken metod som är lämpligare beror på önskat beteende, men att ändra en MeshComponent är den vanligaste metoden.
Materialdeduplicering
Under konverteringen av dupliceras flera material med samma egenskaper och texturer automatiskt till ett enda material. Du kan inaktivera den här funktionen i konverteringsinställningarna, men vi rekommenderar att du lämnar den på för bästa prestanda.
Materialklasser
Allt material som tillhandahålls av API:et härleds från basklassen Material
. Deras typ kan efterfrågas via Material.MaterialSubType
eller genom att casta dem direkt:
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-dokumentation
- C#-materialklass
- Klassen C# ColorMaterial
- C# PbrMaterial-klass
- C# RenderingConnection.CreateMaterial()
- C++ Materialklass
- C++ ColorMaterial-klass
- C++ PbrMaterial-klass
- C++ RenderingConnection::CreateMaterial()