Udostępnij za pośrednictwem


Materiały kolorów

Materiały kolorowe są jednym z obsługiwanych typów materiałów w usłudze Azure Remote Rendering. Są one używane do siateczek , które nie powinny otrzymywać żadnego rodzaju oświetlenia, ale raczej zawsze pojawiają się w pełnej jasności. Może to być przypadek dla "świecących" materiałów, takich jak pulpity nawigacyjne samochodu, żarówki lub dane, które już zawierają oświetlenie statyczne, takie jak modele uzyskane za pośrednictwem fotogrammetrii.

Materiały kolorowe są bardziej wydajne do renderowania niż materiały PBR ze względu na ich prostszy model cieniowania. Obsługują one również różne tryby przezroczystości.

Właściwości materiału kolorowego

Następujące właściwości materiału są uwidocznione w interfejsie API środowiska uruchomieniowego, na przykład w klasie ColorMaterial języka C# lub klasie ColorMaterial języka C++, odpowiednio.

  • ColorFlags: Różne flagi funkcji można połączyć w tej masce bitów, aby włączyć następujące funkcje:

    • UseVertexColor: Jeśli siatka zawiera vertex kolory i ta opcja jest włączona, kolor siatki vertex jest mnożony do AlbedoColor elementów i AlbedoMap. Domyślnie UseVertexColor jest wyłączona.
    • DoubleSided: Jeśli podwójna strona jest ustawiona na wartość true, trójkąty z tym materiałem są renderowane nawet wtedy, gdy kamera patrzy na plecy. Domyślnie ta opcja jest wyłączona. Zobacz też Single-sided rendering.
    • AlphaClipped: włącza twarde wycinki na piksel na podstawie wartości alfa poniżej wartości AlphaClipThreshold (patrz poniżej). To działa również w przypadku nieprzezroczystych materiałów.
    • TransparencyWritesDepth: Jeśli flaga TransparencyWritesDepth jest ustawiona na materiale, a materiał jest przezroczysty, obiekty korzystające z tego materiału również przyczynią się do końcowego buforu głębokości. Zobacz właściwość ColorTransparencyMode materiału koloru w następnej sekcji. Włączenie tej funkcji jest zalecane, jeśli przypadek użycia wymaga bardziej wiarygodnego ponownego projektu późnego etapu w pełni przezroczystych scen. W przypadku mieszanych nieprzezroczystych/przezroczystych scen to ustawienie może powodować nieprawdopodobne zachowanie ponownego projektu lub artefakty ponownego projektowania. Z tego powodu domyślne i zalecane ustawienie ogólnego przypadku użycia polega na wyłączeniu tej flagi. Zapisane wartości głębokości są pobierane z warstwy głębokości na piksel obiektu znajdującego się najbliżej aparatu.
    • FresnelEffect: Ta flaga materiału umożliwia działanie fresnela addytywnego na odpowiedni materiał. Wygląd efektu podlega innym parametrom FresnelEffectColor fresnel i FresnelEffectExponent wyjaśniono poniżej.
  • AlbedoColor: ten kolor jest mnożony za pomocą innych kolorów, takich jak AlbedoMap kolory lubvertex. Jeśli przezroczystość jest włączona na materiale, kanał alfa służy do dostosowywania nieprzezroczystości, co 1 oznacza pełne nieprzezroczyste i 0 oznacza w pełni przezroczyste. Domyślny kolor albedo jest nieprzezroczystym białym.

    Uwaga

    Ponieważ materiały kolorowe nie odzwierciedlają środowiska, w pełni przezroczysty materiał w kolorze staje się niewidoczny. Różni się to w przypadku materiałów PBR.

  • AlbedoMap: Tekstura 2D dla wartości albedo na piksel.

  • AlphaClipThreshold: Jeśli flaga AlphaClipped jest ustawiona we ColorFlags właściwości, wszystkie piksele, w których wartość alfa albedo jest niższa niż wartość AlphaClipThreshold nie zostanie narysowana. Wycinki alfa można używać nawet bez włączania przezroczystości i jest znacznie szybsze renderowanie. Materiały przycięte alfa są nadal wolniejsze do renderowania niż w pełni nieprzezroczyste materiały, choć. Domyślnie wycinanie alfa jest wyłączone.

  • TexCoordMode: Definiuje tryb używany do tworzenia współrzędnych tekstury dla tekstury albedo. Ten tryb jest ignorowany, jeśli ten materiał nie używa tekstury. Domyślnie współrzędne tekstury są pobierane ze strumieni wejściowych wierzchołków siatki (tryb TextureCoordinateGenerationMode.SourceUv0 lub TextureCoordinateGenerationMode.SourceUv1), a następnie przekształcane za pomocą TexCoordScale i TexCoordOffset. Podczas konfigurowania materiału za pomocą kodu można również ustawić ten tryb na TextureCoordinateGenerationMode.PlanarObjectSpace lub TextureCoordinateGenerationMode.PlanarWorldSpace wygenerować współrzędne jako odległość wierzchołka do dwóch konfigurowalnych płaszczyzn TexCoordPlaneU 3D i TexCoordPlaneV. Jest to określane jako "mapowanie tekstur planarnych".

  • TexCoordScale i TexCoordOffset: W przypadku współrzędnych tekstury z siatki źródłowej można zastosować dodatkową transformację liniową. Skala jest mnożona do współrzędnych tekstury UV, przesunięcie jest do niego dodawane. Można użyć do rozciągnięcia i przesunięcia tekstur. Domyślna skala to (1, 1), a przesunięcie to (0, 0).

  • TexCoordPlaneU i TexCoordPlaneV: W przypadku trybów mapowania planarnego należy zdefiniować odpowiednio płaszczyzny tekstur dla współrzędnych u i współrzędnych wirtualnych. Płaszczyzny są definiowane w standardowej postaci normalnej (A,B,C,D), dlatego współrzędna jest obliczana jako t = Ax + By + C*z + D, gdzie (x,y,z) jest położeniem wierzchołka w świecie lub przestrzeni obiektu.

  • FresnelEffectColor: Kolor fresnel używany do tego materiału. Ważne tylko wtedy, gdy flaga efektu fresnel została ustawiona na tym materiale (patrz powyżej). Ta właściwość steruje kolorem bazowym blasku fresnel (zobacz efekt fresnel, aby uzyskać pełne wyjaśnienie). Obecnie tylko wartości kanału RGB są ważne, a wartość alfa zostanie zignorowana.

  • FresnelEffectExponent: wykładnik fresnel używany dla tego materiału. Ważne tylko wtedy, gdy flaga efektu fresnel została ustawiona na tym materiale (patrz powyżej). Ta właściwość kontroluje rozprzestrzenianie się blasku fresnela. Wartość minimalna 0,01 powoduje rozłożenie całego obiektu. Maksymalna wartość 10,0 ogranicza blask tylko do najbardziej wypasowych krawędzi widocznych.

  • VertexMix: Ta wartość między 0 i 1 określa, jak silnie vertex kolor w siatce przyczynia się do końcowego koloru. W domyślnej wartości 1 vertex kolor jest mnożony do koloru albedo w pełni. W przypadku wartości 0 vertex kolory są całkowicie ignorowane.

  • ColorTransparencyMode: W przeciwieństwie do materiałów PBR materiały kolorowe rozróżniają różne tryby przezroczystości:

    • Opaque: Tryb domyślny wyłącza przezroczystość. Wycinanie alfa jest jednak nadal możliwe i powinno być preferowane, jeśli jest to wystarczające.
    • AlphaBlended: Ten tryb jest podobny do trybu przezroczystości materiałów PBR. Należy go używać do materiałów prześlarnych, takich jak szkło.
    • Additive: Ten tryb jest najprostszym i najbardziej wydajnym trybem przezroczystości. Wkład materiału jest dodawany do renderowanego obrazu. Ten tryb może służyć do symulowania świecących (ale nadal przezroczystych) obiektów, takich jak znaczniki używane do wyróżniania ważnych obiektów.

Uwaga

Chociaż AlbedoColor i FresnelEffectColor mają ten sam akceptowany zakres wartości co w przypadku materiałów PBR, ich kanały będą skutecznie zaciskane do [0; 1] w przypadku materiałów kolorowych.

Przesłonięcia materiału kolorowego podczas konwersji

Podzbiór właściwości materiału koloru można zastąpić podczas konwersji modelu za pośrednictwem pliku zastępowania materiału. W poniższej tabeli przedstawiono mapowanie między właściwościami środowiska uruchomieniowego opisanymi powyżej i odpowiednią nazwą właściwości w pliku zastąpienia:

Nazwa właściwości materiału Nazwa właściwości w pliku zastępowania
ColorFlags.AlphaClipped alphaClipEnabled
ColorFlags.UseVertexColor useVertexColor
ColorFlags.DoubleSided isDoubleSided
ColorFlags.TransparencyWritesDepth transparencyWritesDepth
AlbedoColor albedoColor
TexCoordScale textureCoordinateScale
TexCoordOffset textureCoordinateOffset
ColorTransparencyMode transparent
AlphaClipThreshold alphaClipThreshold

Dokumentacja interfejsu API

Następne kroki