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...
Decal
Eredita: VisualInstance3D < Node3D < Node < Object
Nodo che proietta una texture su un MeshInstance3D.
Descrizione
I Decal servono per proiettare una texture su una Mesh nella scena. Utilizza le decalcomanie per aggiungere dettagli a una scena senza influenzare la Mesh sottostante. Sono spesso utilizzati per aggiungere intemperie a un edificio, sporcizia o fango al terreno o varietà agli oggetti di scena. Le decalcomanie possono essere spostate in qualsiasi momento, rendendole adatte per cose come ombre a chiazze o punti laser.
Sono costituiti da un AABB e un gruppo di Texture2D che specificano Color, normale, ORM (occlusione ambientale, ruvidità, metallico) ed emissione. Le decalcomanie sono proiettate all'interno del loro AABB, quindi la modifica dell'orientamento della decalcomania influenza la direzione in cui sono proiettate. Per impostazione predefinita, le decalcomanie sono proiettate verso il basso (ovvero da Y positivo a Y negativo).
Le Texture2D associate alle decalcomanie sono automaticamente memorizzate in un atlante di texture che serve per disegnare le decalcomanie in modo che tutte le decalcomanie siano disegnate allo stesso tempo. Godot utilizza decalcomanie raggruppate, ovvero sono memorizzate in dati raggruppati e disegnate quando viene disegnata la mesh, non vengono disegnate come effetto in post-elaborazione dopo.
Nota: Le decalcomanie non possono influenzare la trasparenza di un materiale sottostante, indipendentemente dalla sua modalità di trasparenza (alpha blend, alpha scissor, alpha hash, pre-passaggio opaco). Ciò significa che le aree traslucide o trasparenti di un materiale rimarranno traslucide o trasparenti anche se viene applicata una decalcomania opaca su di esse.
Nota: Le decalcomanie sono supportate solo nei metodi di rendering Forward+ e Mobile, non Compatibility. Quando si utilizza il metodo di rendering Mobile, è possibile visualizzare solo 8 decalcomanie su ogni risorsa mesh. Tentare di visualizzare più di 8 decalcomanie su una singola risorsa mesh causerà uno sfarfallio sulle decalcomanie mentre la telecamera si muove.
Nota: Quando si utilizza il metodo di rendering Mobile, le decalcomanie influenzeranno correttamente solo le mesh la cui visibilità AABB interseca con l'AABB della decalcomania. Se si usa uno shader per deformare la mesh in modo che esca dal suo AABB, GeometryInstance3D.extra_cull_margin deve essere aumentato sulla mesh. Altrimenti, la decalcomania potrebbe non essere visibile sulla mesh.
Proprietà
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Metodi
get_texture(type: DecalTexture) const |
|
void |
set_texture(type: DecalTexture, texture: Texture2D) |
Enumerazioni
enum DecalTexture: 🔗
DecalTexture TEXTURE_ALBEDO = 0
Texture2D corrispondente a texture_albedo.
DecalTexture TEXTURE_NORMAL = 1
Texture2D corrispondente a texture_normal.
DecalTexture TEXTURE_ORM = 2
Texture2D corrispondente a texture_orm.
DecalTexture TEXTURE_EMISSION = 3
Texture2D corrispondente a texture_emission.
DecalTexture TEXTURE_MAX = 4
Dimensione massima dell'enumerazione DecalTexture.
Descrizioni delle proprietà
Fonde il Color albedo della decalcomania con il Color albedo della mesh sottostante. Può essere impostato su 0.0 per creare una decalcomania che influenza solo la normale o l'ORM. In tal caso, è comunque richiesta una texture albedo poiché il suo canale alfa determinerà dove la normale e l'ORM saranno sovrascritte. Vedi anche modulate.
Specifica su quali VisualInstance3D.layers sarà proiettata questa decalcomania. Per impostazione predefinita, le decalcomanie influenzano tutti gli strati. Questo è utilizzato per specificare quali tipi di oggetti ricevono la decalcomania e quali no. Ciò è particolarmente utile per garantire che gli oggetti dinamici non ricevano accidentalmente una decalcomania destinata al terreno sottostante.
float distance_fade_begin = 40.0 🔗
Distanza dalla telecamera alla quale la decalcomania inizia a svanire (in unità 3D).
bool distance_fade_enabled = false 🔗
Se true, le decalcomanie svaniranno gradualmente quando sono lontane dalla Camera3D attiva a partire da distance_fade_begin. La decalcomania svanirà su distance_fade_begin + distance_fade_length, dopodiché verrà scartata e non verrà inviata allo shader. Usa questo per ridurre il numero di decalcomanie attive in una scena e quindi migliorare le prestazioni.
float distance_fade_length = 10.0 🔗
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.
Moltiplicatore di energia per la texture di emissione. Ciò farà in modo che la decalcomania emetta luce a un'intensità maggiore o minore, a prescindere dal colore dell'albedo. Vedi anche modulate.
Imposta la curva lungo la quale la decalcomania svanirà man mano che la superficie si allontana dal centro del suo AABB. Sono validi solo i valori positivi (i valori negativi saranno limitati a 0.0). Vedi anche upper_fade.
Color modulate = Color(1, 1, 1, 1) 🔗
Cambia il Color della decalcomania moltiplicando i colori dell'albedo e dell'emissione con questo valore. Il componente alfa viene esaminato solo quando si moltiplica il colore dell'albedo, non quello dell'emissione. Vedi anche emission_energy e albedo_mix per cambiare l'intensità di emissione e di albedo indipendentemente l'una dall'altra.
Dissolve la decalcomania se l'angolo tra AABB della decalcomania e la superficie di destinazione diventa troppo grande. Un valore di 0 proietta la decalcomania a prescindere dall'angolo, un valore di 1 limita la decalcomania alle superfici che sono quasi perpendicolari.
Nota: Impostare normal_fade su un valore maggiore di 0.0 ha un piccolo costo in termini di prestazioni dovuto ai calcoli aggiunti dell'angolo normale.
Vector3 size = Vector3(2, 2, 2) 🔗
Imposta la dimensione dell'AABB utilizzato dalla decalcomania. Tutte le dimensioni devono essere impostate su un valore maggiore di zero (saranno limitate a 0.001 se non sono così). L'AABB va da -size/2 a size/2.
Nota: Per migliorare l'efficienza di culling delle decalcomanie su "superfici rigide", imposta i loro upper_fade e lower_fade su 0.0 e imposta il componente Y di size il più basso possibile. Ciò ridurrà la dimensione dell'AABB delle decalcomanie senza influenzarne l'aspetto.
void set_texture(type: DecalTexture, texture: Texture2D)
Texture2D get_texture(type: DecalTexture) const
Texture2D con il Color di base della decalcomania. Questa texture oppure texture_emission devono essere impostati affinché la decalcomania sia visibile. Utilizza il canale alfa come una maschera per fondere in modo uniforme i bordi della decalcomania con l'oggetto sottostante.
Nota: A differenza di BaseMaterial3D la cui modalità filtro può essere regolata in base al materiale, la modalità filtro per le texture di un Decal è impostata globalmente con ProjectSettings.rendering/textures/decals/filter.
void set_texture(type: DecalTexture, texture: Texture2D)
Texture2D get_texture(type: DecalTexture) const
Texture2D con il Color di emissione della decalcomania. Questa texture oppure texture_albedo devono essere impostati affinché la decalcomania sia visibile. Utilizza il canale alfa come una maschera per fondere in modo uniforme i bordi della decalcomania con l'oggetto sottostante.
Nota: A differenza di BaseMaterial3D la cui modalità filtro può essere regolata in base al materiale, la modalità filtro per le texture di un Decal è impostata globalmente con ProjectSettings.rendering/textures/decals/filter.
void set_texture(type: DecalTexture, texture: Texture2D)
Texture2D get_texture(type: DecalTexture) const
Texture2D con la mappa normale per pixel per la decalcomania. Usala per aggiungere dettagli aggiuntivi alle decalcomanie.
Nota: A differenza di BaseMaterial3D la cui modalità filtro può essere regolata in base al materiale, la modalità filtro per le texture di un Decal è impostata globalmente con ProjectSettings.rendering/textures/decals/filter.
Nota: Impostando solo questa texture non si otterrà una decalcomania visibile, poiché deve essere impostato anche texture_albedo. Per creare una decalcomania contenente solo la texture normale, carica una texture albedo in texture_albedo e imposta albedo_mix su 0.0. Il canale alfa della texture albedo sarà utilizzato per determinare dove la mappa normale della superficie sottostante deve essere sovrascritta (e la sua intensità).
void set_texture(type: DecalTexture, texture: Texture2D)
Texture2D get_texture(type: DecalTexture) const
Texture2D che memorizza l'occlusione ambientale, la ruvidità e il metallico per la decalcomania. Usalo per aggiungere dettagli aggiuntivi alle decalcomanie.
Nota: A differenza di BaseMaterial3D la cui modalità filtro può essere regolata in base al materiale, la modalità filtro per le texture di un Decal è impostata globalmente con ProjectSettings.rendering/textures/decals/filter.
Nota: Impostando solo questa texture non si otterrà una decalcomania visibile, poiché deve essere impostato anche texture_albedo. Per creare una decalcomania contenente solo l'ORM, carica una texture albedo in texture_albedo e imposta albedo_mix su 0.0. Il canale alfa della texture albedo sarà utilizzato per determinare dove la mappa ORM della superficie sottostante deve essere sovrascritta (e la sua intensità).
Nota: A causa di limitazioni tecniche, modificare la rugosità della superficie sottostante tramite texture_orm non influisce sui riflessi nello spazio dello schermo (Environment.ssr_enabled), sui riflessi da VoxelGI e sui riflessi da SDFGI (Environment.sdfgi_enabled). Sono influenzati solo i riflessi dai ReflectionProbe.
Imposta la curva lungo la quale la decalcomania svanirà man mano che la superficie si allontana dal centro dell'AABB. Sono validi solo i valori positivi (i valori negativi saranno limitati a 0.0). Vedi anche lower_fade.
Descrizioni dei metodi
Texture2D get_texture(type: DecalTexture) const 🔗
Restituisce la Texture2D associata alla DecalTexture specificata. Questo metodo esiste per convenienza, nella maggior parte dei casi dovresti accedere direttamente alla texture.
Ad esempio, invece di albedo_tex = $Decal.get_texture(Decal.TEXTURE_ALBEDO), usa albedo_tex = $Decal.texture_albedo.
Un caso in cui questo è meglio dell'accesso diretto alla texture è quando si desidera copiare le texture di una decalcomania in un'altra. Ad esempio:
for i in Decal.TEXTURE_MAX:
$NewDecal.set_texture(i, $OldDecal.get_texture(i))
for (int i = 0; i < (int)Decal.DecalTexture.Max; i++)
{
GetNode<Decal>("NewDecal").SetTexture(i, GetNode<Decal>("OldDecal").GetTexture(i));
}
void set_texture(type: DecalTexture, texture: Texture2D) 🔗
Imposta la Texture2D associata alla DecalTexture specificata. Questo metodo esiste per convenienza, nella maggior parte dei casi dovresti accedere direttamente alla texture.
Ad esempio, invece di $Decal.set_texture(Decal.TEXTURE_ALBEDO, albedo_tex), usa $Decal.texture_albedo = albedo_tex.
Un caso in cui questo è meglio dell'accesso diretto alla texture è quando si desidera copiare le texture di una decalcomania in un'altra. Ad esempio:
for i in Decal.TEXTURE_MAX:
$NewDecal.set_texture(i, $OldDecal.get_texture(i))
for (int i = 0; i < (int)Decal.DecalTexture.Max; i++)
{
GetNode<Decal>("NewDecal").SetTexture(i, GetNode<Decal>("OldDecal").GetTexture(i));
}