SpringBoneSimulator3D
Успадковує: SkeletonModifier3D < Node3D < Node < Object
SkeletonModifier3D для застосування інерційного коливання до кісткових ланцюгів.
Опис
Цей SkeletonModifier3D можна використовувати для ворушіння волоссям, тканиною та хвостами. Цей модифікатор поводиться інакше, ніж PhysicalBoneSimulator3D, оскільки намагається повернути вихідну позу після модифікації.
Якщо ви налаштуєте set_root_bone() і set_end_bone(), вони розглядатимуться як один ланцюжок кісток. Зверніть увагу, що він не підтримує розгалужений ланцюг, як Y-подібні ланцюги.
Коли створюється ланцюжок кісток, масив генерується з кісток, які існують між ними та перераховані в спільному списку.
До кожного з’єднання можна застосувати кілька властивостей, наприклад set_joint_stiffness(), set_joint_drag() і set_joint_gravity().
Для простоти ви можете встановити значення для всіх суглобів одночасно за допомогою Кривої. Якщо ви хочете вказати докладні значення окремо, установіть set_individual_config() на true.
Для фізичного моделювання SpringBoneSimulator3D може мати дочірні елементи як самостійні зіткнення, які не пов’язані з PhysicsServer3D, див. також SpringBoneCollision3D.
Попередження: ** Масштабований **SpringBoneSimulator3D, швидше за все, не працюватиме належним чином. Переконайтеся, що батьківський Skeleton3D і його кістки не масштабуються.
Властивості
|
||
|
Методи
Переліки
enum BoneDirection: 🔗
BoneDirection BONE_DIRECTION_PLUS_X = 0
Перераховане значення для осі +X.
BoneDirection BONE_DIRECTION_MINUS_X = 1
Перераховане значення для осі -X.
BoneDirection BONE_DIRECTION_PLUS_Y = 2
Перераховане значення для осі +Y.
BoneDirection BONE_DIRECTION_MINUS_Y = 3
Перераховане значення для осі -Y.
BoneDirection BONE_DIRECTION_PLUS_Z = 4
Перераховане значення для осі +Z.
BoneDirection BONE_DIRECTION_MINUS_Z = 5
Перераховане значення для осі -Z.
BoneDirection BONE_DIRECTION_FROM_PARENT = 6
Перераховане значення для осі від батьківської кістки до дочірньої кістки.
enum CenterFrom: 🔗
CenterFrom CENTER_FROM_WORLD_ORIGIN = 0
Початок світу визначається як центр.
CenterFrom CENTER_FROM_NODE = 1
Node3D, визначений set_center_node(), визначається як центр.
Якщо Node3D не знайдено, батьківський Skeleton3D розглядається як центр.
CenterFrom CENTER_FROM_BONE = 2
Позиція кістки батьківського елемента Skeleton3D, визначена set_center_bone(), визначається як центр.
Якщо Node3D не знайдено, батьківський Skeleton3D розглядається як центр.
enum RotationAxis: 🔗
RotationAxis ROTATION_AXIS_X = 0
Перераховане значення повороту осі Х.
RotationAxis ROTATION_AXIS_Y = 1
Перераховане значення повороту осі Y.
RotationAxis ROTATION_AXIS_Z = 2
Перераховане значення повороту осі Z.
RotationAxis ROTATION_AXIS_ALL = 3
Перераховане значення для необмеженого обертання.
RotationAxis ROTATION_AXIS_CUSTOM = 4
Перечислюване значення для додаткової осі обертання. Див. також set_joint_rotation_axis_vector().
Описи властивостей
Vector3 external_force = Vector3(0, 0, 0) 🔗
Постійна сила, яка завжди впливала на кістки. Вона дорівнює результату, коли батьківський об'єкт Skeleton3D рухається з цією швидкістю в протилежному напрямку.
Це корисно для таких ефектів, як вітер та антигравітація.
Кількість налаштувань.
Описи методів
bool are_all_child_collisions_enabled(index: int) const 🔗
Повертає true, якщо всі дочірні SpringBoneCollision3D містяться у списку колізій за адресою index у налаштуваннях.
void clear_collisions(index: int) 🔗
Очищає всі колізії зі списку колізій у index у налаштуваннях, якщо are_all_child_collisions_enabled() має значення false.
void clear_exclude_collisions(index: int) 🔗
Очищає всі виключені зіткнення зі списку зіткнень у index у налаштуваннях, якщо are_all_child_collisions_enabled() має значення true.
void clear_settings() 🔗
Очищає всі налаштування.
int get_center_bone(index: int) const 🔗
Повертає індекс центральної кістки ланцюга кісток.
String get_center_bone_name(index: int) const 🔗
Повертає назву центральної кістки ланцюга кісток.
CenterFrom get_center_from(index: int) const 🔗
Повертає те, з чого походить центр у кістковому ланцюзі.
NodePath get_center_node(index: int) const 🔗
Повертає шлях центрального вузла кісткового ланцюга.
int get_collision_count(index: int) const 🔗
Повертає кількість зіткнень у списку зіткнень ланцюга кісток, якщо are_all_child_collisions_enabled() має значення false.
NodePath get_collision_path(index: int, collision: int) const 🔗
Повертає шлях до вузла SpringBoneCollision3D у collision у списку зіткнень ланцюжка кісток, коли are_all_child_collisions_enabled() має значення false.
float get_drag(index: int) const 🔗
Повертає криву демпфування сили опору кісткового ланцюга.
Curve get_drag_damping_curve(index: int) const 🔗
Повертає криву демпфування сили опору кісткового ланцюга.
int get_end_bone(index: int) const 🔗
Повертає індекс кінцевої кістки ланцюга кісток.
BoneDirection get_end_bone_direction(index: int) const 🔗
Повертає напрямок хвоста кінцевої кістки ланцюжка кісток, якщо is_end_bone_extended() має значення true.
float get_end_bone_length(index: int) const 🔗
Повертає довжину хвоста кінцевої кістки ланцюжка кісток, якщо is_end_bone_extended() має значення true.
String get_end_bone_name(index: int) const 🔗
Повертає назву кінцевої кістки ланцюжка кісток.
int get_exclude_collision_count(index: int) const 🔗
Повертає кількість виключених зіткнень зі списку виключених зіткнень ланцюга кісток, якщо are_all_child_collisions_enabled() має значення true.
NodePath get_exclude_collision_path(index: int, collision: int) const 🔗
Повертає шлях до вузла SpringBoneCollision3D у collision у списку виключених зіткнень ланцюжка кісток, коли are_all_child_collisions_enabled() має значення true.
float get_gravity(index: int) const 🔗
Повертає силу тяжіння ланцюга кісток.
Curve get_gravity_damping_curve(index: int) const 🔗
Повертає криву демпфування сили тяжіння кісткового ланцюга.
Vector3 get_gravity_direction(index: int) const 🔗
Повертає напрямок сили тяжіння кісткового ланцюга.
int get_joint_bone(index: int, joint: int) const 🔗
Повертає індекс кістки в joint у списку суглобів кісткового ланцюга.
String get_joint_bone_name(index: int, joint: int) const 🔗
Повертає назву кістки в joint у списку суглобів ланцюга кісток.
int get_joint_count(index: int) const 🔗
Повертає кількість з’єднань у списку з’єднань кісткового ланцюга.
float get_joint_drag(index: int, joint: int) const 🔗
Повертає силу опору в joint у списку суглобів кісткового ланцюга.
float get_joint_gravity(index: int, joint: int) const 🔗
Повертає силу тяжіння в joint у списку суглобів кісткового ланцюга.
Vector3 get_joint_gravity_direction(index: int, joint: int) const 🔗
Повертає напрямок сили тяжіння в joint у списку суглобів кісткового ланцюга.
float get_joint_radius(index: int, joint: int) const 🔗
Повертає радіус у joint у списку суглобів кісткового ланцюга.
RotationAxis get_joint_rotation_axis(index: int, joint: int) const 🔗
Повертає вісь обертання в joint у списку суглобів кісткового ланцюга.
Vector3 get_joint_rotation_axis_vector(index: int, joint: int) const 🔗
Повертає вектор осі обертання для зазначеного суглоба в ланцюжку кісток. Цей вектор представляє вісь, навколо якої може обертатися суглоб. Він визначається на основі осі обертання, встановленої для суглоба.
Якщо get_joint_rotation_axis() має значення ROTATION_AXIS_ALL, цей метод повертає Vector3(0, 0, 0).
float get_joint_stiffness(index: int, joint: int) const 🔗
Повертає силу жорсткості в joint у списку суглобів кісткового ланцюга.
float get_radius(index: int) const 🔗
Повертає радіус суглоба кісткового ланцюга.
Curve get_radius_damping_curve(index: int) const 🔗
Повертає криву демпфування радіуса суглоба кісткового ланцюга.
int get_root_bone(index: int) const 🔗
Повертає індекс кореневої кістки ланцюга кісток.
String get_root_bone_name(index: int) const 🔗
Повертає назву кореневої кістки ланцюга кісток.
RotationAxis get_rotation_axis(index: int) const 🔗
Повертає вісь обертання кісткового ланцюга.
Vector3 get_rotation_axis_vector(index: int) const 🔗
Повертає вектор осі обертання кісткового ланцюга. Цей вектор представляє вісь, навколо якої може обертатися кістковий ланцюг. Він визначається на основі осі обертання, встановленої для кісткового ланцюга.
Якщо get_rotation_axis() має значення ROTATION_AXIS_ALL, цей метод повертає Vector3(0, 0, 0).
float get_stiffness(index: int) const 🔗
Повертає силу жорсткості кісткового ланцюга.
Curve get_stiffness_damping_curve(index: int) const 🔗
Повертає криву амортизації сили жорсткості кісткового ланцюга.
bool is_config_individual(index: int) const 🔗
Повертає true, якщо конфігурацію можна редагувати окремо для кожного з’єднання.
bool is_end_bone_extended(index: int) const 🔗
Повертає true, якщо кінцева кістка подовжена до хвоста.
void reset() 🔗
Скидає стан імітації щодо поточної пози кістки.
Це корисно, щоб запобігти насильницькому результату моделювання. Наприклад, виклик цього одразу після виклику AnimationPlayer.play() без затухання або в межах попереднього сигналу SkeletonModifier3D.modification_processed, якщо його умови суттєво змінюються.
void set_center_bone(index: int, bone: int) 🔗
Встановлює індекс центральної кістки кісткового ланцюга.
void set_center_bone_name(index: int, bone_name: String) 🔗
Встановлює назву центральної кістки ланцюга кісток.
void set_center_from(index: int, center_from: CenterFrom) 🔗
Встановлює, з чого походить центр у кістковому ланцюзі.
Рух кістки обчислюється на основі різниці у відносній відстані між центром і кісткою в попередньому та наступному кадрах.
Наприклад, якщо батьківський Skeleton3D використовується як центр, кістки вважаються такими, що не рухалися, якщо Skeleton3D рухається у світі.
У цьому випадку рухом кістки вважається лише зміна пози кістки.
void set_center_node(index: int, node_path: NodePath) 🔗
Встановлює шлях центрального вузла кісткового ланцюга.
void set_collision_count(index: int, count: int) 🔗
Встановлює кількість зіткнень у списку зіткнень у index у налаштуваннях, коли are_all_child_collisions_enabled() має значення false.
void set_collision_path(index: int, collision: int, node_path: NodePath) 🔗
Встановлює шлях до вузла SpringBoneCollision3D у collision у списку зіткнень ланцюга кісток, коли are_all_child_collisions_enabled() має значення false.
void set_drag(index: int, drag: float) 🔗
Встановлює силу опору кісткового ланцюга. Чим більше значення, тим більше пригнічується ворушіння.
Значення масштабується за допомогою set_drag_damping_curve() і кешується в кожному параметрі з’єднання в списку з’єднань.
void set_drag_damping_curve(index: int, curve: Curve) 🔗
Встановлює криву амортизації сили опору кісткового ланцюга.
void set_enable_all_child_collisions(index: int, enabled: bool) 🔗
Якщо enabled має значення true, усі дочірні SpringBoneCollision3D конфліктують, а метод set_exclude_collision_path() увімкнено як список виключень за адресою index у налаштуваннях.
Якщо enabled має значення false, вам потрібно вручну зареєструвати всі дійсні колізії за допомогою методу set_collision_path().
void set_end_bone(index: int, bone: int) 🔗
Встановлює кінцевий кістковий індекс кісткового ланцюга.
void set_end_bone_direction(index: int, bone_direction: BoneDirection) 🔗
Встановлює напрямок кінцевої кістки ланцюжка кісток, якщо is_end_bone_extended() має значення true.
void set_end_bone_length(index: int, length: float) 🔗
Встановлює довжину хвоста кінцевої кістки ланцюжка кісток, якщо is_end_bone_extended() має значення true.
void set_end_bone_name(index: int, bone_name: String) 🔗
Встановлює назву кінцевої кістки ланцюга кісток.
Примітка. Кінцева кістка має бути кореневою кісткою або дочірньою кісткою кореня. Якщо вони однакові, хвіст потрібно подовжити за допомогою set_extend_end_bone(), щоб похитнути кісткою.
void set_exclude_collision_count(index: int, count: int) 🔗
Встановлює кількість колізій виключення в списку колізій виключення в index у налаштуваннях, коли are_all_child_collisions_enabled() має значення true.
void set_exclude_collision_path(index: int, collision: int, node_path: NodePath) 🔗
Встановлює шлях вузла SpringBoneCollision3D за значенням collision у списку виключення колізій ланцюжка кісток, коли are_all_child_collisions_enabled() має значення true.
void set_extend_end_bone(index: int, enabled: bool) 🔗
Якщо enabled має значення true, кінцева кістка подовжується, щоб мати хвіст.
Конфігурація розширеного хвоста призначається останньому елементу в спільному списку.
Іншими словами, якщо ви встановите enabled як false, конфігурація останнього елемента в спільному списку не матиме впливу на змодельований результат.
void set_gravity(index: int, gravity: float) 🔗
Встановлює ступінь сили тяжіння кісткового ланцюга. Це значення не є прискоренням, а постійною швидкістю руху в set_gravity_direction().
Якщо gravity не 0, змінена поза не повернеться до початкової пози, оскільки на неї завжди впливає гравітація.
Значення масштабується set_gravity_damping_curve() і кешується в налаштуваннях кожного з’єднання в списку з’єднань.
void set_gravity_damping_curve(index: int, curve: Curve) 🔗
Встановлює криву демпфування сили тяжіння кісткового ланцюга.
void set_gravity_direction(index: int, gravity_direction: Vector3) 🔗
Встановлює напрямок сили тяжіння кісткового ланцюга. Це значення внутрішньо нормалізується, а потім множиться на set_gravity().
Значення зберігається в кеш-пам’яті в кожному параметрі об’єднання в списку об’єднань.
void set_individual_config(index: int, enabled: bool) 🔗
Якщо enabled має значення true, конфігурацію можна редагувати окремо для кожного з’єднання.
void set_joint_drag(index: int, joint: int, drag: float) 🔗
Встановлює силу опору для joint у списку суглобів кісткового ланцюга, якщо is_config_individual() має значення true.
void set_joint_gravity(index: int, joint: int, gravity: float) 🔗
Встановлює силу тяжіння в joint у списку суглобів кісткового ланцюга, якщо is_config_individual() має значення true.
void set_joint_gravity_direction(index: int, joint: int, gravity_direction: Vector3) 🔗
Встановлює напрямок сили тяжіння для joint у списку суглобів кісткового ланцюга, якщо is_config_individual() має значення true.
void set_joint_radius(index: int, joint: int, radius: float) 🔗
Встановлює радіус суглоба на joint у списку суглобів кісткового ланцюга, якщо is_config_individual() має значення true.
void set_joint_rotation_axis(index: int, joint: int, axis: RotationAxis) 🔗
Встановлює вісь обертання в joint у списку суглобів ланцюжка кісток, коли is_config_individual() має значення true.
Осі базуються на просторі Skeleton3D.get_bone_rest(). Якщо axis має значення ROTATION_AXIS_CUSTOM, можна вказати будь-яку вісь.
Примітка: Вісь обертання та вектор вперед не повинні бути колінеарними, щоб уникнути ненавмисного обертання, оскільки SpringBoneSimulator3D не враховує сили скручування.
void set_joint_rotation_axis_vector(index: int, joint: int, vector: Vector3) 🔗
Встановлює вектор осі обертання для зазначеного суглоба в ланцюзі кісток.
Цей вектор нормалізується внутрішнім процесом і представляє вісь, навколо якої може обертатися ланцюжок кісток.
Якщо довжина вектора дорівнює 0, вона вважається синонімом ROTATION_AXIS_ALL.
void set_joint_stiffness(index: int, joint: int, stiffness: float) 🔗
Встановлює силу жорсткості для joint у списку суглобів кісткового ланцюга, якщо is_config_individual() має значення true.
void set_radius(index: int, radius: float) 🔗
Встановлює радіус суглоба кісткового ланцюга. Він використовується для переміщення та ковзання за допомогою SpringBoneCollision3D у списку зіткнень.
Значення масштабується set_radius_damping_curve() і кешується в кожному параметрі з’єднання в списку з’єднань.
void set_radius_damping_curve(index: int, curve: Curve) 🔗
Встановлює криву демпфування радіуса суглоба кісткового ланцюга.
void set_root_bone(index: int, bone: int) 🔗
Встановлює індекс кореневої кістки кісткового ланцюга.
void set_root_bone_name(index: int, bone_name: String) 🔗
Встановлює назву кореневої кістки ланцюга кісток.
void set_rotation_axis(index: int, axis: RotationAxis) 🔗
Встановлює вісь обертання ланцюга кісток. Якщо встановлено значення певної осі, воно діє як шарнірне з'єднання. Значення кешується в кожному налаштуванні з'єднання у списку з'єднань.
Осі базуються на просторі Skeleton3D.get_bone_rest(). Якщо axis має значення ROTATION_AXIS_CUSTOM, можна вказати будь-яку вісь.
Примітка: Вектор осі обертання та вектор вперед не повинні бути колінеарними, щоб уникнути ненавмисного обертання, оскільки SpringBoneSimulator3D не враховує сили скручування.
void set_rotation_axis_vector(index: int, vector: Vector3) 🔗
Встановлює вектор осі обертання ланцюжка кісток. Значення кешується в кожном налаштування суглоба у списку суглобів.
Цей вектор нормалізується внутрішнім процесом і представляє вісь, навколо якої може обертатися кістковий ланцюг.
Якщо довжина вектора дорівнює 0, він вважається синонімом ROTATION_AXIS_ALL.
void set_stiffness(index: int, stiffness: float) 🔗
Встановлює силу жорсткості кісткового ланцюга. Чим більше значення, тим швидше він повертається до початкового положення.
Якщо stiffness дорівнює 0, змінена поза не повернеться до початкової пози.
Значення масштабується set_stiffness_damping_curve() і кешується в налаштуваннях кожного з’єднання в списку з’єднань.
void set_stiffness_damping_curve(index: int, curve: Curve) 🔗
Встановлює криву амортизації сили жорсткості кісткового ланцюга.