Share via


Anyagok

Az anyagok megosztott erőforrások, amelyek meghatározzák a háromszög alakú hálók megjelenítését. A pontfelhők viszont egyáltalán nem teszik közzé az anyagokat.

A rendszer az anyagok megadására szolgál

  • mely textúrákat kell alkalmazni,
  • hogy transzparenssé tegye-e az objektumokat,
  • hogyan kommunikál a világítás a felülettel.

Az anyagok automatikusan jönnek létre a modellátalakítás során, és futásidőben érhetők el. Létrehozhat egyéni anyagokat is a kódból, és lecserélheti a meglévőket. Ez a forgatókönyv különösen akkor hasznos, ha ugyanazt az anyagot több hálón szeretné megosztani. Mivel az anyag módosításai minden olyan hálón láthatók, amely hivatkozik rá, ez a módszer könnyen alkalmazható a módosításokra.

Megjegyzés:

Bizonyos használati esetek, például a kijelölt objektumok kiemelése az anyagok módosításával végezhetők el, de sokkal könnyebben megvalósíthatók a HierarchicalStateOverrideComponent használatával.

Anyagtípusok

Az Azure Remote Rendering két különböző anyagtípussal rendelkezik:

  • PBR-anyagokat használnak olyan felületekhez, amelyeket a lehető legkorrekt módon kell megjeleníteni. Ezekhez az anyagokhoz fizikai alapú renderelés (PBR) használatával számítják ki a valósághű világítást . Ahhoz, hogy a lehető legtöbbet kihozhassa ebből az anyagtípusból, fontos, hogy kiváló minőségű bemeneti adatokat biztosítson, például az érdességet és a normál térképeket.

  • Színanyagokat használnak olyan esetekben, ahol nincs szükség extra világításra. Ezek az anyagok mindig teljes világos, és könnyebb beállítani. A színanyagokat olyan adatokhoz használják, amelyeknek egyáltalán nem kell világítással rendelkezniük, vagy már tartalmaznak statikus világítást, például fotogrammetriával beszerzett modelleket.

Mesh és MeshComponent anyaghozzárendelés

A háromszög alakú hálók egy vagy több almémet rendelkeznek. Minden almesh egy anyagra hivatkozik. Módosíthatja az anyagot úgy, hogy közvetlenül a hálón használja, vagy felülbírálhatja, hogy melyik anyagot használja a MeshComponent alegységéhez.

Amikor közvetlenül a hálóerőforráson módosít egy anyagot, ez a változás a háló összes példányát érinti. A MeshComponenten módosítása azonban csak az adott hálópéldányt érinti. A megfelelőbb módszer a kívánt viselkedéstől függ, de a MeshComponent módosítása a gyakoribb módszer.

Anyag-duplikációk megszüntetése

Az átalakítás során több azonos tulajdonságokkal és anyagmintával rendelkező anyag automatikusan egyetlen anyagra lesz duplikálva. Ezt a funkciót letilthatja a konvertálási beállításokban, de javasoljuk, hogy a legjobb teljesítmény érdekében hagyja be.

Anyagosztályok

Az API által biztosított összes anyag az alaposztályból Materialszármazik. Típusuk lekérdezhető közvetlenül Material.MaterialSubType vagy közvetlenül:

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-dokumentáció

Következő lépések