SoftBody3D

Успадковує: MeshInstance3D < GeometryInstance3D < VisualInstance3D < Node3D < Node < Object

Неформована 3D фізика сітки.

Опис

Деформована 3D-фізична сітка. Використовується для створення еластичних або деформованих об'єктів, таких як тканина, гума або інші гнучкі матеріали.

Крім того, SoftBody3D підлягає силам вітру, визначеним в Area3D (див. Area3D.wind_source_path, Area3D.wind_force_magnitude та Area3D.wind_attenuation_factor).

Примітка: Рекомендується використовувати Jolt Physics під час використання SoftBody3D замість GodotPhysics3D за замовчуванням, оскільки реалізація м'якого тіла в Jolt Physics є швидшою та надійнішою. Ви можете переключити фізичний движок за допомогою налаштування проекту ProjectSettings.physics/3d/physics_engine.

Посібники

Властивості

int

collision_layer

1

int

collision_mask

1

float

damping_coefficient

0.01

DisableMode

disable_mode

0

float

drag_coefficient

0.0

float

linear_stiffness

0.5

NodePath

parent_collision_ignore

NodePath("")

float

pressure_coefficient

0.0

bool

ray_pickable

true

float

shrinking_factor

0.0

int

simulation_precision

5

float

total_mass

1.0

Методи

void

add_collision_exception_with(body: Node)

void

apply_central_force(force: Vector3)

void

apply_central_impulse(impulse: Vector3)

void

apply_force(point_index: int, force: Vector3)

void

apply_impulse(point_index: int, impulse: Vector3)

Array[PhysicsBody3D]

get_collision_exceptions()

bool

get_collision_layer_value(layer_number: int) const

bool

get_collision_mask_value(layer_number: int) const

RID

get_physics_rid() const

Vector3

get_point_transform(point_index: int)

bool

is_point_pinned(point_index: int) const

void

remove_collision_exception_with(body: Node)

void

set_collision_layer_value(layer_number: int, value: bool)

void

set_collision_mask_value(layer_number: int, value: bool)

void

set_point_pinned(point_index: int, pinned: bool, attachment_path: NodePath = NodePath(""), insert_at: int = -1)


Переліки

enum DisableMode: 🔗

DisableMode DISABLE_MODE_REMOVE = 0

Коли Node.process_mode встановлюється на Node. PROCESS_MODE_DISABLED, видаліть з фізичного моделювання, щоб зупинити всі фізичні взаємодії з цим SoftBody3D.

Автоматично відреаговано на фізичну імітацію при обробці Node.

DisableMode DISABLE_MODE_KEEP_ACTIVE = 1

Коли Node.process_mode встановлюється на Node. PROCESS_MODE_DISABLED, не впливає на фізичне моделювання.


Описи властивостей

int collision_layer = 1 🔗

  • void set_collision_layer(value: int)

  • int get_collision_layer()

Фізика шарів цього SoftBody3D **is in **. Об'єкти Collision можуть існувати в одному або декількох 32 різних шарів. Дивись також collision_mask.

Примітка: Об'єкт A може виявити контакт з об'єктом B тільки якщо об'єкт B знаходиться в будь-якому з шарів, які об'єкт A сканування. Див. Коллізійні шари та маски в документації для отримання додаткової інформації.


int collision_mask = 1 🔗

  • void set_collision_mask(value: int)

  • int get_collision_mask()

Фізика шарів цього SoftBody3D scans. Об'єкти Collision можуть відсканувати один або більше 32 різних шарів. Дивись також collision_layer.

Примітка: Об'єкт A може виявити контакт з об'єктом B тільки якщо об'єкт B знаходиться в будь-якому з шарів, які об'єкт A сканування. Див. Коллізійні шари та маски в документації для отримання додаткової інформації.


float damping_coefficient = 0.01 🔗

  • void set_damping_coefficient(value: float)

  • float get_damping_coefficient()

Коефіцієнт пошкодження тіла. Більш помітно уповільнить тіло при нанесенні сил.


DisableMode disable_mode = 0 🔗

Визначає поведінку у фізиці, коли Node.process_mode встановлено на Node.PROCESS_MODE_DISABLED.


float drag_coefficient = 0.0 🔗

  • void set_drag_coefficient(value: float)

  • float get_drag_coefficient()

Коефіцієнт перетягування тіла. Вищі значення підвищують опір повітря цього тіла.

Примітка: Це значення в даний час невикористане впровадження фізики Godot.


float linear_stiffness = 0.5 🔗

  • void set_linear_stiffness(value: float)

  • float get_linear_stiffness()

Більшість значень призведе до жорсткого тіла, при цьому менші значення підвищать здатність тіла до вигину. Значення може бути між 0.0 та 1.0 (включаючи).


NodePath parent_collision_ignore = NodePath("") 🔗

  • void set_parent_collision_ignore(value: NodePath)

  • NodePath get_parent_collision_ignore()

NodePath до CollisionObject3D цей SoftBody3D повинен уникнути затискання.


float pressure_coefficient = 0.0 🔗

  • void set_pressure_coefficient(value: float)

  • float get_pressure_coefficient()

Коефіцієнт тиску цього м'якого тіла. Симуляційне нарощування тиску зсередини цього тіла. Вищі значення підвищують міцність даного ефекту.


bool ray_pickable = true 🔗

  • void set_ray_pickable(value: bool)

  • bool is_ray_pickable()

true, SoftBody3D відповідатиме RayCast3D.


float shrinking_factor = 0.0 🔗

  • void set_shrinking_factor(value: float)

  • float get_shrinking_factor()

Масштабує решту довжин обмежень ребер SoftBody3D. Додатні значення зменшують сітку, а від’ємні – розширюють. Наприклад, значення 0.1 скорочує ребра сітки на 10%, тоді як -0.1 розширює ребра на 10%.

Примітка: shrinking_factor найкраще використовувати на поверхневих сітках із закріпленими точками.


int simulation_precision = 5 🔗

  • void set_simulation_precision(value: int)

  • int get_simulation_precision()

Збільшення цього значення покращить отримане моделювання, але може вплинути на продуктивність. Використовуйте з обережністю.


float total_mass = 1.0 🔗

  • void set_total_mass(value: float)

  • float get_total_mass()

Маса SoftBody3D.


Описи методів

void add_collision_exception_with(body: Node) 🔗

Додати тіло до переліку тіл, які це тіло не може поєднуватися з.


void apply_central_force(force: Vector3) 🔗

Розподіляє та застосовує силу до всіх точок. Сила залежить від часу та призначена для застосування під час кожного оновлення фізики.


void apply_central_impulse(impulse: Vector3) 🔗

Розподіляє та застосовує імпульс до всіх точок.

Імпульс не залежить від часу! Застосування імпульсу кожного кадру призведе до сили, що залежить від частоти кадрів. З цієї причини його слід використовувати лише під час моделювання одноразових ударів (в іншому випадку використовуйте функції "_force").


void apply_force(point_index: int, force: Vector3) 🔗

Прикладає силу до точки. Сила залежить від часу та має застосовуватися під час кожного оновлення фізики.


void apply_impulse(point_index: int, impulse: Vector3) 🔗

Застосовує імпульс до точки.

Імпульс не залежить від часу! Застосування імпульсу кожного кадру призведе до сили, що залежить від частоти кадрів. З цієї причини його слід використовувати лише під час моделювання одноразових ударів (в іншому випадку використовуйте функції "_force").


Array[PhysicsBody3D] get_collision_exceptions() 🔗

Повертає масив вузлів, які були додані як виключення зіткнення для цього тіла.


bool get_collision_layer_value(layer_number: int) const 🔗

Повертаємо, чи не вказаний шар collision_layer, враховуючи layer_number між 1 і 32.


bool get_collision_mask_value(layer_number: int) const 🔗

Повертаємо, чи не вказаний шар collision_layer, враховуючи layer_number між 1 і 32.


RID get_physics_rid() const 🔗

Повертаємо внутрішній RID, який використовується PhysicsServer3D для цього тіла.


Vector3 get_point_transform(point_index: int) 🔗

Повертає локальний переклад вершини в масиві поверхні.


bool is_point_pinned(point_index: int) const 🔗

Повертаємо true, якщо вершина встановлена для шпильки.


void remove_collision_exception_with(body: Node) 🔗

Видаліть тіло з переліку тіл, які це тіло не може зв'язатися з.


void set_collision_layer_value(layer_number: int, value: bool) 🔗

На основі value, умикає чи вимикає зазначений шар в collision_layer, для layer_number між 1 і 32.


void set_collision_mask_value(layer_number: int, value: bool) 🔗

На основі value, умикає чи вимикає зазначений шар в collision_mask, для layer_number між 1 і 32.


void set_point_pinned(point_index: int, pinned: bool, attachment_path: NodePath = NodePath(""), insert_at: int = -1) 🔗

Встановлює пінений стан поверхневої вершини. При налаштуванні до true, за бажанням пам'ять вкладення_path може визначити Node3D прикріплену вершину.