Table of Contents

Class SoftBody3D

A deformable 3D physics mesh.

Inheritance
SoftBody3D

Remarks

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

Additionally, SoftBody3D is subject to wind forces defined in Area3D (see wind_source_path, wind_force_magnitude, and wind_attenuation_factor).

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

See Also

Properties

collision_layer

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.

var collision_layer : int = 1

Property Value

int

Remarks

  • void set_collision_layer(int value)
  • int get_collision_layer

collision_mask

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.

var collision_mask : int = 1

Property Value

int

Remarks

  • void set_collision_mask(int value)
  • int get_collision_mask

damping_coefficient

The body's damping coefficient. Higher values will slow down the body more noticeably when forces are applied.

var damping_coefficient : float = 0.01

Property Value

float

Remarks

  • void set_damping_coefficient(float value)
  • float get_damping_coefficient

disable_mode

Defines the behavior in physics when process_mode is set to Node.PROCESS_MODE_DISABLED. See DisableMode for more details about the different modes.

var disable_mode : int = 0

Property Value

int

Remarks

  • void set_disable_mode(int value)
  • int get_disable_mode

drag_coefficient

The body's drag coefficient. Higher values increase this body's air resistance.

Note: This value is currently unused by Godot's default physics implementation.

var drag_coefficient : float = 0.0

Property Value

float

Remarks

  • void set_drag_coefficient(float value)
  • float get_drag_coefficient

linear_stiffness

Higher values will result in a stiffer body, while lower values will increase the body's ability to bend. The value can be between 0.0 and 1.0 (inclusive).

var linear_stiffness : float = 0.5

Property Value

float

Remarks

  • void set_linear_stiffness(float value)
  • float get_linear_stiffness

parent_collision_ignore

NodePath to a CollisionObject3D this SoftBody3D should avoid clipping.

var parent_collision_ignore : NodePath = NodePath("")

Property Value

NodePath

Remarks

  • void set_parent_collision_ignore(NodePath value)
  • NodePath get_parent_collision_ignore

pressure_coefficient

The pressure coefficient of this soft body. Simulate pressure build-up from inside this body. Higher values increase the strength of this effect.

var pressure_coefficient : float = 0.0

Property Value

float

Remarks

  • void set_pressure_coefficient(float value)
  • float get_pressure_coefficient

ray_pickable

If true, the SoftBody3D will respond to RayCast3Ds.

var ray_pickable : bool = true

Property Value

bool

Remarks

  • void set_ray_pickable(bool value)
  • bool is_ray_pickable

simulation_precision

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

var simulation_precision : int = 5

Property Value

int

Remarks

  • void set_simulation_precision(int value)
  • int get_simulation_precision

total_mass

The SoftBody3D's mass.

var total_mass : float = 1.0

Property Value

float

Remarks

  • void set_total_mass(float value)
  • float get_total_mass

Methods

add_collision_exception_with(Node)

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

void add_collision_exception_with(Node body)

Parameters

body Node

get_collision_exceptions

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

PhysicsBody3D[] get_collision_exceptions

get_collision_layer_value(int)

Qualifiers: 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_layer_value(int layer_number)

Parameters

layer_number int

get_collision_mask_value(int)

Qualifiers: const

Returns whether or not the specified layer of the collision_mask is enabled, given a layer_number between 1 and 32.

bool get_collision_mask_value(int layer_number)

Parameters

layer_number int

get_physics_rid

Qualifiers: const

Returns the internal RID used by the PhysicsServer3D for this body.

RID get_physics_rid

get_point_transform(int)

Returns local translation of a vertex in the surface array.

Vector3 get_point_transform(int point_index)

Parameters

point_index int

is_point_pinned(int)

Qualifiers: const

Returns true if vertex is set to pinned.

bool is_point_pinned(int point_index)

Parameters

point_index int

remove_collision_exception_with(Node)

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

void remove_collision_exception_with(Node body)

Parameters

body Node

set_collision_layer_value(int, bool)

Based on value, enables or disables the specified layer in the collision_layer, given a layer_number between 1 and 32.

void set_collision_layer_value(int layer_number, bool value)

Parameters

layer_number int
value bool

set_collision_mask_value(int, bool)

Based on value, enables or disables the specified layer in the collision_mask, given a layer_number between 1 and 32.

void set_collision_mask_value(int layer_number, bool value)

Parameters

layer_number int
value bool

set_point_pinned(int, bool, NodePath, int)

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.

void set_point_pinned(int point_index, bool pinned, NodePath attachment_path, int insert_at)

Parameters

point_index int
pinned bool
attachment_path NodePath
insert_at int