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.

GeometryInstance3D

Eredita: VisualInstance3D < Node3D < Node < Object

Ereditato da: CPUParticles3D, CSGShape3D, GPUParticles3D, Label3D, MeshInstance3D, MultiMeshInstance3D, SpriteBase3D

Nodo di base per le istanze visive basate sulla geometria.

Descrizione

Nodo di base per le istanze visuali basate sulla geometria. Condivide alcune funzionalità comuni come visibilità e materiali personalizzati.

Tutorial

Proprietà

ShadowCastingSetting

cast_shadow

1

AABB

custom_aabb

AABB(0, 0, 0, 0, 0, 0)

float

extra_cull_margin

0.0

LightmapScale

gi_lightmap_scale

0

float

gi_lightmap_texel_scale

1.0

GIMode

gi_mode

1

bool

ignore_occlusion_culling

false

float

lod_bias

1.0

Material

material_overlay

Material

material_override

float

transparency

0.0

float

visibility_range_begin

0.0

float

visibility_range_begin_margin

0.0

float

visibility_range_end

0.0

float

visibility_range_end_margin

0.0

VisibilityRangeFadeMode

visibility_range_fade_mode

0

Metodi

Variant

get_instance_shader_parameter(name: StringName) const

void

set_instance_shader_parameter(name: StringName, value: Variant)


Enumerazioni

enum ShadowCastingSetting: 🔗

ShadowCastingSetting SHADOW_CASTING_SETTING_OFF = 0

Non proietterà ombre. Usalo per migliorare le prestazioni per piccole geometrie che difficilmente proietteranno ombre evidenti (come detriti).

ShadowCastingSetting SHADOW_CASTING_SETTING_ON = 1

Proietterà ombre da tutte le facce visibili nel GeometryInstance3D.

Terrà conto del culling, quindi le facce non renderizzate non saranno prese in considerazione durante la proiezione delle ombre.

ShadowCastingSetting SHADOW_CASTING_SETTING_DOUBLE_SIDED = 2

Proietterà ombre da tutte le facce visibili nel GeometryInstance3D.

Non terrà conto del culling, quindi tutte le facce saranno prese in considerazione quando si proiettano le ombre.

ShadowCastingSetting SHADOW_CASTING_SETTING_SHADOWS_ONLY = 3

Saranno mostrate solo le ombre proiettate da questo oggetto.

In altre parole, la mesh reale non sarà visibile, saranno visibili solo le ombre proiettate dalla mesh.


enum GIMode: 🔗

GIMode GI_MODE_DISABLED = 0

Modalità di illuminazione globale disabilitata. Da utilizzare per oggetti dinamici che non contribuiscono all'illuminazione globale (ad esempio per personaggi). Quando si utilizza VoxelGI e SDFGI, la geometria riceverà illuminazione indiretta e riflessi, ma la geometria non verrà considerata nel precalcolo GI.

GIMode GI_MODE_STATIC = 1

Modalità illuminazione globale precalcolata. Da usare per gli oggetti statici che contribuiscono all'illuminazione globale (come la geometria di un livello). Questa modalità GI è efficace quando si utilizzano VoxelGI, SDFGI e LightmapGI.

GIMode GI_MODE_DYNAMIC = 2

Modalità illuminazione globale dinamica. Da usare per gli oggetti dinamici che contribuiscono all'illuminazione globale. Questa modalità di GI è efficace solo quando si utilizza VoxelGI, ma ha un impatto maggiore sulle prestazioni rispetto a GI_MODE_STATIC. Quando si usano altri metodi per GI, si comporterà come GI_MODE_DISABLED. Quando si utilizza LightmapGI, l'oggetto riceverà illuminazione indiretta attraverso le sonde lightmap, anziché la texture lightmap precalcolata.


enum LightmapScale: 🔗

LightmapScale LIGHTMAP_SCALE_1X = 0

Deprecato: Use gi_lightmap_texel_scale instead.

Densità dei texel standard per il lightmapping con LightmapGI.

LightmapScale LIGHTMAP_SCALE_2X = 1

Deprecato: Use gi_lightmap_texel_scale instead.

Moltiplica la densità dei texel per 2× per il lightmapping con LightmapGI. Per garantire la coerenza nella densità dei texel, usa questo quando ridimensioni una mesh con un fattore compreso tra 1,5 e 3,0.

LightmapScale LIGHTMAP_SCALE_4X = 2

Deprecato: Use gi_lightmap_texel_scale instead.

Moltiplica la densità dei texel per 4× per il lightmapping con LightmapGI. Per garantire la coerenza nella densità dei texel, usa questo quando ridimensioni una mesh con un fattore compreso tra 3,0 e 6,0.

LightmapScale LIGHTMAP_SCALE_8X = 3

Deprecato: Use gi_lightmap_texel_scale instead.

Moltiplica la densità dei texel per 8× per il lightmapping con LightmapGI. Per garantire la coerenza nella densità dei texel, usa questo quando ridimensioni una mesh con un fattore maggiore di 6,0.

LightmapScale LIGHTMAP_SCALE_MAX = 4

Deprecato: Use gi_lightmap_texel_scale instead.

Rappresenta la dimensione dell'enumerazione LightmapScale.


enum VisibilityRangeFadeMode: 🔗

VisibilityRangeFadeMode VISIBILITY_RANGE_FADE_DISABLED = 0

Non dissolverà né se stesso né le sue dipendenze di visibilità, sarà utilizzata l'isteresi invece. Questo è l'approccio più rapido ai LOD manuali, ma può causare transizioni tra i LOD evidenti a seconda di come vengono create le mesh LOD. Vedi visibility_range_begin e Node3D.visibility_parent per ulteriori informazioni.

VisibilityRangeFadeMode VISIBILITY_RANGE_FADE_SELF = 1

Scomparirà da solo quando raggiungerà i limiti del suo campo di visibilità. È più lento di VISIBILITY_RANGE_FADE_DISABLED, ma può fornire transizioni più fluide. L'intervallo di dissolvenza è determinato da visibility_range_begin_margin e visibility_range_end_margin.

Nota: Supportato solo quando si utilizza il metodo di rendering Forward+. Quando si utilizza il metodo di rendering Mobile o Compatibilità, questa modalità si comporta come VISIBILITY_RANGE_FADE_DISABLED ma con l'isteresi disabilitata.

VisibilityRangeFadeMode VISIBILITY_RANGE_FADE_DEPENDENCIES = 2

Farà apparire le sue dipendenze di visibilità (vedi Node3D.visibility_parent) quando raggiunge i limiti del suo campo di visibilità. Questo è più lento di VISIBILITY_RANGE_FADE_DISABLED, ma può fornire transizioni più fluide. L'intervallo di dissolvenza è determinato da visibility_range_begin_margin e visibility_range_end_margin.

Nota: Supportato solo quando si utilizza il metodo di rendering Forward+. Quando si utilizza il metodo di rendering Mobile o Compatibilità, questa modalità si comporta come VISIBILITY_RANGE_FADE_DISABLED ma con isteresi disabilitata.


Descrizioni delle proprietà

ShadowCastingSetting cast_shadow = 1 🔗

The mode used to cast shadows from this instance.


AABB custom_aabb = AABB(0, 0, 0, 0, 0, 0) 🔗

  • void set_custom_aabb(value: AABB)

  • AABB get_custom_aabb()

Overrides the bounding box of this node with a custom one. This can be used to avoid the expensive AABB recalculation that happens when a skeleton is used with a MeshInstance3D or to have precise control over the MeshInstance3D's bounding box. To use the default AABB, set value to an AABB with all fields set to 0.0. To avoid frustum culling, set custom_aabb to a very large AABB that covers your entire game world such as AABB(-10000, -10000, -10000, 20000, 20000, 20000). To disable all forms of culling (including occlusion and layer culling), call RenderingServer.instance_set_ignore_culling() on the GeometryInstance3D's RID.


float extra_cull_margin = 0.0 🔗

  • void set_extra_cull_margin(value: float)

  • float get_extra_cull_margin()

La distanza ulteriormente aggiunta alla bounding box (AABB) del GeometryInstance3D per aumentare il suo cull box.


LightmapScale gi_lightmap_scale = 0 🔗

Deprecato: Use gi_lightmap_texel_scale instead.

La densità dei texel da user per il lightmapping in LightmapGI.


float gi_lightmap_texel_scale = 1.0 🔗

  • void set_lightmap_texel_scale(value: float)

  • float get_lightmap_texel_scale()

La densità dei texel da usare per il lightmapping in LightmapGI. Valori di scala maggiori forniscono una risoluzione più alta nella lightmap, il che può risultare in ombre più nitide per le luci che hanno precalcolato sia la luce diretta sia quella indiretta. Tuttavia, valori di scala maggiori aumenteranno anche lo spazio occupato dalla mesh nella texture lightmap, il che aumenta i requisiti di memoria, archiviazione e tempo di precalcolo. Quando si usa una singola mesh a scale diverse, si consiglia di regolare questo valore per mantenere la densità dei texel nella lightmap coerente tra le mesh.

Ad esempio, raddoppiando gi_lightmap_texel_scale si raddoppia la risoluzione della texture lightmap per questo oggetto su ciascun asse, quindi quadruplicherà il numero dei texel.


GIMode gi_mode = 1 🔗

La modalità di illuminazione globale da usare per l'intera geometria. Per evitare risultati incoerenti, usa una modalità che corrisponda allo scopo della mesh durante il gioco (statica/dinamica).

Nota: La modalità di precalcolo delle luci influirà anche sul rendering dell'illuminazione globale. Vedi Light3D.light_bake_mode.


bool ignore_occlusion_culling = false 🔗

  • void set_ignore_occlusion_culling(value: bool)

  • bool is_ignoring_occlusion_culling()

Se true, disabilita l'occlusion culling per questa istanza. Utile per i gizmo che devono essere renderizzati anche quando l'occlusion culling è in uso.

Nota: ignore_occlusion_culling non influisce sul frustum culling (che è ciò che accade quando un oggetto non è visibile in base all'angolazione della telecamera). Per evitare il frustum culling, imposta custom_aabb su un AABB molto grande che copra l'intero mondo di gioco, ad esempio AABB(-10000, -10000, -10000, 20000, 20000, 20000).


float lod_bias = 1.0 🔗

  • void set_lod_bias(value: float)

  • float get_lod_bias()

Modifica quanto presto la mesh passa a un livello di dettaglio inferiore. Un valore pari a 0 forzerà la mesh al suo livello di dettaglio più basso, un valore pari a 1 utilizzerà le impostazioni predefinite e valori più grandi manterranno la mesh a un livello di dettaglio più alto a distanze maggiori.

Utile per testare le transizioni del livello di dettaglio nell'editor.


Material material_overlay 🔗

Il materiale sovrapposto per l'intera geometria.

Se a questa proprietà è assegnato un materiale, sarà renderizzato sopra qualsiasi altro materiale attivo per tutte le superfici.


Material material_override 🔗

La sostituzione del materiale per l'intera geometria.

Se a questa proprietà è assegnato un materiale, sarà utilizzato al posto di qualsiasi materiale impostato in qualsiasi slot di materiale della mesh.


float transparency = 0.0 🔗

  • void set_transparency(value: float)

  • float get_transparency()

La trasparenza applicata all'intera geometria (come moltiplicatore della trasparenza esistente dei materiali). 0.0 è totalmente opaco, mentre 1.0 è totalmente trasparente. Valori maggiori di 0.0 (esclusivo) forzeranno i materiali della geometria a passare attraverso la pipeline trasparente, che è più lenta da renderizzare e può presentare problemi di rendering a causa di un ordinamento della trasparenza non corretto. Tuttavia, a differenza di utilizzare un materiale trasparente, Impostare transparency su un valore maggiore di 0.0 (esclusivo) non disabiliterà il rendering delle ombre.

Negli shader spatial, 1.0 - transparency è impostato come valore predefinito dell'ALPHA integrato.

Nota: transparency è limitato tra 0.0 e 1.0, quindi questa proprietà non può essere utilizzata per rendere i materiali trasparenti più opachi di quanto non siano originalmente.

Nota: Supportato solo quando si utilizza il metodo di rendering Forward+. Quando si utilizza il metodo di rendering Mobile o Compatibilità, transparency è ignorato ed è considerato sempre 0.0.


float visibility_range_begin = 0.0 🔗

  • void set_visibility_range_begin(value: float)

  • float get_visibility_range_begin()

Distanza iniziale da cui sarà visibile il GeometryInstance3D, tenendo conto anche di visibility_range_begin_margin. Il valore predefinito di 0 è utilizzato per disabilitare il controllo del campo.


float visibility_range_begin_margin = 0.0 🔗

  • void set_visibility_range_begin_margin(value: float)

  • float get_visibility_range_begin_margin()

Margine per la soglia visibility_range_begin. Il GeometryInstance3D cambierà il suo stato di visibilità solo quando supera o scende sotto la soglia visibility_range_begin di questa quantità.

Se visibility_range_fade_mode è VISIBILITY_RANGE_FADE_DISABLED, questo agisce come una distanza di isteresi. Se visibility_range_fade_mode è VISIBILITY_RANGE_FADE_SELF o VISIBILITY_RANGE_FADE_DEPENDENCIES, questo agisce come una distanza di transizione di dissolvenza e deve essere impostato su un valore maggiore di 0.0 affinché l'effetto sia evidente.


float visibility_range_end = 0.0 🔗

  • void set_visibility_range_end(value: float)

  • float get_visibility_range_end()

Distanza da cui sarà nascosto il GeometryInstance3D, tenendo conto anche di visibility_range_end_margin. Il valore predefinito di 0 è utilizzato per disabilitare il controllo del campo.


float visibility_range_end_margin = 0.0 🔗

  • void set_visibility_range_end_margin(value: float)

  • float get_visibility_range_end_margin()

Margine per la soglia visibility_range_end. Il GeometryInstance3D cambierà il suo stato di visibilità solo quando supera o scende sotto la soglia visibility_range_end di questa quantità.

Se visibility_range_fade_mode è VISIBILITY_RANGE_FADE_DISABLED, questo agisce come una distanza di isteresi. Se visibility_range_fade_mode è VISIBILITY_RANGE_FADE_SELF o VISIBILITY_RANGE_FADE_DEPENDENCIES, questo agisce come una distanza di transizione di dissolvenza e deve essere impostato su un valore maggiore di 0.0 affinché l'effetto sia evidente.


VisibilityRangeFadeMode visibility_range_fade_mode = 0 🔗

Controlla quali istanze saranno dissolte quando ci si avvicina ai limiti del campo di visibilità.


Descrizioni dei metodi

Variant get_instance_shader_parameter(name: StringName) const 🔗

Ottieni il valore di un parametro dello shader impostato in questa istanza.


void set_instance_shader_parameter(name: StringName, value: Variant) 🔗

Imposta il valore di un'uniforme di shader solo per questa istanza (uniforme per istanza). Consulta anche ShaderMaterial.set_shader_parameter() per assegnare un'uniforme a tutte le istanze che utilizzano lo stesso ShaderMaterial.

Nota: Affinché un'uniforme di shader possa essere assegnabile per ogni istanza, deve essere definita con instance uniform ... anziché uniform ... nel codice dello shader.

Nota: name è sensibile alle maiuscole e alle minuscole e deve corrispondere esattamente al nome dell'uniforme in codice (non al nome formattato nell'ispettore).

Nota: Le uniformi di shader per ogni istanza sono disponibili solo nei shader Spatial e CanvasItem, ma non per gli shader Fog, Sky, o Particles.