Farbmaterialien
Farbmaterialien sind einer der unterstützten Materialtypen in Azure Remote Rendering. Sie werden für Gittermodelle verwendet, die keine Beleuchtung erhalten, sondern immer bei voller Helligkeit angezeigt werden sollen. Dies kann beispielsweise bei „leuchtenden“ Materialien wie Armaturenbrettern, Glühlampen oder bei Daten der Fall sein, die bereits eine statische Beleuchtung umfassen (z. B. Modelle, die mittels Fotogrammetrie erstellt wurden).
Farbmaterialien können aufgrund ihres einfacheren Schattierungsmodells effizienter gerendert werden als PBR-Materialien. Außerdem unterstützen sie verschiedene Transparenzmodi.
Farbmaterialeigenschaften
Die folgenden Materialeigenschaften werden in der Laufzeit-API verfügbar gemacht, z. B. für die C# ColorMaterial-Klasse bzw. die C++ ColorMaterial-Klasse.
ColorFlags
: Verschiedene Featureflags können in dieser Bitmaske kombiniert werden, um die folgenden Features zu aktivieren:UseVertexColor
: Wenn das Gittermodell vertex-Farben enthält und diese Option aktiviert ist, werden die vertex-Farben des Gittermodells inAlbedoColor
undAlbedoMap
multipliziert. Standardmäßig istUseVertexColor
deaktiviert.DoubleSided
: Wenn diese Eigenschaft auf „true“ festgelegt ist, werden Dreiecke mit diesem Material auch dann gerendert, wenn die Kamera auf ihre Rückseite gerichtet ist. Diese Option ist standardmäßig deaktiviert. Siehe auch Single-sided rendering.AlphaClipped
: Ermöglicht harte Ausschnitte pro Pixel auf der Basis eines unter dem Wert vonAlphaClipThreshold
liegenden Alphawerts (siehe unten). Dies funktioniert auch bei opaken Materialien.TransparencyWritesDepth
:Wenn dasTransparencyWritesDepth
-Flag für das Material festgelegt und das Material transparent ist, leisten Objekte, die dieses Material verwenden, einen Beitrag zum letzten Tiefenpuffer. Weitere Informationen finden Sie in der FarbmaterialeigenschaftColorTransparencyMode
im nächsten Abschnitt. Es wird empfohlen, dieses Feature zu aktivieren, wenn Ihr Anwendungsfall einen plausibleren Farbverschiebungsausgleich für vollständig transparente Szenen erfordert. Bei Szenen, die teilweise transparent und teilweise nicht transparent sind, kann diese Einstellung zu nicht plausiblem Reprojektionsverhalten oder nicht plausiblen Reprojektionsartefakten führen. Aus diesem Grund wird dieses Flag für normale Anwendungsfälle standardmäßig deaktiviert. Diese Einstellung wird auch empfohlen. Die geschriebenen Tiefenwerte werden der pixelbasierten Tiefenebene des Objekts entnommen, das sich der Kamera am nächsten befindet.FresnelEffect
: Dieses Materialflag ermöglicht den additiven Fresneleffekt für das jeweilige Material. Die Darstellung des Effekts wird durch die anderen FresnelparameterFresnelEffectColor
undFresnelEffectExponent
bestimmt, die im Folgenden erläutert werden.
AlbedoColor
: Diese Farbe wird mit anderen Farben multipliziert, z. B. mitAlbedoMap
- oder vertex-Farben. Wenn transparency für ein Material aktiviert ist, wird der Alphakanal verwendet, um die Deckkraft anzupassen, wobei1
vollständig undurchsichtig und0
vollständig transparent bedeutet. Die Standardalbedofarbe ist opakes Weiß.Hinweis
Da Farbmaterialien die Umgebung nicht widerspiegeln, wird ein vollständig transparentes Farbmaterial unsichtbar. Dies ist bei PBR-Materialien anders.
AlbedoMap
: Eine 2D-Textur für Albedowerte pro Pixel.AlphaClipThreshold
: Wenn dasAlphaClipped
-Flag für dieColorFlags
-Eigenschaft festgelegt ist, werden alle Pixel, bei denen der Albedoalphawert unter dem Wert vonAlphaClipThreshold
liegt, nicht gezeichnet. Alphaclipping kann auch ohne Aktivierung der Transparenz verwendet werden, und es beschleunigt das Rendern. Materialien, auf die Alphaclipping angewendet wird, werden dennoch langsamer gerendert als vollständig undurchsichtige Materialien. Alphaclipping ist standardmäßig deaktiviert.TexCoordMode
: Definiert den Modus, der zum Erstellen von Texturkoordinaten für die Albedo-Textur verwendet wird. Dieser Modus wird ignoriert, wenn dieses Material keine Textur verwendet. Standardmäßig werden die Texturkoordinaten aus den Eingabevertexstreams (ModusTextureCoordinateGenerationMode.SourceUv0
oderTextureCoordinateGenerationMode.SourceUv1
) des Gitters abgerufen und dann durchTexCoordScale
undTexCoordOffset
transformiert. Beim Einrichten eines Materials über Code kann dieser Modus auch aufTextureCoordinateGenerationMode.PlanarObjectSpace
oderTextureCoordinateGenerationMode.PlanarWorldSpace
festgelegt werden, um die Koordinaten als Vertexabstand zu zwei konfigurierbaren 3D-EbenenTexCoordPlaneU
undTexCoordPlaneV
zu generieren. Dies wird als „planare Texturzuordnung“ bezeichnet.TexCoordScale
undTexCoordOffset
: Für Texturkoordinaten aus dem Quellgitter kann eine zusätzliche lineare Transformation angewendet werden. Die Skalierung wird mit den UV-Texturkoordinaten multipliziert, und der Offset wird addiert. Kann zum Strecken und Verschieben der Texturen verwendet werden. Die Standardskalierung ist (1, 1) und der Standardoffset ist (0, 0).TexCoordPlaneU
undTexCoordPlaneV
: Für planare Zuordnungsmodi definieren diese die Texturebenen für die u-Koordinate bzw. v-Koordinate. Ebenen werden in Standardnormalform (A,B,C,D) definiert, sodass eine Koordinate als t = Ax + By + C*z + D berechnet wird, wobei (x,y,z) die Vertexposition in der Welt oder im Objektbereich ist.FresnelEffectColor
: Die für dieses Material verwendete Fresnelfarbe. Nur wichtig, wenn das Fresneleffektflag für dieses Material festgelegt wurde (siehe oben). Diese Eigenschaft steuert die Basisfarbe des Fresnel-Glanzes (eine vollständige Erläuterung finden Sie unter Fresnel-Effekt). Gegenwärtig sind nur die RGB-Kanalwerte wichtig und der Alphawert wird ignoriert.FresnelEffectExponent
: Der für dieses Material verwendete Fresnelexponent. Nur wichtig, wenn das Fresneleffektflag für dieses Material festgelegt wurde (siehe oben). Diese Eigenschaft steuert die Verteilung des Fresnel-Glanzes. Der Mindestwert 0,01 bewirkt eine Verteilung über das gesamte Objekt. Der Maximalwert 10,0 schränkt den Glanz nur auf die am stärksten zierenden sichtbaren Kanten ein.VertexMix
: Dieser Wert zwischen0
und1
gibt an, wie stark die vertex-Farbe in einem Gittermodell zur finalen Farbe beiträgt. Beim Standardwert 1 wird die vertex-Farbe vollständig in die Albedo-Farbe multipliziert. Beim Wert 0 werden die vertex-Farben vollständig ignoriert.ColorTransparencyMode
: Im Gegensatz zu PBR-Materialien wird bei Farbmaterialien zwischen verschiedenen Transparenzmodi unterschieden:Opaque
: Im Standardmodus ist die Transparenz deaktiviert. Die Unterdrückung von Alphawerten ist dennoch möglich und sollte vorgezogen werden, sofern ausreichend.AlphaBlended
: Dieser Modus ähnelt dem Transparenzmodus für PBR-Materialien. Es sollte für durchsichtige Materialien wie Glas verwendet werden.Additive
: Dieser Modus ist der einfachste und effizienteste Transparenzmodus. Der Beitrag des Materials wird dem gerenderten Bild hinzugefügt. Dieser Modus kann verwendet werden, um leuchtende (aber dennoch transparente) Objekte zu simulieren, z. B. Marker, die zum Hervorheben wichtiger Objekte verwendet werden.
Hinweis
Während für AlbedoColor
und FresnelEffectColor
die gleichen akzeptierten Wertebereiche wie für PBR-Materialien gelten, werden ihre Kanäle effektiv auf [0;1] für Farbmaterialien festgelegt.
Farbmaterialüberschreibungen während der Konvertierung
Eine Teilmenge der Farbmaterialeigenschaften kann während der Modellkonvertierung mittels der Materialüberschreibungsdatei überschrieben werden. Die folgende Tabelle zeigt die Zuordnung zwischen den oben dokumentierten Laufzeiteigenschaften und dem entsprechenden Eigenschaftsnamen in der Überschreibungsdatei:
Materialeigenschaftsname | Eigenschaftsname in der Überschreibungsdatei |
---|---|
ColorFlags.AlphaClipped |
alphaClipEnabled |
ColorFlags.UseVertexColor |
useVertexColor |
ColorFlags.DoubleSided |
isDoubleSided |
ColorFlags.TransparencyWritesDepth |
transparencyWritesDepth |
AlbedoColor |
albedoColor |
TexCoordScale |
textureCoordinateScale |
TexCoordOffset |
textureCoordinateOffset |
ColorTransparencyMode |
transparent |
AlphaClipThreshold |
alphaClipThreshold |
API-Dokumentation
- C#-Klasse „ColorMaterial“
- C# RenderingConnection.CreateMaterial()
- C++-Klasse „ColorMaterial“
- C++ RenderingConnection::CreateMaterial()