Freigeben über


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 in AlbedoColor und AlbedoMap multipliziert. Standardmäßig ist UseVertexColor 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 von AlphaClipThreshold liegenden Alphawerts (siehe unten). Dies funktioniert auch bei opaken Materialien.
    • TransparencyWritesDepth:Wenn das TransparencyWritesDepth-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 Farbmaterialeigenschaft ColorTransparencyMode 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 Fresnelparameter FresnelEffectColor und FresnelEffectExponent bestimmt, die im Folgenden erläutert werden.
  • AlbedoColor: Diese Farbe wird mit anderen Farben multipliziert, z. B. mit AlbedoMap- oder vertex-Farben. Wenn transparency für ein Material aktiviert ist, wird der Alphakanal verwendet, um die Deckkraft anzupassen, wobei 1 vollständig undurchsichtig und 0 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 das AlphaClipped-Flag für die ColorFlags-Eigenschaft festgelegt ist, werden alle Pixel, bei denen der Albedoalphawert unter dem Wert von AlphaClipThreshold 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 (Modus TextureCoordinateGenerationMode.SourceUv0 oder TextureCoordinateGenerationMode.SourceUv1) des Gitters abgerufen und dann durch TexCoordScale und TexCoordOffset transformiert. Beim Einrichten eines Materials über Code kann dieser Modus auch auf TextureCoordinateGenerationMode.PlanarObjectSpace oder TextureCoordinateGenerationMode.PlanarWorldSpace festgelegt werden, um die Koordinaten als Vertexabstand zu zwei konfigurierbaren 3D-Ebenen TexCoordPlaneU und TexCoordPlaneV zu generieren. Dies wird als „planare Texturzuordnung“ bezeichnet.

  • TexCoordScale und TexCoordOffset: 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 und TexCoordPlaneV: 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 zwischen 0 und 1 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

Nächste Schritte