SoftBody

Inherits: MeshInstance < GeometryInstance < VisualInstance < CullInstance < 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.

Note: There are many known bugs in SoftBody. Therefore, it's not recommended to use them for things that can affect gameplay (such as a player character made entirely out of soft bodies).

Tutorials

Properties

float

areaAngular_stiffness

0.5

int

collision_layer

1

int

collision_mask

1

float

damping_coefficient

0.01

float

drag_coefficient

0.0

float

linear_stiffness

0.5

NodePath

parent_collision_ignore

NodePath("")

bool

physics_enabled

true

float

pose_matching_coefficient

0.0

float

pressure_coefficient

0.0

bool

ray_pickable

true

int

simulation_precision

5

float

total_mass

1.0

float

volume_stiffness

0.5

Methods

void

add_collision_exception_with ( Node body )

Array

get_collision_exceptions ( )

bool

get_collision_layer_bit ( int bit ) const

bool

get_collision_mask_bit ( int bit ) const

Vector3

get_point_transform ( int point_index )

bool

is_point_pinned ( int point_index ) const

void

remove_collision_exception_with ( Node body )

void

set_collision_layer_bit ( int bit, bool value )

void

set_collision_mask_bit ( int bit, bool value )

void

set_point_pinned ( int point_index, bool pinned, NodePath attachment_path=NodePath("") )


Property Descriptions

float areaAngular_stiffness = 0.5

  • void set_areaAngular_stiffness ( float value )

  • float get_areaAngular_stiffness ( )

There is currently no description for this property. Please help us by contributing one!


int collision_layer = 1

  • void set_collision_layer ( int value )

  • int get_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 = 1

  • void set_collision_mask ( int value )

  • int get_collision_mask ( )

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


float damping_coefficient = 0.01

  • void set_damping_coefficient ( float value )

  • float get_damping_coefficient ( )

There is currently no description for this property. Please help us by contributing one!


float drag_coefficient = 0.0

  • void set_drag_coefficient ( float value )

  • float get_drag_coefficient ( )

There is currently no description for this property. Please help us by contributing one!


float linear_stiffness = 0.5

  • void set_linear_stiffness ( float value )

  • float get_linear_stiffness ( )

There is currently no description for this property. Please help us by contributing one!


NodePath parent_collision_ignore = NodePath("")

  • void set_parent_collision_ignore ( NodePath value )

  • NodePath get_parent_collision_ignore ( )

NodePath to a CollisionObject this SoftBody should avoid clipping.


bool physics_enabled = true

  • void set_physics_enabled ( bool value )

  • bool is_physics_enabled ( )

If true, the SoftBody is simulated in physics. Can be set to false to pause the physics simulation.


float pose_matching_coefficient = 0.0

  • void set_pose_matching_coefficient ( float value )

  • float get_pose_matching_coefficient ( )

There is currently no description for this property. Please help us by contributing one!


float pressure_coefficient = 0.0

  • void set_pressure_coefficient ( float value )

  • float get_pressure_coefficient ( )

There is currently no description for this property. Please help us by contributing one!


bool ray_pickable = true

  • void set_ray_pickable ( bool value )

  • bool is_ray_pickable ( )

If true, the SoftBody will respond to RayCasts.


int simulation_precision = 5

  • void set_simulation_precision ( int value )

  • int get_simulation_precision ( )

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


float total_mass = 1.0

  • void set_total_mass ( float value )

  • float get_total_mass ( )

The SoftBody's mass.


float volume_stiffness = 0.5

  • void set_volume_stiffness ( float value )

  • float get_volume_stiffness ( )

There is currently no description for this property. Please help us by contributing one!


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.


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_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.


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 Spatial the pinned vertex will be attached to.