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.
Посібники
Властивості
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Методи
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) |
get_collision_layer_value(layer_number: int) const |
|
get_collision_mask_value(layer_number: int) const |
|
get_physics_rid() const |
|
get_point_transform(point_index: int) |
|
is_point_pinned(point_index: int) const |
|
void |
|
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, не впливає на фізичне моделювання.
Описи властивостей
Фізика шарів цього SoftBody3D **is in **. Об'єкти Collision можуть існувати в одному або декількох 32 різних шарів. Дивись також collision_mask.
Примітка: Об'єкт A може виявити контакт з об'єктом B тільки якщо об'єкт B знаходиться в будь-якому з шарів, які об'єкт A сканування. Див. Коллізійні шари та маски в документації для отримання додаткової інформації.
Фізика шарів цього SoftBody3D scans. Об'єкти Collision можуть відсканувати один або більше 32 різних шарів. Дивись також collision_layer.
Примітка: Об'єкт A може виявити контакт з об'єктом B тільки якщо об'єкт B знаходиться в будь-якому з шарів, які об'єкт A сканування. Див. Коллізійні шари та маски в документації для отримання додаткової інформації.
float damping_coefficient = 0.01 🔗
Коефіцієнт пошкодження тіла. Більш помітно уповільнить тіло при нанесенні сил.
DisableMode disable_mode = 0 🔗
void set_disable_mode(value: DisableMode)
DisableMode get_disable_mode()
Визначає поведінку у фізиці, коли Node.process_mode встановлено на Node.PROCESS_MODE_DISABLED.
float drag_coefficient = 0.0 🔗
Коефіцієнт перетягування тіла. Вищі значення підвищують опір повітря цього тіла.
Примітка: Це значення в даний час невикористане впровадження фізики Godot.
float linear_stiffness = 0.5 🔗
Більшість значень призведе до жорсткого тіла, при цьому менші значення підвищать здатність тіла до вигину. Значення може бути між 0.0 та 1.0 (включаючи).
NodePath parent_collision_ignore = NodePath("") 🔗
NodePath до CollisionObject3D цей SoftBody3D повинен уникнути затискання.
float pressure_coefficient = 0.0 🔗
Коефіцієнт тиску цього м'якого тіла. Симуляційне нарощування тиску зсередини цього тіла. Вищі значення підвищують міцність даного ефекту.
true, SoftBody3D відповідатиме RayCast3D.
float shrinking_factor = 0.0 🔗
Масштабує решту довжин обмежень ребер SoftBody3D. Додатні значення зменшують сітку, а від’ємні – розширюють. Наприклад, значення 0.1 скорочує ребра сітки на 10%, тоді як -0.1 розширює ребра на 10%.
Примітка: shrinking_factor найкраще використовувати на поверхневих сітках із закріпленими точками.
int simulation_precision = 5 🔗
Збільшення цього значення покращить отримане моделювання, але може вплинути на продуктивність. Використовуйте з обережністю.
Маса 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, який використовується 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 прикріплену вершину.