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...
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
|
||
|
||
|
||
|
Méthodes
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
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 🔗
void set_resolution(value: Resolution)
Resolution get_resolution()
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.
La texture 3D représentant le champ de distance signée.
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.