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 doAlbedoColor
elementów iAlbedoMap
. DomyślnieUseVertexColor
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ściAlphaClipThreshold
(patrz poniżej). To działa również w przypadku nieprzezroczystych materiałów.TransparencyWritesDepth
: Jeśli flagaTransparencyWritesDepth
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 parametromFresnelEffectColor
fresnel iFresnelEffectExponent
wyjaśniono poniżej.
AlbedoColor
: ten kolor jest mnożony za pomocą innych kolorów, takich jakAlbedoMap
kolory lubvertex . Jeśli przezroczystość jest włączona na materiale, kanał alfa służy do dostosowywania nieprzezroczystości, co1
oznacza pełne nieprzezroczyste i0
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.
AlphaClipThreshold
: Jeśli flagaAlphaClipped
jest ustawiona weColorFlags
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 (trybTextureCoordinateGenerationMode.SourceUv0
lubTextureCoordinateGenerationMode.SourceUv1
), a następnie przekształcane za pomocąTexCoordScale
iTexCoordOffset
. Podczas konfigurowania materiału za pomocą kodu można również ustawić ten tryb naTextureCoordinateGenerationMode.PlanarObjectSpace
lubTextureCoordinateGenerationMode.PlanarWorldSpace
wygenerować współrzędne jako odległość wierzchołka do dwóch konfigurowalnych płaszczyznTexCoordPlaneU
3D iTexCoordPlaneV
. Jest to określane jako "mapowanie tekstur planarnych".TexCoordScale
iTexCoordOffset
: 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
iTexCoordPlaneV
: 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ędzy0
i1
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
- C# ColorMaterial, klasa
- C# RenderingConnection.CreateMaterial()
- C++ ColorMaterial, klasa
- C++ RenderingConnection::CreateMaterial()
Następne kroki
- Materiały PBR
- Tekstury
- Siatki
- Pliki zastępowania materiału.