Up to date
This page is up to date for Godot 4.1
. If you still find outdated information, please open an issue.
SoftBody3D
Inherits: MeshInstance3D < GeometryInstance3D < VisualInstance3D < Node3D < Node < Object
A deformable 3D physics mesh.
Description
A deformable 3D physics mesh. Used to create elastic or deformable objects such as cloth, rubber, or other flexible materials.
Note: There are many known bugs in SoftBody3D. Therefore, it’s not recommended to use them for things that can affect gameplay (such as trampolines).
Tutorials
Properties
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|
Methods
void | add_collision_exception_with ( Node body ) |
get_collision_layer_value ( int layer_number ) const | |
get_collision_mask_value ( int layer_number ) const | |
get_physics_rid ( ) const | |
get_point_transform ( int point_index ) | |
is_point_pinned ( int point_index ) const | |
void | remove_collision_exception_with ( Node body ) |
void | set_collision_layer_value ( int layer_number, bool value ) |
void | set_collision_mask_value ( int layer_number, bool value ) |
void | set_point_pinned ( int point_index, bool pinned, NodePath attachment_path=NodePath(“”) ) |
Enumerations
enum DisableMode:
DisableMode DISABLE_MODE_REMOVE = 0
When Node.process_mode is set to Node.PROCESS_MODE_DISABLED, remove from the physics simulation to stop all physics interactions with this SoftBody3D.
Automatically re-added to the physics simulation when the Node is processed again.
DisableMode DISABLE_MODE_KEEP_ACTIVE = 1
When Node.process_mode is set to Node.PROCESS_MODE_DISABLED, do not affect the physics simulation.
Property Descriptions
int collision_layer = 1
The physics layers this SoftBody3D is in. Collision objects can exist in one or more of 32 different layers. See also collision_mask.
Note: Object A can detect a contact with object B only if object B is in any of the layers that object A scans. See Collision layers and masks in the documentation for more information.
int collision_mask = 1
The physics layers this SoftBody3D scans. Collision objects can scan one or more of 32 different layers. See also collision_layer.
Note: Object A can detect a contact with object B only if object B is in any of the layers that object A scans. See Collision layers and masks in the documentation for more information.
float damping_coefficient = 0.01
There is currently no description for this property. Please help us by contributing one!
DisableMode disable_mode = 0
void set_disable_mode ( DisableMode value )
DisableMode get_disable_mode ( )
Defines the behavior in physics when Node.process_mode is set to Node.PROCESS_MODE_DISABLED. See DisableMode for more details about the different modes.
float drag_coefficient = 0.0
There is currently no description for this property. Please help us by contributing one!
float linear_stiffness = 0.5
There is currently no description for this property. Please help us by contributing one!
NodePath parent_collision_ignore = NodePath("")
NodePath to a CollisionObject3D this SoftBody3D should avoid clipping.
float pressure_coefficient = 0.0
There is currently no description for this property. Please help us by contributing one!
bool ray_pickable = true
If true
, the SoftBody3D will respond to RayCast3Ds.
int simulation_precision = 5
Increasing this value will improve the resulting simulation, but can affect performance. Use with care.
float total_mass = 1.0
The SoftBody3D’s mass.
Method Descriptions
void add_collision_exception_with ( Node body )
Adds a body to the list of bodies that this body can’t collide with.
PhysicsBody3D[] get_collision_exceptions ( )
Returns an array of nodes that were added as collision exceptions for this body.
bool get_collision_layer_value ( int layer_number ) const
Returns whether or not the specified layer of the collision_layer is enabled, given a layer_number
between 1 and 32.
bool get_collision_mask_value ( int layer_number ) const
Returns whether or not the specified layer of the collision_mask is enabled, given a layer_number
between 1 and 32.
RID get_physics_rid ( ) const
There is currently no description for this method. Please help us by contributing one!
Vector3 get_point_transform ( int point_index )
Returns local translation of a vertex in the surface array.
bool is_point_pinned ( int point_index ) const
Returns true
if vertex is set to pinned.
void remove_collision_exception_with ( Node body )
Removes a body from the list of bodies that this body can’t collide with.
void set_collision_layer_value ( int layer_number, bool value )
Based on value
, enables or disables the specified layer in the collision_layer, given a layer_number
between 1 and 32.
void set_collision_mask_value ( int layer_number, bool value )
Based on value
, enables or disables the specified layer in the collision_mask, given a layer_number
between 1 and 32.
void set_point_pinned ( int point_index, bool pinned, NodePath attachment_path=NodePath(“”) )
Sets the pinned state of a surface vertex. When set to true
, the optional attachment_path
can define a Node3D the pinned vertex will be attached to.