Materiały

Materiały są zasobami udostępnionymi, które definiują sposób renderowania trójkątnych siatk. Chmury punktowe z drugiej strony nie ujawniają żadnych materiałów.

Materiały są używane do określania

  • które tekstury mają być stosowane,
  • czy obiekty mają być przezroczyste,
  • sposób interakcji oświetlenia z powierzchnią.

Materiały są tworzone automatycznie podczas konwersji modelu i są dostępne w czasie wykonywania. Możesz również tworzyć niestandardowe materiały na podstawie kodu i zastępować istniejące. Ten scenariusz ma szczególnie sens, jeśli chcesz udostępnić ten sam materiał w wielu siatkach. Ponieważ modyfikacje materiału są widoczne na każdej siatki, która się do niej odwołuje, ta metoda może służyć do łatwego stosowania zmian.

Uwaga

Niektóre przypadki użycia, takie jak wyróżnianie wybranego obiektu, mogą być wykonywane przez modyfikowanie materiałów, ale są znacznie łatwiejsze w hierarchiiStateOverrideComponent.

Typy materiałów

Usługa Azure Remote Rendering ma dwa odrębne typy materiałów:

  • Materiały PBR są używane do powierzchni, które powinny być renderowane jako fizycznie poprawne, jak to możliwe. Realistyczne oświetlenie jest obliczane dla tych materiałów przy użyciu renderowania fizycznego (PBR). Aby jak najlepiej wykorzystać ten typ materiału, ważne jest zapewnienie wysokiej jakości danych wejściowych, takich jak szorstkość i normalne mapy.

  • Materiały kolorowe są używane w przypadkach, w których nie jest wymagane dodatkowe oświetlenie. Te materiały są zawsze pełne jasne i są łatwiejsze do skonfigurowania. Materiały kolorowe są używane do danych, które nie powinny mieć żadnego oświetlenia lub już zawierają oświetlenie statyczne, takie jak modele uzyskane za pośrednictwem fotogramówmetrii.

Przypisania materiału mesh a MeshComponent

Trójkątne siatki mają co najmniej jedną podmezę. Każdy podimesh odwołuje się do jednego materiału. Można zmienić materiał, aby używać go bezpośrednio w siateczce, lub można zastąpić materiał do użycia dla submesh w meshComponent.

Podczas modyfikowania materiału bezpośrednio w zasobie siatki ta zmiana wpływa na wszystkie wystąpienia tej siatki. Zmiana go na meshComponent ma jednak wpływ tylko na to jedno wystąpienie siatki. Która metoda jest bardziej odpowiednia, zależy od żądanego zachowania, ale modyfikowanie elementu MeshComponent jest bardziej typowym podejściem.

Deduplikacja materiału

Podczas konwersji wielu materiałów o tych samych właściwościach i teksturach są automatycznie odduplikowane do pojedynczego materiału. Tę funkcję można wyłączyć w ustawieniach konwersji, ale zalecamy pozostawienie jej w celu uzyskania najlepszej wydajności.

Klasy materiału

Wszystkie materiały dostarczane przez interfejs API pochodzą z klasy Materialbazowej . Ich typ może być odpytywane za pośrednictwem Material.MaterialSubType lub przez bezpośrednie rzutowanie ich:

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

Dokumentacja interfejsu API

Następne kroki