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...
GPUParticlesCollisionHeightField3D
Eredita: GPUParticlesCollision3D < VisualInstance3D < Node3D < Node < Object
Una forma di collisione di particelle 3D a forma di heightmap in tempo reale che influenza i nodi GPUParticles3D.
Descrizione
Una forma di collisione di particelle 3D a forma di heightmap in tempo reale che influenza i nodi GPUParticles3D.
Le forme heightmap consentono di rappresentare in modo efficiente le collisioni per oggetti convessi e concavi con un singolo "piano" (come il terreno). Questo è meno flessibile di GPUParticlesCollisionSDF3D, ma non richiede una fase di precalcolo.
GPUParticlesCollisionHeightField3D può anche essere rigenerato in tempo reale quando viene spostato, quando la telecamera si muove o persino in modo continuo. Ciò rende GPUParticlesCollisionHeightField3D una buona scelta per effetti meteorologici come pioggia e neve e giochi con geometria altamente dinamica. Tuttavia, questa classe è limitata poiché le heightmap non possono rappresentare sporgenze (ad esempio al chiuso o nelle grotte).
Nota: ParticleProcessMaterial.collision_mode deve essere true sul materiale di processo di GPUParticles3D affinché la collisione funzioni.
Nota: La collisione delle particelle influenza solo i GPUParticles3D, non i CPUParticles3D.
Proprietà
|
||
|
||
|
||
|
||
|
Metodi
get_heightfield_mask_value(layer_number: int) const |
|
void |
set_heightfield_mask_value(layer_number: int, value: bool) |
Enumerazioni
enum Resolution: 🔗
Resolution RESOLUTION_256 = 0
Genera una heightmap di 256×256. Pensata per scene su piccola scala o scene più grandi senza particelle distanti.
Resolution RESOLUTION_512 = 1
Genera una heightmap di 512×512. Pensata per scene di media scala o scene più grandi senza particelle distanti.
Resolution RESOLUTION_1024 = 2
Genera una heightmap di 1024×1024. Pensata per scene di grandi dimensioni con particelle distanti.
Resolution RESOLUTION_2048 = 3
Genera una heightmap di 2048×2048. Pensata per scene molto grandi con particelle distanti.
Resolution RESOLUTION_4096 = 4
Genera una heightmap di 4096×4096. Pensata per scene enormi con particelle distanti.
Resolution RESOLUTION_8192 = 5
Genera una heightmap di 8192×8192. Pensata per scene gigantesche con particelle distanti.
Resolution RESOLUTION_MAX = 6
Rappresenta la dimensione dell'enumerazione Resolution.
enum UpdateMode: 🔗
UpdateMode UPDATE_MODE_WHEN_MOVED = 0
Aggiorna la heightmap solo quando il nodo GPUParticlesCollisionHeightField3D viene spostato, o quando la telecamera si sposta se follow_camera_enabled è true. È possibile forzare un aggiornamento spostando leggermente il GPUParticlesCollisionHeightField3D in qualsiasi direzione o chiamando RenderingServer.particles_collision_height_field_update().
UpdateMode UPDATE_MODE_ALWAYS = 1
Aggiorna la heightmap a ogni frame. Ciò ha un impatto notevole sulle prestazioni. Questo aggiornamento si dovrebbe utilizzare solo quando la geometria con cui le particelle possono collidere cambia significativamente durante il gioco.
Descrizioni delle proprietà
bool follow_camera_enabled = false 🔗
Se true, GPUParticlesCollisionHeightField3D seguirà la telecamera attuale nello spazio globale. GPUParticlesCollisionHeightField3D non deve essere un nodo figlio del nodo Camera3D affinché questo funzioni.
Seguire la telecamera ha un costo in termini di prestazioni, poiché costringerà la heightmap ad aggiornarsi ogni volta che la telecamera si muove. Considera di abbassare resolution per migliorare le prestazioni se follow_camera_enabled è true.
int heightfield_mask = 1048575 🔗
Gli strati visuali da considerare quando si aggiorna la heightmap. Solo i MeshInstance3D i cui VisualInstance3D.layers corrispondono a questa heightfield_mask saranno inclusi nell'aggiornamento della collisione della heightmap. Per impostazione predefinita, sono considerati tutti i 20 strati visibili all'utente per aggiornare la collisione della heightmap.
Nota: Poiché heightfield_mask consente di memorizzare 32 strati in totale, ci sono altri 12 strati che sono utilizzati solo internamente dal motore e non sono esposti nell'editor. Impostare heightfield_mask tramite uno script consente di attivare o disattivare i livelli riservati, il che può essere utile per le estensioni dell'editor.
Per regolare heightfield_mask più facilmente tramite uno script, usa get_heightfield_mask_value() e set_heightfield_mask_value().
Resolution resolution = 2 🔗
void set_resolution(value: Resolution)
Resolution get_resolution()
Le risoluzioni più elevate possono rappresentare piccoli dettagli in modo più accurato in scene di grandi dimensioni, a scapito delle prestazioni. Se update_mode è UPDATE_MODE_ALWAYS, considera di usare la risoluzione più bassa possibile.
Vector3 size = Vector3(2, 2, 2) 🔗
La dimensione della heightmap di collisione in unità 3D. Per migliorare la qualità della heightmap, size dovrebbe essere impostato il più piccolo possibile, coprendo le parti della scena di cui hai bisogno.
UpdateMode update_mode = 0 🔗
void set_update_mode(value: UpdateMode)
UpdateMode get_update_mode()
Il criterio di aggiornamento da usare per la heightmap generata.
Descrizioni dei metodi
bool get_heightfield_mask_value(layer_number: int) const 🔗
Restituisce true se lo strato specificato di heightfield_mask è abilitato, dato un layer_number compreso tra 1 e 20, inclusivo.
void set_heightfield_mask_value(layer_number: int, value: bool) 🔗
In base a value, abilita o disabilita lo strato specificato in heightfield_mask, dato un layer_number compreso tra 1 e 20.