Condividi tramite


Materiali a colori

I materiali a colori sono uno dei tipi di materiali supportati in Azure Rendering remoto. Vengono usati per mesh che non devono ricevere alcun tipo di illuminazione, ma piuttosto appaiono sempre a piena luminosità. Questo potrebbe essere il caso di materiali "incandescenti", ad esempio dashboard auto, lampadine o per dati che incorporano già illuminazione statica, ad esempio modelli ottenuti tramite la fotogrammametria.

I materiali a colori sono più efficienti per eseguire il rendering dei materiali PBR grazie al modello di ombreggiatura più semplice. Supportano anche diverse modalità di trasparenza.

Proprietà del materiale colore

Le proprietà materiali seguenti vengono esposte nell'API di runtime, ad esempio nella classe C# ColorMaterial o nella classe C++ ColorMaterial.

  • ColorFlags: i flag di funzionalità vari possono essere combinati in questa maschera di bit per abilitare le funzionalità seguenti:

    • UseVertexColor: se la mesh contiene vertex colori e questa opzione è abilitata, il colore della vertex mesh viene moltiplicato in AlbedoColor e AlbedoMap. Per impostazione predefinita, è disabilitato UseVertexColor .
    • DoubleSided: se il doppio lato è impostato su true, viene eseguito il rendering dei triangoli con questo materiale anche se la fotocamera guarda le facce posteriore. Per impostazione predefinita, questa opzione è disabilitata. Vedere anche Single-sided rendering.
    • AlphaClipped: abilita i ritagli rigidi su base per pixel, in base al valore alfa inferiore al valore di AlphaClipThreshold (vedere di seguito). Questo funziona anche per materiali opachi.
    • TransparencyWritesDepth: se il TransparencyWritesDepth flag è impostato sul materiale e il materiale è trasparente, gli oggetti che usano questo materiale contribuiranno anche al buffer di profondità finale. Vedere la proprietà ColorTransparencyMode del materiale colore nella sezione successiva. L'abilitazione di questa funzionalità è consigliata se il caso d'uso richiede una riprogettazione in ritardo più plausibile di scene completamente trasparenti. Per le scene opache o trasparenti miste, questa impostazione può introdurre un comportamento di riprogettazione implausibile o riprogettazione degli artefatti. Per questo motivo, l'impostazione predefinita e consigliata per il caso d'uso generale consiste nel disabilitare questo flag. I valori di profondità scritti vengono acquisiti dal livello di profondità per pixel dell'oggetto più vicino alla fotocamera.
    • FresnelEffect: questo flag di materiale abilita l'effetto di fresnel aggiuntivo sul rispettivo materiale. L'aspetto dell'effetto è regolato dagli altri parametri FresnelEffectColor fresnel e FresnelEffectExponent spiegati di seguito.
  • AlbedoColor: questo colore viene moltiplicato con altri colori, ad esempio i AlbedoMap colori o vertex . Se la trasparenza è abilitata su un materiale, il canale alfa viene usato per regolare l'opacità, con 1 significato completamente opaco e 0 significato completamente trasparente. Il colore albedo predefinito è bianco opaco.

    Nota

    Poiché i materiali di colore non riflettono l'ambiente, un materiale colore completamente trasparente diventa invisibile. Questo è diverso per i materiali PBR.

  • AlbedoMap: trama 2D per valori di albedo per pixel.

  • AlphaClipThreshold: se il AlphaClipped flag è impostato sulla ColorFlags proprietà , tutti i pixel in cui il valore alfa albedo è inferiore al valore di AlphaClipThreshold non verrà disegnato. Il ritaglio alfa può essere usato anche senza abilitare la trasparenza ed è molto più veloce per il rendering. I materiali troncato alfa sono ancora più lenti a eseguire il rendering rispetto ai materiali completamente opachi, anche se. Per impostazione predefinita, il ritaglio alfa è disabilitato.

  • TexCoordMode: definisce la modalità usata per produrre coordinate di trama per la trama albedo. Questa modalità viene ignorata se questo materiale non usa una trama. Per impostazione predefinita, le coordinate della trama vengono recuperate dai flussi dei vertici di input della mesh (modalità TextureCoordinateGenerationMode.SourceUv0 o TextureCoordinateGenerationMode.SourceUv1) e quindi trasformati tramite TexCoordScale e TexCoordOffset. Quando si configura un materiale tramite codice, questa modalità può anche essere impostata su TextureCoordinateGenerationMode.PlanarObjectSpace o TextureCoordinateGenerationMode.PlanarWorldSpace per generare le coordinate come distanza del vertice su due piani 3D configurabili TexCoordPlaneU e TexCoordPlaneV. Questa operazione viene definita "mapping di trame planari".

  • TexCoordScale e TexCoordOffset: per le coordinate delle trame della mesh di origine, è possibile applicare una trasformazione lineare aggiuntiva. La scala viene moltiplicata nelle coordinate della trama UV, al quale viene aggiunto l'offset. Può essere usato per estendere e spostare le trame. La scala predefinita è (1, 1) e offset è (0, 0).

  • TexCoordPlaneU e TexCoordPlaneV: per le modalità di mapping planare, questi definiscono rispettivamente i piani di trama per la coordinata u e la coordinata v. I piani sono definiti in forma normale standard (A,B,C,D), quindi una coordinata viene calcolata come t = Ax + By + C*z + D, dove (x,y,z) è la posizione del vertice nello spazio globale o oggetto.

  • FresnelEffectColor: colore a imbuto utilizzato per questo materiale. È importante solo quando il flag di effetto fresnel è stato impostato su questo materiale (vedere sopra). Questa proprietà controlla il colore di base dell'effetto fresnel (vedere effetto fresnel per una spiegazione completa). Attualmente solo i valori del canale RGB sono importanti e il valore alfa verrà ignorato.

  • FresnelEffectExponent: esponente fresnel usato per questo materiale. È importante solo quando il flag di effetto fresnel è stato impostato su questo materiale (vedere sopra). Questa proprietà controlla la diffusione della brillare fresnel. Il valore minimo 0,01 causa una distribuzione nell'intero oggetto. Il valore massimo 10,0 costriziona l'effetto brilla solo ai bordi più visibile.

  • VertexMix: questo valore tra 0 e 1 specifica quanto il vertex colore in una mesh contribuisce al colore finale. Con il valore predefinito 1, il vertex colore viene moltiplicato completamente nel colore albedo. Con un valore pari a 0, i vertex colori vengono ignorati completamente.

  • ColorTransparencyMode: contrariamente ai materiali PBR, i materiali a colori distinguono tra diverse modalità di trasparenza:

    • Opaque: la modalità predefinita disabilita la trasparenza. Il ritaglio alfa è comunque possibile, tuttavia, e dovrebbe essere preferito, se sufficiente.
    • AlphaBlended: questa modalità è simile alla modalità trasparenza per i materiali PBR. Deve essere utilizzato per materiali da vedere come vetro.
    • Additive: questa modalità è la modalità di trasparenza più semplice e più efficiente. Il contributo del materiale viene aggiunto all'immagine sottoposta a rendering. Questa modalità può essere usata per simulare oggetti incandescenti (ma ancora trasparenti), ad esempio marcatori usati per evidenziare oggetti importanti.

Nota

Mentre AlbedoColor e FresnelEffectColor hanno lo stesso intervallo di valori accettato per i materiali PBR, i loro canali saranno effettivamente bloccati a [0; 1] per i materiali color.

Override del materiale colore durante la conversione

È possibile eseguire l'override di un subset di proprietà del materiale colore durante la conversione del modello tramite il file di override del materiale. La tabella seguente illustra il mapping tra le proprietà di runtime documentate in precedenza e il nome della proprietà corrispondente nel file di override:

Nome proprietà materiale Nome della proprietà nel file di override
ColorFlags.AlphaClipped alphaClipEnabled
ColorFlags.UseVertexColor useVertexColor
ColorFlags.DoubleSided isDoubleSided
ColorFlags.TransparencyWritesDepth transparencyWritesDepth
AlbedoColor albedoColor
TexCoordScale textureCoordinateScale
TexCoordOffset textureCoordinateOffset
ColorTransparencyMode transparent
AlphaClipThreshold alphaClipThreshold

Documentazione sull'API

Passaggi successivi