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

  • floatareaAngular_stiffness

Default

0.5

Setter

set_areaAngular_stiffness(value)

Getter

get_areaAngular_stiffness()


  • intcollision_layer

Default

1

Setter

set_collision_layer(value)

Getter

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. SeeCollision layers and masks in the documentation for more information.


  • intcollision_mask

Default

1

Setter

set_collision_mask(value)

Getter

get_collision_mask()

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


Default

0.01

Setter

set_damping_coefficient(value)

Getter

get_damping_coefficient()


Default

0.0

Setter

set_drag_coefficient(value)

Getter

get_drag_coefficient()


Default

0.5

Setter

set_linear_stiffness(value)

Getter

get_linear_stiffness()


Default

NodePath("")

Setter

set_parent_collision_ignore(value)

Getter

get_parent_collision_ignore()

NodePath to aCollisionObject this SoftBody should avoid clipping.


Default

true

Setter

set_physics_enabled(value)

Getter

is_physics_enabled()

Iftrue, theSoftBody is simulated in physics. Can be set tofalse to pause the physics simulation.


  • floatpose_matching_coefficient

Default

0.0

Setter

set_pose_matching_coefficient(value)

Getter

get_pose_matching_coefficient()


  • floatpressure_coefficient

Default

0.0

Setter

set_pressure_coefficient(value)

Getter

get_pressure_coefficient()


Default

true

Setter

set_ray_pickable(value)

Getter

is_ray_pickable()

Iftrue, theSoftBody will respond toRayCasts.


  • intsimulation_precision

Default

5

Setter

set_simulation_precision(value)

Getter

get_simulation_precision()

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


Default

1.0

Setter

set_total_mass(value)

Getter

get_total_mass()

The SoftBody's mass.


Default

0.5

Setter

set_volume_stiffness(value)

Getter

get_volume_stiffness()

Method Descriptions

  • voidadd_collision_exception_with(Node body)

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


  • Arrayget_collision_exceptions()

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


Returns an individual bit on the collision mask.


Returns an individual bit on the collision mask.


Returns local translation of a vertex in the surface array.


Returnstrue if vertex is set to pinned.


Removes a body from the list of bodies that this body can't collide with.


  • voidset_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.


  • voidset_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.


  • voidset_point_pinned(int point_index,bool pinned,NodePath attachment_path=NodePath(""))

Sets the pinned state of a surface vertex. When set totrue, the optionalattachment_path can define aSpatial the pinned vertex will be attached to.