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.

GPUParticlesCollisionSDF3D

Eredita: GPUParticlesCollision3D < VisualInstance3D < Node3D < Node < Object

Una forma di collisione di particelle 3D con campo di distanza con segno che influenza i nodi GPUParticles3D.

Descrizione

Una forma di collisione di particelle 3D con campo di distanza con segno precalcolato che influenza i nodi GPUParticles3D.

I campi di distanza con segno (Signed distance field o SDF) consentono di rappresentare in modo efficiente forme di collisione approssimative per oggetti convessi e concavi di qualsiasi forma. Questo è più flessibile di GPUParticlesCollisionHeightField3D, ma richiede una fase di precalcolo.

Precalcolo: La texture del campo di distanza con segno può essere precalcolata selezionando il nodo GPUParticlesCollisionSDF3D nell'editor, quindi cliccando su Precalcola SDF nella parte superiore della viewport 3D. Qualsiasi MeshInstance3D visibile all'interno di size sarà presa in considerazione per il precalcolo, a prescindere dalla sua GeometryInstance3D.gi_mode.

Nota: Il precalcolo di una texture di GPUParticlesCollisionSDF3D è possibile solo all'interno dell'editor, poiché non esiste un metodo di precalcolo esposto per l'uso nei progetti esportati. Tuttavia, è comunque possibile caricare Texture3D precalcolati nella sua proprietà texture in un progetto esportato.

Nota: ParticleProcessMaterial.collision_mode deve essere ParticleProcessMaterial.COLLISION_RIGID o ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT sul materiale di processo di GPUParticles3D affinché la collisione funzioni.

Nota: La collisione di particelle riguarda solo i GPUParticles3D, non i CPUParticles3D.

Proprietà

int

bake_mask

4294967295

Resolution

resolution

2

Vector3

size

Vector3(2, 2, 2)

Texture3D

texture

float

thickness

1.0

Metodi

bool

get_bake_mask_value(layer_number: int) const

void

set_bake_mask_value(layer_number: int, value: bool)


Enumerazioni

enum Resolution: 🔗

Resolution RESOLUTION_16 = 0

Pre-elabora un campo di distanza con segno 16×16×16. Questa è l'opzione più veloce, ma anche la meno precisa.

Resolution RESOLUTION_32 = 1

Pre-elabora un campo di distanza con segno 32×32×32.

Resolution RESOLUTION_64 = 2

Pre-elabora un campo di distanza con segno 64×64×64.

Resolution RESOLUTION_128 = 3

Pre-elabora un campo di distanza con segno 128×128×128.

Resolution RESOLUTION_256 = 4

Pre-elabora un campo di distanza con segno 256×256×256.

Resolution RESOLUTION_512 = 5

Pre-elabora un campo di distanza con segno 512×512×512. Questa è l'opzione più lenta, ma anche la più precisa.

Resolution RESOLUTION_MAX = 6

Rappresenta la dimensione dell'enumerazione Resolution.


Descrizioni delle proprietà

int bake_mask = 4294967295 🔗

  • void set_bake_mask(value: int)

  • int get_bake_mask()

Gli strati visivi da considerare quando si precalcola l'SDF di collisione delle particelle. Solo i MeshInstance3D i cui VisualInstance3D.layers corrispondono a questo bake_mask saranno inclusi nell'SDF di collisione delle particelle generato. Per impostazione predefinita, tutti gli oggetti sono presi in considerazione per il baking dell'SDF di collisione delle particelle.


Resolution resolution = 2 🔗

La risoluzione di precalcolo da usare per la texture del campo di distanza con segno. La texture deve essere nuovamente precalcolata affinché le modifiche alla proprietà resolution siano effettive. Risoluzioni più elevate hanno un costo maggiore sulle prestazioni e richiedono più tempo per l'elaborazione. Le risoluzioni più elevate comportano anche texture precalcolate più grandi, portando a maggiori requisiti di VRAM e spazio di archiviazione. Per migliorare le prestazioni e ridurre i tempi di precalcolo, usa la risoluzione più bassa possibile per l'oggetto di cui stai rappresentando la collisione.


Vector3 size = Vector3(2, 2, 2) 🔗

Le dimensioni dell'SDF di collisione in unità 3D. Per migliorare la qualità dell'SDF, size dovrebbe essere impostato il più piccolo possibile, coprendo le parti della scena di cui hai bisogno.


Texture3D texture 🔗

La texture 3D che rappresenta il campo di distanza con segno.


float thickness = 1.0 🔗

  • void set_thickness(value: float)

  • float get_thickness()

Spessore della forma di collisione. A differenza di altri collisori di particelle, GPUParticlesCollisionSDF3D è in realtà cavo all'interno. thickness può essere aumentato per impedire alle particelle di passare attraverso la forma di collisione ad alta velocità o quando GPUParticlesCollisionSDF3D viene spostato.


Descrizioni dei metodi

bool get_bake_mask_value(layer_number: int) const 🔗

Restituisce se lo strato specificato di bake_mask è abilitato o meno, dato un layer_number compreso tra 1 e 32.


void set_bake_mask_value(layer_number: int, value: bool) 🔗

In base a value, abilita o disabilita lo strato specificato in bake_mask, dato un layer_number compreso tra 1 e 32.