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

Hérite de : GPUParticlesCollision3D < VisualInstance3D < Node3D < Node < Object

Une forme de collision de particules 3D de champ de distance signée pré-calculé affectant les nœuds GPUParticles3D.

Description

Une forme de collision de particules 3D avec un champ de distance signée affectant les nœuds GPUParticles3D.

Les champs de distance signées (CDS) permettent de représenter efficacement des formes de collision approximatives pour les objets convexes et concaves de toute forme. Ceci est plus flexible que GPUParticlesCollisionHeightField3D, mais il nécessite une étape de pré-calcul.

Pré-calcul : La texture du champ de distance signée peut être pré-calculée en sélectionnant le nœud GPUParticlesCollisionSDF3D dans l'éditeur, puis en cliquant sur Pré-calculer le CDS en haut du viewport 3D. Tout MeshInstance3D visible dans la taille size sera pris en compte pour le calcul, peu importe leur GeometryInstance3D.gi_mode.

Note : Calculer une texture d'un GPUParticlesCollisionSDF3D n'est possible que dans l'éditeur, car il n'y a pas de méthode de pré-calcul exposée pour les projets exportés. Cependant, il est quand même possible de charger des Texture3D pré-calculées dans sa propriété texture dans un projet exporté.

Note : ParticleProcessMaterial.collision_mode doit valoir ParticleProcessMaterial.COLLISION_RIGID ou ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT sur le matériau de traitement du GPUParticles3D pour que la collision fonctionne.

Note : La collision de particules n'affecte que GPUParticles3D, pas CPUParticles3D.

Propriétés

int

bake_mask

4294967295

Resolution

resolution

2

Vector3

size

Vector3(2, 2, 2)

Texture3D

texture

float

thickness

1.0

Méthodes

bool

get_bake_mask_value(layer_number: int) const

void

set_bake_mask_value(layer_number: int, value: bool)


Énumérations

enum Resolution: 🔗

Resolution RESOLUTION_16 = 0

Pré-calculer un champ de distance signé 16×16×16. C'est l'option la plus rapide, mais aussi la moins précise.

Resolution RESOLUTION_32 = 1

Pré-calcule un champ de distance signée 32×32×32.

Resolution RESOLUTION_64 = 2

Pré-calcule un champ de distance signée 64x64x64.

Resolution RESOLUTION_128 = 3

Pré-calcule un champ de distance signée 128x128x128.

Resolution RESOLUTION_256 = 4

Pré-calcule un champ de distance signée 256x256x256.

Resolution RESOLUTION_512 = 5

Pré-calculer un champ de distance signé 512×512×512. C'est l'option la plus lente, mais aussi la plus précise.

Resolution RESOLUTION_MAX = 6

Représente la taille de l'énumération Resolution.


Descriptions des propriétés

int bake_mask = 4294967295 🔗

  • void set_bake_mask(value: int)

  • int get_bake_mask()

Les couches visuelles à prendre en compte lors du pré-calcul du CDS de collision de particule. Seuls les MeshInstance3D dont VisualInstance3D.layers correspondent à ce bake_mask seront inclus dans le CDS de collision de particule généré. Par défaut, tous les objets sont pris en compte pour le pré-calcul du CDS de collision de particule.


Resolution resolution = 2 🔗

La résolution du pré-calcul à utiliser pour le champ de distance signé texture. La texture doit encore être pré-calculée pour que les modifications à la propriété resolution soient effectives. Les résolutions plus élevées ont un coût de performance plus élevé et prennent plus de temps à calcul. Des résolutions plus élevées entraînent également des textures calculées plus grandes, ce qui entraîne une augmentation des besoins en RAM vidéo et en espace de stockage. Pour améliorer les performances et réduire les temps de calcul, utilisez la résolution la plus basse possible pour l'objet dont vous représentez la collision.


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

La taille de la collision CDS en 3D. Pour améliorer la qualité du CDS, la taille size devrait être aussi petite que possible tout en couvrant les parties de la scène dont vous avez besoin.


Texture3D texture 🔗

La texture 3D représentant le champ de distance signée.


float thickness = 1.0 🔗

  • void set_thickness(value: float)

  • float get_thickness()

L'épaisseur de la forme de collision. Contrairement à d'autres colliders de particules, GPUParticlesCollisionSDF3D est en fait creux à l'intérieur. thickness peut être augmentée pour empêcher les particules de traverser les bords de la forme de collision à haute vitesse, ou lorsque le GPUParticlesCollisionSDF3D est déplacé.


Descriptions des méthodes

bool get_bake_mask_value(layer_number: int) const 🔗

Renvoie si la couche spécifiée de bake_mask est activée, étant donné un numéro de couche layer_number entre 1 et 32.


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

Selon value, active ou désactive la couche spécifiée dans le bake_mask, étant donné un numéro de couche layer_number entre 1 et 32.