Le texture Physically-Based Rendering (PBR) ti consentono di rappresentare ombreggiature e illuminazione realistiche utilizzando più tipi di immagini di texture, o mappe, su un singolo oggetto. Combinare più mappe di texture può simulare in modo più accurato il colore, la rugosità e la riflettività in qualsiasi ambiente di illuminazione e può migliorare gli elementi visivi dei tuoi asset e dell'ambiente.


Sono disponibili varie applicazioni e flussi di lavoro per creare texture PBR. Puoi utilizzare queste durante le fasi di modellazione e texturizzazione della creazione di oggetti 3D personalizzati, a condizione che Roblox Studio supporti le specifiche mappe di texture che stai utilizzando.
Questa guida fornisce istruzioni su come configurare i tuoi oggetti mesh per utilizzare le mappe di texture PBR e descrive casi d'uso comuni e migliori pratiche per le mappe di texture PBR supportate da Roblox. Quando crei le tue superfici, consulta i riferimenti ai materiali per valori di materiale comuni, confronti di immagini ed esempi di abbigliamento.
Abilitare l'aspetto della superficie
Puoi aggiungere texture PBR a qualsiasi MeshPart aggiungendo un oggetto SurfaceAppearance che sovrascrive la texture originale assegnata. In generale, non puoi modificare le proprietà di SurfaceAppearance tramite script durante un gioco perché il motore richiede un pre-processamento per visualizzare queste grafiche. Simile all'aggiunta di una texture di base, ogni mappa di immagine di texture deve puntare all'ID dell'asset immagine caricato appropriato.
Per abilitare l'aspetto della superficie per un MeshPart:
Nella finestra Explorer, passa il mouse sopra il MeshPart e fai clic sul pulsante ⊕.
Inserisci un SurfaceAppearance dal menu contestuale.

Quando sei pronto per aggiungere mappe di texture all'oggetto SurfaceAppearance, puoi fare clic su ciascuna proprietà della mappa nella finestra Properties e inserire un ID asset.
Mappe di texture
Studio attualmente supporta 5 tipi di mappe di texture PBR: colore, normale, rugosità, metallicità ed emissivo. Ognuna di queste mappe corrisponde a un aspetto importante dell'aspetto superficiale dell'oggetto. Le mappe di texture cambiano solo l'aspetto visivo e non influenzano la geometria dell'oggetto MeshPart.
Consulta i seguenti esempi per una panoramica delle mappe di texture supportate da Roblox e risorse aggiuntive:
La proprietà ColorMap imposta i dati di colore della superficie, inclusa qualsiasi trasparenza presente nella mappa. Consulta colore (albedo) per ulteriori informazioni.



Colore (albedo)
La mappa colore, o albedo, determina il colore della tua texture e consiste principalmente in informazioni di colore con poca o nessuna informazione di illuminazione o texture. Per una personalizzazione aggiuntiva, puoi anche aggiungere trasparenza nella tua texture albedo aggiungendo opacità alla tua mappa immagine.
Modalità Alpha
Per oggetti che richiedono sezioni parziali o complete di trasparenza, come erba, foglie, pizzo o decalcomanie come sporco o grunge, puoi utilizzare varie modalità alpha per applicare trasparenza alla tua mappa colore. Se il formato immagine della tua mappa colore supporta i canali alpha, puoi applicare una mappa alpha in scala di grigi dove 0.0 è trasparente e 1.0 è opaco. Allo stesso modo, quando utilizzi un formato immagine come un .png, qualsiasi opacità sulla mappa colore si applica come trasparenza sull'asset.
Puoi applicare trasparenza in due comportamenti diversi impostando i seguenti valori di AlphaMode:
- Sovrapposizione — Sovrappone la ColorMap sul MeshPart.Color sottostante. Le mappe colore che utilizzano la modalità sovrapposizione rivelano il colore di base della mesh ovunque sia presente la trasparenza. Questa è l'impostazione predefinita.
- Trasparenza — Rimuove la mesh visibile in base alla trasparenza nella ColorMap. Questo rende la mesh trasparente e non rivela il colore originale della mesh ogni volta che è presente la trasparenza.
Opaco
Puoi utilizzare la modalità Enum.AlphaMode.Opaque per ignorare completamente il canale alpha della ColorMap. In questo caso, il valore alpha è considerato 1 (completamente opaco).
Il seguente esempio dimostra come funziona la modalità Opaque utilizzando un oggetto blu come riferimento:
Sovrapposizione
Puoi utilizzare Enum.AlphaMode.Overlay per rivelare sezioni del colore originale della mesh. Poiché le aree trasparenti della mappa colore espongono il colore sottostante, puoi progettare una mappa di texture unica che rivela parzialmente o completamente la proprietà Color della mesh per toni di pelle personalizzati o altre situazioni con colori unici.
Il seguente esempio dimostra come funziona la modalità Overlay utilizzando un riferimento di sfera blu chiaro:
Il seguente esempio utilizza la modalità Overlay per personaggi personalizzati, rivelando il tono della pelle originale del personaggio:


Consulta tono della pelle personalizzato per ulteriori dettagli su come ottimizzare un overlay per la pelle e applicazioni simili.
Trasparenza
Puoi utilizzare la modalità Enum.AlphaMode.Transparency per creare oggetti complessi o estremamente fini, come pizzo o rete, rimuovendo parti visibili della mesh come alternativa alla scultura della geometria della mesh. Poiché questo non influisce sulla geometria dell'oggetto mesh, questo può consentirti di creare oggetti dettagliati senza l'impatto sulle prestazioni di un modello mesh intricato.
Il seguente esempio dimostra come una trasparenza parziale e totale in questa modalità rimuove visivamente sezioni della mesh:



Ci sono due risultati della modalità Transparency, a seconda che il MeshPart.Transparency sia impostato su 0 o almeno 0.02, sebbene la precisione numerica possa comportare valori piccoli come 0.01 che attivano la trasparenza opaca.
- Quando l'alpha viene utilizzato per ritagliare la forma di oggetti per lo più opachi con bordi netti come fogliame, tessuto di pizzo e rete, imposta il MeshPart.Transparency su 0. Quando parti della superficie sono completamente opache, il motore Roblox può renderizzarle con una corretta occlusione basata sulla profondità. Le superfici opache funzionano anche generalmente meglio con effetti basati sulla profondità come DepthOfFieldEffect, rifrazione del vetro e dell'acqua, e riflessione dell'acqua.
- Quando l'alpha viene utilizzato per aggiungere dettagli a oggetti semi-trasparenti o oggetti con gradienti di trasparenza morbidi, imposta il MeshPart.Transparency su almeno 0.02. Questo migliora la qualità della miscelazione per oggetti come finestre sporche e piume a bordi morbidi, ma non funzionerà con tutti gli effetti.
Maschera di tinta
Puoi utilizzare la modalità Enum.AlphaMode.TintMask per applicare la tinta SurfaceAppearance.Color a aree selettive di una superficie. La tinta è più forte dove il canale alpha è completamente visibile e non viene applicata dove il canale alpha è trasparente.

Tinta del colore
Puoi applicare una tinta alla tua mappa colore modificando la proprietà SurfaceAppearance.Color. La tinta non influisce sulle prestazioni e puoi risparmiare memoria riutilizzando una singola mappa colore con diverse tinte. Utilizza la tinta del colore per creare variazioni a basso costo tra le tue texture PBR MeshPart o per modificare programmaticamente i colori della superficie PBR in tempo reale.



La tinta SurfaceAppearance.Color si applica come un moltiplicatore, quindi l'aspetto finale è una funzione di Color3 (colore texel) moltiplicato per SurfaceAppearance.Color. Questo significa che creare la tua originale SurfaceAppearance.ColorMap in colori in scala di grigi quasi bianchi crea l'effetto di tinta più forte quando questa proprietà è applicata.
La tinta si applica solo alla SurfaceAppearance.ColorMap e non al MeshPart.Color. Puoi continuare a utilizzare i canali alpha quando applichi trasparenza.
Quando SurfaceAppearance.AlphaMode è impostato su Overlay e un canale alpha è presente, il MeshPart.Color sottostante viene rivelato e la tinta SurfaceAppearance.Color si applica solo alla mappa colore SurfaceAppearance visibile.
Quando SurfaceAppearance.AlphaMode è impostato su TintMask e un canale alpha è presente, il canale alpha controlla la quantità di tinta SurfaceAppearance.Color. La tinta è più forte dove il canale alpha è completamente visibile e non viene applicata dove il canale alpha è trasparente.

Normale
La mappa normale, o superficie, aggiunge profondità di texture alla tua superficie e si comporta in modo simile a una mappa di altezza. Di conseguenza, l'effetto può svanire o intensificarsi a seconda dell'angolo di visualizzazione e dell'ambiente di illuminazione.
Nella figura seguente, puoi passare tra il riferimento della mesh e il riferimento della mappa per confrontare i valori della mappa normale:



I canali R, G e B dell'immagine corrispondono rispettivamente ai componenti X, Y e Z del vettore superficiale locale. Un'immagine uniforme di colore [127, 127, 255] si traduce in una mappa normale completamente piatta. Roblox supporta solo mappe normali OpenGL format - Tangent Space.
Le mappe normali influenzano notevolmente la superficie visiva di una mesh e possono accentuare giunture scomode nella tua texture. Ogni volta che è possibile, mantieni le giunture della tua texture nascoste per evitare problemi visivi con la tua mesh.
Rugosità
Le mappe di rugosità, o microsuperficie, determinano come la luce viene diffusa sulla superficie del tuo modello. Quando la rugosità è al 0%, la superficie non disperde affatto la luce, risultando in un riflesso e una lucentezza molto più nitidi e brillanti sul tuo materiale. Al 100%, la luce e i riflessi si disperdono uniformemente sul modello, risultando in una superficie opaca meno riflettente.
La figura seguente mostra confronti di vari valori di mappa di rugosità:



La rugosità può influenzare quanto un oggetto è riflettente a diversi angoli, noto come effetto Fresnel. L'elaborazione fresnel di Studio mira a una precisione fisica del mondo reale, anche se potresti ottenere un contributo speculare inaspettato a determinati angoli anche con superfici ruvide. In alcuni casi, puoi compensare aumentando il valore della tua mappa di rugosità di circa 0.1 più ruvido per ottenere una risposta di illuminazione coerente con i tuoi materiali.
Anche se Roblox rende accuratamente questo effetto di illuminazione, la luminosità e la riflettività di una superficie potrebbero non rispondere in modo coerente tra il tuo software di creazione di contenuti texture, come Substance Painter, e Studio. Consulta esempi di abbigliamento per le differenze di rendering tra le applicazioni.
Metallicità
La metallicità determina la riflettività di una superficie. Nella maggior parte dei casi, dovresti impostare questo valore su 0% (non metallico) o 100% (metallico), anche se puoi utilizzare valori di metallicità parziali quando crei superfici con proprietà riflettenti moderate come satin o seta. Questa pratica può simulare sottilmente i riflessi nel materiale per evidenziare il colore della mappa colore/albedo rispetto ai colori riflessi nell'ambiente.
Consulta la figura seguente per confronti di vari valori di mappa di metallicità:



Diversi renderer PBR utilizzano vari flussi di lavoro per elaborare la riflettività. Studio utilizza solo il flusso di lavoro della metallicità che determina se un materiale è non metallico o metallico, a volte indicato come isolante o conduttore.
Maschera Emissiva
Una texture di contenuto in scala di grigi EmissiveMaskContent applica una maschera emissiva sulla superficie. Questo ti consente di utilizzare una texture per controllare l'emissività per un controllo artistico maggiore rispetto al materiale Neon tutto o niente e ti consente di creare effetti luminosi dettagliati come testo illuminato, armature futuristiche o creature bioluminescenti.
La proprietà associata EmissiveTint determina il colore di tinta per il contributo emissivo, e EmissiveStrength determina la forza del contributo emissivo.







