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...
SoftBody3D
Hérite de : MeshInstance3D < GeometryInstance3D < VisualInstance3D < Node3D < Node < Object
Un maillage 3D physique déformable.
Description
Un maillage physique 3D déformable. Utilisé pour créer des objets élastiques ou déformables tels que du tissu, du caoutchouc ou d'autres matériaux flexibles.
En outre, SoftBody3D est soumis aux forces du vent définies dans Area3D (voir Area3D.wind_source_path, Area3D.wind_force_magnitude, et Area3D.wind_attenuation_factor).
Note : Il est recommandé d'utiliser Jolt Physics lors de l'utilisation de SoftBody3D au lieu du GodotPhysics3D par défaut, car l'implémentation du corps souple de Jolt Physics est plus rapide et plus fiable. Vous pouvez changer le moteur de physique en utilisant le paramètre de projet ProjectSettings.physics/3d/physics_engine.
Tutoriels
Propriétés
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Méthodes
void |
add_collision_exception_with(body: Node) |
void |
apply_central_force(force: Vector3) |
void |
apply_central_impulse(impulse: Vector3) |
void |
apply_force(point_index: int, force: Vector3) |
void |
apply_impulse(point_index: int, impulse: Vector3) |
get_collision_layer_value(layer_number: int) const |
|
get_collision_mask_value(layer_number: int) const |
|
get_physics_rid() const |
|
get_point_transform(point_index: int) |
|
is_point_pinned(point_index: int) const |
|
void |
|
void |
set_collision_layer_value(layer_number: int, value: bool) |
void |
set_collision_mask_value(layer_number: int, value: bool) |
void |
set_point_pinned(point_index: int, pinned: bool, attachment_path: NodePath = NodePath(""), insert_at: int = -1) |
Énumérations
enum DisableMode: 🔗
DisableMode DISABLE_MODE_REMOVE = 0
Quand Node.process_mode est défini à Node.PROCESS_MODE_DISABLED, le retirer de la simulation physique pour arrêter toutes les interactions physiques avec ce SoftBody3D.
Ré-ajouté automatiquement à la simulation physique lorsque le Node est de nouveau traité.
DisableMode DISABLE_MODE_KEEP_ACTIVE = 1
Quand Node.process_mode est défini à Node.PROCESS_MODE_DISABLED, ne pas affecter la simulation physique.
Descriptions des propriétés
Les couches physiques où se trouve ce SoftBody3D. Les objets de collision peuvent exister dans une ou plusieurs des 32 couches existantes. Voir aussi collision_mask.
Note : Un objet A peut détecter un contact avec l'objet B seulement si l'objet B est dans l'une des couches que l'objet A scanne. Voir Niveaux et masques de collisions dans la documentation pour plus d'informations.
La couche physique que ce SoftBody3D scanne. Les objets de collision peuvent scanner une ou plusieurs des 32 couches existantes. Voir aussi collision_layer.
Note : Un objet A peut détecter un contact avec l'objet B seulement si l'objet B est dans l'une des couches que l'objet A scanne. Voir Niveaux et masques de collisions dans la documentation pour plus d'informations.
float damping_coefficient = 0.01 🔗
Le coefficient d'amortissement du corps. Des valeurs plus élevées ralentiront le corps de façon plus visible lorsque les forces sont appliquées.
DisableMode disable_mode = 0 🔗
void set_disable_mode(value: DisableMode)
DisableMode get_disable_mode()
Définit le comportement physique lorsque Node.process_mode est défini à Node.PROCESS_MODE_DISABLED.
float drag_coefficient = 0.0 🔗
Le coefficient de traînée du corps. Des valeurs plus élevées augmentent la résistance à l'air de ce corps.
Note : Cette valeur est actuellement inutilisée par l'implémentation physique par défaut de Godot.
float linear_stiffness = 0.5 🔗
Des valeurs plus élevées entraîneront un corps plus rigide, tandis que des valeurs plus faibles augmenteront la capacité du corps à plier. La valeur peut être comprise entre 0.0 et 1.0 (inclusifs).
NodePath parent_collision_ignore = NodePath("") 🔗
NodePath vers un CollisionObject3D avec lequel ce SoftBody3D devrait éviter de chevaucher ("clipping").
float pressure_coefficient = 0.0 🔗
Le coefficient de pression de ce corps souple. Simule l'accumulation de pression de l'intérieur de ce corps. Des valeurs plus élevées augmentent la force de cet effet.
Si true, le SoftBody3D répondra aux RayCast3Ds.
float shrinking_factor = 0.0 🔗
Redimensionne les longueurs de repos des contraintes d'arête du SoftBody3D. Des valeurs positives réduisent le maillage, tandis que les valeurs négatives l'élargissent. Par exemple, une valeur de 0.1 raccourcit les arêtes du maillage de 10%, tandis que -0.1 étend les arêtes de 10%.
Note : Le mieux est d'utiliser shrinking_factor sur des maillages de surface avec des points épinglés.
int simulation_precision = 5 🔗
Augmenter cette valeur améliorera la simulation résultante, mais peut affecter les performances. Utilisez avec parcimonie.
The SoftBody3D's mass.
Descriptions des méthodes
void add_collision_exception_with(body: Node) 🔗
Ajoute un corps à la liste des corps avec lesquels ce corps ne peut entrer en collision.
void apply_central_force(force: Vector3) 🔗
Distribue et applique une force à tous les points. Une force est dépendante du temps et est destinée à être appliquée à chaque mise à jour physique.
void apply_central_impulse(impulse: Vector3) 🔗
Distribue et applique une impulsion à tous les points.
Une impulsion est indépendante du temps ! Appliquer une impulsion à chaque trame entraînerait une force dépendante du taux de rafraîchissement. Pour cette raison, elle ne devrait être utilisée que pour simuler des impacts ponctuels (utiliser les fonctions "_force" sinon).
void apply_force(point_index: int, force: Vector3) 🔗
Applique une force à un point. Une force est dépendante du temps et destinée à être appliquée à chaque mise à jour physique.
void apply_impulse(point_index: int, impulse: Vector3) 🔗
Applique une impulsion à un point.
Une impulsion est indépendante du temps ! Appliquer une impulsion à chaque trame entraînerait une force dépendante du taux de rafraichissent. Pour cette raison, elle ne devrait être utilisée que pour simuler des impacts ponctuels (utiliser les fonctions "_force" sinon).
Array[PhysicsBody3D] get_collision_exceptions() 🔗
Renvoie un tableau de nœuds qui ont été ajoutés comme exceptions de collision pour ce corps.
bool get_collision_layer_value(layer_number: int) const 🔗
Renvoie si la couche spécifiée du collision_layer est activée, étant donné un numéro de couche layer_number entre 1 et 32.
bool get_collision_mask_value(layer_number: int) const 🔗
Renvoie si la couche spécifiée du collision_mask est activée, étant donné un numéro de couche layer_number entre 1 et 32.
Renvoie le RID interne utilisé par le PhysicsServer3D pour ce corps.
Vector3 get_point_transform(point_index: int) 🔗
Renvoie la translation locale d'un sommet du tableau de surface.
bool is_point_pinned(point_index: int) const 🔗
Renvoie true si le sommet est défini comme épinglé.
void remove_collision_exception_with(body: Node) 🔗
Retire un corps de la liste des corps avec lesquels ce corps ne peut entrer en collision.
void set_collision_layer_value(layer_number: int, value: bool) 🔗
Selon value, active ou désactive la couche spécifiée dans le collision_layer, étant donné un numéro de couche layer_number entre 1 et 32.
void set_collision_mask_value(layer_number: int, value: bool) 🔗
Selon value, active ou désactive la couche spécifiée dans le collision_mask, étant donné un numéro de couche layer_number entre 1 et 32.
void set_point_pinned(point_index: int, pinned: bool, attachment_path: NodePath = NodePath(""), insert_at: int = -1) 🔗
Définit l'état épinglé d'un sommet de surface. Lorsque défini à true, le chemin d'attachement optionnel attachment_path peut définir un Node3D auquel le sommet épinglé sera attaché.