SoftBody

Inherits: MeshInstance < GeometryInstance < VisualInstance < Spatial < Node < Object

A soft mesh physics body.

Description

A deformable physics body. Used to create elastic or deformable objects such as cloth, rubber, or other flexible materials.

Tutorials

Properties

floatareaAngular_stiffness0.5
intcollision_layer1
intcollision_mask1
floatdamping_coefficient0.01
floatdrag_coefficient0.0
floatlinear_stiffness0.5
NodePathparent_collision_ignoreNodePath(“”)
floatpose_matching_coefficient0.0
floatpressure_coefficient0.0
boolray_pickabletrue
intsimulation_precision5
floattotal_mass1.0
floatvolume_stiffness0.5

Methods

voidadd_collision_exception_with ( Node body )
Arrayget_collision_exceptions ( )
boolget_collision_layer_bit ( int bit ) const
boolget_collision_mask_bit ( int bit ) const
voidremove_collision_exception_with ( Node body )
voidset_collision_layer_bit ( int bit, bool value )
voidset_collision_mask_bit ( int bit, bool value )

Property Descriptions

  • float areaAngular_stiffness
Default0.5
Setterset_areaAngular_stiffness(value)
Getterget_areaAngular_stiffness()

  • int collision_layer
Default1
Setterset_collision_layer(value)
Getterget_collision_layer()

The physics layers this SoftBody is in.

Collidable objects can exist in any of 32 different layers. These layers work like a tagging system, and are not visual. A collidable can use these layers to select with which objects it can collide, using the collision_mask property.

A contact is detected if object A is in any of the layers that object B scans, or object B is in any layer scanned by object A. See Collision layers and masks in the documentation for more information.


  • int collision_mask
Default1
Setterset_collision_mask(value)
Getterget_collision_mask()

The physics layers this SoftBody scans for collisions. See Collision layers and masks in the documentation for more information.


  • float damping_coefficient
Default0.01
Setterset_damping_coefficient(value)
Getterget_damping_coefficient()

Default0.0
Setterset_drag_coefficient(value)
Getterget_drag_coefficient()

Default0.5
Setterset_linear_stiffness(value)
Getterget_linear_stiffness()

DefaultNodePath(“”)
Setterset_parent_collision_ignore(value)
Getterget_parent_collision_ignore()

NodePath to a CollisionObject this SoftBody should avoid clipping.


  • float pose_matching_coefficient
Default0.0
Setterset_pose_matching_coefficient(value)
Getterget_pose_matching_coefficient()

  • float pressure_coefficient
Default0.0
Setterset_pressure_coefficient(value)
Getterget_pressure_coefficient()

Defaulttrue
Setterset_ray_pickable(value)
Getteris_ray_pickable()

If true, the SoftBody will respond to RayCasts.


  • int simulation_precision
Default5
Setterset_simulation_precision(value)
Getterget_simulation_precision()

Increasing this value will improve the resulting simulation, but can affect performance. Use with care.


Default1.0
Setterset_total_mass(value)
Getterget_total_mass()

The SoftBody’s mass.


Default0.5
Setterset_volume_stiffness(value)
Getterget_volume_stiffness()

Method Descriptions

  • void add_collision_exception_with ( Node body )

Adds a body to the list of bodies that this body can’t collide with.


  • Array get_collision_exceptions ( )

Returns an array of nodes that were added as collision exceptions for this body.


  • bool get_collision_layer_bit ( int bit ) const

Returns an individual bit on the collision mask.


  • bool get_collision_mask_bit ( int bit ) const

Returns an individual bit on the collision mask.


  • 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_bit ( int bit, bool value )

Sets individual bits on the layer mask. Use this if you only need to change one layer’s value.


  • void set_collision_mask_bit ( int bit, bool value )

Sets individual bits on the collision mask. Use this if you only need to change one layer’s value.