Kleurmaterialen
Kleurmaterialen zijn een van de ondersteunde materiaaltypen in Azure Remote Rendering. Ze worden gebruikt voor meshes die geen soort verlichting mogen ontvangen, maar worden altijd weergegeven met volledige helderheid. Dit kan het geval zijn voor 'gloeiende' materialen, zoals autodashboards, gloeilampen of voor gegevens die al statische verlichting bevatten, zoals modellen die zijn verkregen via fotogrammetrie.
Kleurmaterialen zijn efficiënter te renderen dan PBR-materialen vanwege hun eenvoudiger arceringsmodel. Ze ondersteunen ook verschillende transparantiemodi.
Eigenschappen van kleurmateriaal
De volgende materiaaleigenschappen worden weergegeven in de runtime-API, bijvoorbeeld in de klasse C# ColorMaterial of de klasse C++ ColorMaterial.
ColorFlags
: Diverse functievlagmen kunnen worden gecombineerd in dit bitmasker om de volgende functies in te schakelen:UseVertexColor
: Als het mesh kleuren bevat vertex en deze optie is ingeschakeld, wordt de kleur van vertex het mesh vermenigvuldigd in deAlbedoColor
enAlbedoMap
.UseVertexColor
Standaard is uitgeschakeld.DoubleSided
: Als dubbelzijdigheid is ingesteld op waar, worden driehoeken met dit materiaal weergegeven, zelfs als de camera naar hun ruggezichten kijkt. Deze optie is standaard uitgeschakeld. Zie ook Single-sided rendering.AlphaClipped
: Maakt harde uitsnedes per pixel mogelijk, op basis van de alfawaarde die onder de waarde vanAlphaClipThreshold
(zie hieronder) wordt weergegeven. Dit werkt ook voor ondoorzichtige materialen.TransparencyWritesDepth
: Als deTransparencyWritesDepth
vlag is ingesteld op het materiaal en het materiaal transparant is, dragen objecten die dit materiaal gebruiken ook bij aan de uiteindelijke dieptebuffer. Zie de eigenschapColorTransparencyMode
kleurmateriaal in de volgende sectie. Het inschakelen van deze functie wordt aanbevolen als uw use-case een plausibele latere fase-herprojectie van volledig transparante scènes nodig heeft. Voor gemengde ondoorzichtige/transparante scènes kan deze instelling onoplettend gedrag voor herprojectie of reprojectieartefacten veroorzaken. Daarom is de standaardinstelling en de aanbevolen instelling voor de algemene use-case om deze vlag uit te schakelen. De geschreven dieptewaarden worden genomen uit de dieptelaag per pixel van het object dat zich het dichtst bij de camera bevindt.FresnelEffect
: Deze materiaalvlag maakt het additieve fresnel-effect op het respectieve materiaal mogelijk. Het uiterlijk van het effect wordt bepaald door de andere fresnelparametersFresnelEffectColor
enFresnelEffectExponent
hieronder uitgelegd.
AlbedoColor
: Deze kleur wordt vermenigvuldigd met andere kleuren, zoals deAlbedoMap
of vertex kleuren. Als transparantie is ingeschakeld voor een materiaal, wordt het alfakanaal gebruikt om de dekking aan te passen, met1
betekenis volledig ondoorzichtig en0
betekenis volledig transparant. De standaardkleur van albedo is ondoorzichtig wit.Notitie
Omdat kleurmaterialen de omgeving niet weerspiegelen, wordt een volledig transparant kleurmateriaal onzichtbaar. Dit is anders voor PBR-materialen.
AlbedoMap
: Een 2D-patroon voor albedo-waarden per pixel.AlphaClipThreshold
: Als deAlphaClipped
vlag is ingesteld op deColorFlags
eigenschap, worden alle pixels waarvan de albedo alpha-waarde lager is dan de waarde ervanAlphaClipThreshold
niet getekend. Alfa-knipsels kunnen zelfs worden gebruikt zonder transparantie in te schakelen en is veel sneller weer te geven. Alfaclipmaterialen zijn echter nog steeds trager dan volledig ondoorzichtige materialen. Alfa-knipsels zijn standaard uitgeschakeld.TexCoordMode
: Hiermee definieert u de modus die wordt gebruikt voor het produceren van patrooncoördinaten voor de albedo-textuur. Deze modus wordt genegeerd als dit materiaal geen textuur gebruikt. Standaard worden de patrooncoördinaten opgehaald uit de invoerpuntstromen van de mesh (modusTextureCoordinateGenerationMode.SourceUv0
ofTextureCoordinateGenerationMode.SourceUv1
) en vervolgens getransformeerd doorTexCoordScale
enTexCoordOffset
. Bij het instellen van een materiaal via code kan deze modus ook worden ingesteldTextureCoordinateGenerationMode.PlanarObjectSpace
op ofTextureCoordinateGenerationMode.PlanarWorldSpace
om de coördinaten te genereren als hoekpuntafstand tot twee configureerbare 3D-vlakkenTexCoordPlaneU
enTexCoordPlaneV
. Dit wordt 'planar texture mapping' genoemd.TexCoordScale
enTexCoordOffset
: Voor patrooncoördinaten van bronnet kan een extra lineaire transformatie worden toegepast. De schaal wordt vermenigvuldigd in de UV-patrooncoördinaten, de offset wordt eraan toegevoegd. Kan worden gebruikt om de patronen uit te rekken en te verplaatsen. De standaardschaal is (1, 1) en offset is (0, 0).TexCoordPlaneU
enTexCoordPlaneV
: voor planaire toewijzingsmodi definiëren deze respectievelijk de patroonvlakken voor de u-coördinaat en v-coördinaat. Vlakken worden gedefinieerd in normale standaardvorm (A,B,C,D), zodat een coördinaat wordt berekend als t = Ax + By + C*z + D, waarbij (x,y,z) de hoekpuntpositie is in de wereld of objectruimte.FresnelEffectColor
: De fresnelkleur die voor dit materiaal wordt gebruikt. Alleen belangrijk wanneer de fresnel effectvlag is ingesteld op dit materiaal (zie hierboven). Deze eigenschap bepaalt de basiskleur van de fresnel glans (zie fresnel effect voor een volledige uitleg). Momenteel zijn alleen de RGB-kanaalwaarden belangrijk en wordt de alfawaarde genegeerd.FresnelEffectExponent
: De fresnel exponent gebruikt voor dit materiaal. Alleen belangrijk wanneer de fresnel effectvlag is ingesteld op dit materiaal (zie hierboven). Deze accommodatie bepaalt de verspreiding van de fresnel glans. De minimumwaarde 0,01 veroorzaakt een spread over het hele object. De maximumwaarde 10,0 zorgt ervoor dat alleen de meest begrazingsranden zichtbaar zijn.VertexMix
: Deze waarde tussen0
en1
geeft aan hoe sterk de vertex kleur in een mesh bijdraagt aan de uiteindelijke kleur. Bij de standaardwaarde van 1 wordt de vertex kleur vermenigvuldigd in de albedo-kleur volledig. Met een waarde van 0 worden de vertex kleuren volledig genegeerd.ColorTransparencyMode
: In tegenstelling tot PBR-materialen maken kleurenmaterialen onderscheid tussen verschillende transparantiemodi:Opaque
: De standaardmodus schakelt transparantie uit. Alfaopname is echter nog steeds mogelijk en moet de voorkeur hebben, indien voldoende.AlphaBlended
: Deze modus is vergelijkbaar met de transparantiemodus voor PBR-materialen. Het moet worden gebruikt voor see-through materialen zoals glas.Additive
: Deze modus is de eenvoudigste en meest efficiënte transparantiemodus. De bijdrage van het materiaal wordt toegevoegd aan de gerenderde afbeelding. Deze modus kan worden gebruikt om gloedende (maar nog transparante) objecten te simuleren, zoals markeringen die worden gebruikt voor het markeren van belangrijke objecten.
Notitie
Hoewel AlbedoColor
en FresnelEffectColor
hetzelfde geaccepteerde waardebereik hebben als voor PBR-materialen, worden hun kanalen effectief vastgeklemd tot [0; 1] voor kleurmaterialen.
Kleurmateriaal overschrijft tijdens conversie
Een subset van eigenschappen van het kleurmateriaal kan tijdens de modelconversie worden overschreven via het materiaaloverschrijvingsbestand. In de volgende tabel ziet u de toewijzing tussen de hierboven beschreven runtime-eigenschappen en de bijbehorende eigenschapsnaam in het onderdrukkingsbestand:
Naam van materiaaleigenschap | Naam van eigenschap in onderdrukkingsbestand |
---|---|
ColorFlags.AlphaClipped |
alphaClipEnabled |
ColorFlags.UseVertexColor |
useVertexColor |
ColorFlags.DoubleSided |
isDoubleSided |
ColorFlags.TransparencyWritesDepth |
transparencyWritesDepth |
AlbedoColor |
albedoColor |
TexCoordScale |
textureCoordinateScale |
TexCoordOffset |
textureCoordinateOffset |
ColorTransparencyMode |
transparent |
AlphaClipThreshold |
alphaClipThreshold |
API-documentatie
- C# ColorMaterial-klasse
- C# RenderingConnection.CreateMaterial()
- Klasse C++ ColorMaterial
- C++ RenderingConnection::CreateMaterial()