Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Utilizzo delle decalcomanie
Nota
Le decalcomanie sono supportate solo nei renderer Forward+ e Mobile, non dal renderer Compatibilità.
Se si utilizza il renderer Compatibilità, si consiglia di utilizzare Sprite3D come alternativa per proiettare le decalcomanie su superfici (maggiormente) piane.
Le decalcomanie sono texture proiettate che si applicano su superfici opache o trasparenti in 3D. Questa proiezione avviene in tempo reale e non si basa sulla generazione di mesh. Ciò consente di spostare le decalcomanie a ogni frame con un impatto minimo sulle prestazioni, anche quando applicate su mesh complesse.
Sebbene le decalcomanie non possano aggiungere dettagli geometrici veri alla superficie proiettata, possono comunque utilizzare il rendering basato sulla fisica per fornire proprietà simili a quelle dei materiali PBR veri e propri.
In questa pagina imparerai:
Come configurare le decalcomanie nell'editor 3D.
Come creare decalcomanie durante il gioco in una scena 3D (come impatti di proiettili).
Come bilanciare la configurazione delle decalcomanie tra prestazioni e qualità.
Vedi anche
Il repository dei progetti demo di Godot contiene una demo per le decalcomanie 3D.
Se desideri scrivere del testo 3D arbitrario su una superficie, utilizza Testo 3D posizionato vicino a una superficie anziché un nodo Decal.
Casi d'uso
Decorazioni statiche
A volte, il modo più rapido per aggiungere dettagli di texture a una scena è usare le decalcomanie. Questo è particolarmente il caso per i dettagli organici, come chiazze di terra o sabbia sparse su una grande superficie. Le decalcomanie possono aiutare a spezzare la ripetizione delle texture nelle scene e a rendere i motivi più naturali. A una scala più piccola, le decalcomanie possono servire anche per creare variazioni di dettaglio sugli oggetti. Ad esempio, si possono usare per aggiungere dadi e bulloni su geometrie con superfici dure.
Poiché le decalcomanie possono iniettare le proprie proprietà PBR sulle superfici proiettate, si possono utilizzare anche per creare impronte o pozzanghere bagnate.
Terra aggiunta sulla geometria del livello tramite decalcomanie
Elementi di gioco dinamici
Le decalcomanie possono rappresentare effetti di gioco temporanei o permanenti, come l'impatto dei proiettili e le bruciature causate dalle esplosioni.
Utilizzando un nodo AnimationPlayer o uno script, è possibile far svanire gradualmente le decalcomanie nel tempo (e poi rimuoverle tramite queue_free()) per migliorare le prestazioni.
Ombre a chiazze
Le ombre a chiazze sono spesso utilizzate nei progetti per i dispositivi mobili (o per seguire uno stile artistico retrò), poiché l'illuminazione in tempo reale tende ad essere troppo costosa sui dispositivi mobili di fascia bassa. Tuttavia, quando ci si affida a lightmap precalcolate con luci completamente precalcolate, gli oggetti dinamici non proietteranno alcuna ombra da tali luci. Questo fa sì che gli oggetti dinamici nelle scene con lightmap appaiano piatti in confronto all'illuminazione in tempo reale, quasi come se fluttuassero.
Grazie alle ombre a chiazze, gli oggetti dinamici possono comunque proiettare un'ombra approssimativa. Questo non solo aiuta con la percezione della profondità nella scena, ma può anche essere un elemento di gioco, soprattutto nei piattaforme 3D. La lunghezza dell'ombra a chiazza si può estendere per far capire al giocatore dove atterrerà se cade dritto in basso.
Anche con l'illuminazione in tempo reale, le ombre a chiazze possono comunque essere utili come forma di occlusione ambientale in situazioni in cui l'SSAO è troppo costoso o troppo instabile a causa della sua natura di spazio dello schermo. Ad esempio, le ombre alla base dei veicoli sono ben rappresentate utilizzando ombre a chiazze.
Blob shadow under object comparison
Guida di inizio rapido
Creare le decalcomanie nell'editor
Crea un nodo Decal nell'editor 3D.
Nell'ispettore, espandi la sezione Texture e carica una texture in Texture > Albedo.
Sposta il nodo Decal verso un oggetto, quindi ruotalo in modo che la decalcomania sia visibile (e con l'orientamento corretto). Se la decalcomania appare specchiata, prova a ruotarla di 180 gradi. Puoi verificare che sia nell'orientamento corretto aumentando Parametri > Dissolvenza normale a 0.5. Ciò impedirà che la decalcomania sia proiettata su superfici non rivolte verso la decalcomania.
Se la tua decalcomania deve avere effetto solo sugli oggetti statici, configurala in modo che non influisca sugli oggetti dinamici (o viceversa). Per farlo, modifica la proprietà Cull Mask della decalcomania per escludere determinati strati. Dopodiché, modifica i nodi MeshInstance3D degli oggetti dinamici per modificarne gli strati di visibilità. Ad esempio, puoi spostarli dallo strato 1 allo strato 2, quindi disabilitare lo strato 2 nella proprietà Cull Mask della decalcomania.
Proprietà del nodo Decal
Extents: le dimensioni della decalcomania. L'asse Y determina la lunghezza della proiezione della decalcomania. Mantenere la lunghezza della proiezione il più corta possibile per migliorare le opportunità di culling, migliorando quindi le prestazioni.
Texture
Albedo: la mappa albedo (diffusa/colore) da utilizzare per la decalcomania. Nella maggior parte dei casi, questa è la texture da impostare per prima. Se si utilizza una mappa normale o ORM, è obbligatorio impostare una mappa albedo per fornire un canale alfa. Questo canale alfa servirà da maschera per determinare quanto le mappe normale/ORM influenzeranno la superficie sottostante.
Normale: La mappa di normali da utilizzare per la decalcomania. Si può utilizzare per aumentare il dettaglio percepito della decalcomania modificando il modo in cui la luce reagisce ad essa. L'impatto di questa texture è moltiplicato per il canale alfa della texture albedo (ma non per Albedo Mix).
ORM: la mappa di occlusione/rugosità/metallico da utilizzare per la decalcomania. Questo è un formato ottimizzato per memorizzare le mappe di materiali PBR. La mappa di occlusione ambientale è memorizzata nel canale rosso, la mappa di rugosità nel canale verde e la mappa metallica nel canale blu. L'impatto di questa texture è moltiplicato per il canale alfa della texture albedo (ma non per Albedo Mix).
Emission: la texture di emissione da utilizzare per la decalcomania. A differenza dell'Albedo, questa texture sembrerà brillare al buio.
Parametri
Emission Energy: la luminosità della texture di emissione.
Modula: moltiplica il colore delle texture di albedo ed emissione. Da usare per colorare le decalcomanie (ad esempio, per le decalcomanie di pittura, o per aumentare la variazione randomizzando la modulazione di ciascuna decalcomania).
Albedo Mix: l'opacità della texture albedo. A differenza di usare una texture albedo con un canale alfa più trasparente, Diminuire questo valore al di sotto di
1.0non riduce l'impatto della texture normale/ORM sulla superficie sottostante. Impostare questo valore su0.0quando si creano decalcomanie solo per le normali/ORM, come impronte o pozzanghere bagnate.Normal Fade: dissolve la decalcomania se l'angolo tra l'AABB della decalcomania e la superficie puntata diventa troppo grande. Un valore di
0.0proietta la decalcomania a prescindere dall'angolo, mentre un valore di0.999limita la decalcomania alle superfici quasi perpendicolari. Impostare Normal Fade su un valore maggiore di0.0ha un piccolo impatto sulle prestazioni dovuto ai calcoli aggiuntivi degli angoli delle normali.
Dissolvenza verticale
Upper Fade: la curva lungo la quale la decalcomania si dissolverà man mano che la superficie si allontana dal centro dell'AABB (verso l'angolo di proiezione della decalcomania). Sono validi solo valori positivi.
Upper Fade: la curva lungo la quale la decalcomania si dissolverà man mano che la superficie si allontana dal centro dell'AABB (via dall'angolo di proiezione della decalcomania). Sono validi solo valori positivi.
Dissolvenza a distanza
Enabled: controlla se la dissolvenza a distanza (una forma di LOD) è abilitata. La decalcomania svanirà gradualmente per Begin + Length, dopodiché sarà scartata e non inviata proprio allo shader. Utilizzare questa opzione per ridurre il numero di decalcomanie attive in una scena e quindi migliorare le prestazioni.
Begin: la distanza dalla telecamera alla quale la decalcomania inizia a svanire (in unità 3D).
Length: la distanza su cui la decalcomania svanisce (in unità 3D). La decalcomania diventa gradualmente più trasparente su questa distanza, fino a diventare completamente invisibile. Valori più elevati rendono la dissolvenza più graduale, più adatta quando la telecamera si muove velocemente.
Maschera di culling
Cull Mask: specifica su quali strati di VisualInstance3D sarà proiettata questa decalcomania. Come predefinito, le decalcomanie influenzano tutti gli strati. Questa opzione serve per specificare quali tipi di oggetti riceveranno la decalcomania e quali no. È particolarmente utile per garantire che gli oggetti dinamici non ricevano accidentalmente una decalcomania destinata al terreno sottostante.
Ordine di rendering della decalcomania
Come predefinito, le decalcomanie sono ordinate in base alle dimensioni del loro AABB e alla distanza dalla telecamera. Gli AABB più vicini alla telecamera sono renderizzati per primi, il che significa che l'ordine di rendering delle decalcomanie può talvolta sembrare cambiare a seconda della posizione della telecamera se alcune decalcomanie si trovano nella stessa posizione.
Per risolvere questo problema, è possibile regolare la proprietà Sorting Offset nella sezione VisualInstance3D dell'ispettore del nodo Decal. Questo offset non è un ordine di priorità rigido, ma una linea guida che il renderer utilizzerà poiché le dimensioni dell'AABB influisce comunque sull'ordinamento delle decalcomanie. Pertanto, valori più alti faranno sì che la decalcomania sia sempre disegnata sopra le altre decalcomanie con un offset più basso.
Se si desidera che una decalcomania sia sempre renderizzata sopra le altre decalcomanie, è necessario impostare la proprietà Sorting Offset su un valore positivo superiore alla lunghezza dell'AABB della decalcomania più grande che potrebbe sovrapporsi ad essa. Per assicurarsi che questa decalcomania sia renderizzata dietro le altre decalcomanie, impostare Sorting Offset sullo stesso valore, ma negativo.
VisualInstance3D Sorting Offset comparison on Decals
Aggiustare per le prestazioni e la qualità
Le prestazioni di rendering delle decalcomanie sono determinate principalmente dalla loro copertura dello schermo, ma anche dal loro numero. In generale, poche grandi decalcomanie che coprono la maggior parte dello schermo sono più costose da renderizzare rispetto a molte piccole decalcomanie sparse.
Per migliorare le prestazioni di rendering, è possibile abilitare la proprietà Distance Fade come descritto prima. Facendo così, le decalcomanie distanti svaniranno quando sono lontane dalla telecamera (e potrebbero avere un impatto minimo o nullo sul rendering finale della scena). Utilizzando i gruppi di nodi, è anche possibile impedire la generazione di decalcomanie decorative non essenziali in base alla configurazione dell'utente.
Anche il modo in cui sono renderizzate le decalcomanie ha un impatto sulle prestazioni. L'impostazione avanzata del progetto Rendering > Texture > Decalcomanie > Filtro consente di controllare come filtrare le texture delle decalcomanie. Con Nearest/Linear non utilizzano mipmap. Tuttavia, le decalcomanie appariranno sgranate se viste da lontano. Con Nearest/Linear Mipmaps appariranno più uniformi a distanza, ma le decalcomanie appariranno sfocate se viste da angolazioni oblique. Ciò si può risolvere usando Nearest/Linear Mipmaps Anisotropic, che offre la massima qualità, ma è anche più lenta da renderizzare.
Se il proprio progetto ha uno stile pixel art, si consiglia di impostare il filtro su uno dei valori Nearest in modo che le decalcomanie utilizzino il filtro vicino più ravvicinato. Altrimenti, mantenere Lineare.
Limitazioni
Le decalcomanie non possono influenzare le proprietà del materiale diverse da quelle sopra elencate, come ad esempio l'altezza (per il parallax mapping).
Per motivi di prestazioni, le decalcomanie utilizzano una logica di rendering puramente fissa. Ciò significa che le decalcomanie non possono utilizzare shader personalizzati. Tuttavia, gli shader personalizzati sulle superfici proiettate sono in grado di leggere le informazioni sovrascritte dalle decalcomanie su di esse, come la rugosità e il metallico.
Quando si utilizza il renderer Forward+, Godot utilizza un approccio di clustering per renderizzare le decalcomanie. È possibile aggiungere tutte le decalcomanie desiderate (purché le prestazioni lo permettano). Tuttavia, esiste un limite predefinito di 512 elementi clusterizzati che possono essere presenti nella vista della telecamera attuale. Un elemento clusterizzato è una luce omnidirezionale, un riflettore, una decalcomania o una sonda di riflessione. È possibile aumentare questo limite regolando Elementi clusterizzati massimi nelle Impostazioni del progetto > Rendering > Limiti > Costruttore cluster.
Quando si utilizza il renderer Mobile, è possibile applicare solo 8 decalcomanie a ciascuna risorsa mesh. Se sono presenti più decalcomanie che influenzano una singola mesh, non tutte saranno renderizzate sulla mesh.