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. L'opzione è disabilitata per impostazione predefinita UseVertexColor.
    • DoubleSided: se il doppio lato è impostato su true, viene eseguito il rendering dei triangoli con questo materiale anche se la fotocamera è rivolta verso le facce posteriori. L'opzione è disabilitata per impostazione predefinita. Vedere anche Single-sided rendering.
    • AlphaClipped: abilita i ritagli rigidi in base ai pixel, in base al valore alfa inferiore al valore di AlphaClipThreshold (vedere di seguito). Questo funziona anche per i materiali opachi.
    • TransparencyWritesDepth: se il flag TransparencyWritesDepth è impostato su di un materiale e il materiale è trasparente, gli oggetti che usano questo materiale contribuiranno anche al buffer di intensità finale. Vedere la proprietà ColorTransparencyMode del materiale colore nella sezione successiva. L'abilitazione di questa funzionalità è consigliata se il caso d'uso richiede una riproiezione in fase avanzata più plausibile di scene completamente trasparenti. Per le scene opache o trasparenti miste, questa impostazione può introdurre una riproiezione o riprogettazione degli artefatti non plausibile. 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 fresnel aggiuntivo sul rispettivo materiale. L'aspetto dell'effetto è regolato dagli altri parametri fresnel FresnelEffectColor e FresnelEffectExponent illustrato di seguito.
  • AlbedoColor: questo colore viene moltiplicato con altri colori, ad esempio i AlbedoMapcolori o vertex. Se la trasparenza è abilitata su un materiale, il canale alfa viene usato per regolare l'opacità, con 1 significato completamente opaco e con 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: una 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. Sui materiali con ritaglio alfa il rendering viene comunque eseguito in modo ancora più lento rispetto ai materiali completamente opachi. Il ritaglio alfa è disabilitato per impostazione predefinita.

  • 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 l’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: il colore fresnel utilizzato per questo materiale. È importante solo quando il flag con effetto fresnel è stato impostato su questo materiale (vedere sopra). Questa proprietà controlla il colore di base della lucentezza fresnel (vedere effetto fresnel per una spiegazione completa). Attualmente solo i valori del canale RGB sono importanti e il valore alfa verrà ignorato.

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

  • 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.

Sostituzione del materiale del colore durante la conversione

È possibile eseguire la sostituzione di un subset di proprietà del materiale colore durante la conversione del modello tramite il file di sostituzione 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 sostituzione
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