Materiály

Materiály jsou sdílené prostředky , které definují, jak se vykreslují trojúhelníkové sítě . Bodové mraky na druhé straně nezpřístupňují materiály vůbec.

Materiály se používají k určení

  • které textury se mají použít,
  • zda mají být objekty průhledné,
  • jak osvětlení komunikuje s povrchem.

Materiály se vytvářejí automaticky během převodu modelu a jsou přístupné za běhu. Můžete také vytvořit vlastní materiály z kódu a nahradit stávající materiály. Tento scénář má smysl zejména v případě, že chcete sdílet stejný materiál napříč mnoha sítěmi. Vzhledem k tomu, že úpravy materiálu jsou viditelné na každé síti, která na ni odkazuje, lze tuto metodu použít k snadnému použití změn.

Poznámka:

Některé případy použití, jako je zvýraznění vybraného objektu, lze provádět úpravou materiálů, ale jsou mnohem jednodušší prostřednictvím HierarchicalStateOverrideComponent.

Typy materiálu

Azure Remote Rendering má dva různé typy materiálů:

  • Materiály PBR se používají pro povrchy, které by se měly vykreslit co nejpravdědněji. Realistické osvětlení se pro tyto materiály vypočítá pomocí fyzicky založeného vykreslování (PBR). Pro maximální využití tohoto typu materiálu je důležité poskytnout vysoce kvalitní vstupní data, jako jsou hrubost a normální mapy.

  • Barevné materiály se používají v případech, kdy není žádoucí žádné dodatečné osvětlení. Tyto materiály jsou vždy zcela jasné a jsou jednodušší nastavit. Barevné materiály se používají pro data, která by buď neměla mít vůbec žádné osvětlení, nebo již zahrnuje statické osvětlení, jako jsou modely získané prostřednictvím fotogrammetry.

Mesh vs. Přiřazení materiálu MeshComponent

Trojúhelníkové mřížky mají jednu nebo více podmnožek. Každá dílčí dokumentace odkazuje na jeden materiál. Materiál můžete změnit tak, aby se používal přímo na síti, nebo můžete přepsat, který materiál se má použít pro submesh v rámci meshcomponentu.

Když upravíte materiál přímo na prostředku sítě, ovlivní tato změna všechny instance této sítě. Změna v rámci meshcomponentu ale ovlivní pouze jednu instanci sítě. Která metoda je vhodnější, závisí na požadovaném chování, ale úprava funkce MeshComponent je častější přístup.

Odstranění duplicit materiálu

Během převodu více materiálů se stejnými vlastnostmi a texturami se automaticky dedlikují do jednoho materiálu. Tuto funkci můžete zakázat v nastavení převodu, ale doporučujeme ji nechat zapnutou, aby byla nejlepší.

Třídy materiálů

Všechny materiály poskytované rozhraním API jsou odvozeny od základní třídy Material. Jejich typ může být dotazován přímo Material.MaterialSubType prostřednictvím nebo jejich přetypováním:

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;
    }
}

Dokumentace k rozhraní API

Další kroky