Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
BoneTwistDisperser3D
Успадковує: SkeletonModifier3D < Node3D < Node < Object
Вузол, який поширює та розсіює скручування дочірньої кістки до батьківських кісток.
Опис
Цей BoneTwistDisperser3D забезпечує плавну інтерполяцію скручування між декількома кістками шляхом розподілу скручування кінцевої кістки між її батьківськими елементами. Це змінює лише скручування, не впливаючи на загальне положення кожного суглоба.
Це корисно для плавного скручування кісток у поєднанні з CopyTransformModifier3D та IK.
Примітка: Якщо витягнуте скручування перевищує 180 градусів, кістка перевернеться. Це схоже на ConvertTransformModifier3D.
Примітка: Більшість методів у цьому класі приймають параметр index. Цей параметр визначає, який запис зі списку налаштувань повернути, якщо IK має кілька записів (наприклад, settings/<index>/root_bone_name).
Властивості
|
||
|
Методи
Переліки
enum DisperseMode: 🔗
DisperseMode DISPERSE_MODE_EVEN = 0
Призначте величини так, щоб вони монотонно зростали від 0.0 до 1.0, забезпечуючи однакову вагу. Наприклад, для п'яти суглобів величини становитимуть 0.2, 0.4, 0.6, 0.8 та 1.0, починаючи з кореневої кістки.
DisperseMode DISPERSE_MODE_WEIGHTED = 1
Призначте величини так, щоб вони монотонно зростали від 0.0 до 1.0, залежно від довжини кісток між сегментами суглобів. Див. також set_weight_position().
DisperseMode DISPERSE_MODE_CUSTOM = 2
Ви можете призначити довільні значення до списку суглобів. Див. також set_joint_twist_amount().
Коли is_end_bone_extended() має значення false, дочірній елемент опорної кістки існує виключно для визначення осі скручування, тому його власне значення абсолютно не впливає.
Описи властивостей
bool mutable_bone_axes = true 🔗
Якщо true, розв'язувач отримує вісь кістки з пози кістки кожного кадру.
Якщо false, розв'язувач отримує вісь кістки з залишку кістки та кешує її.
Кількість налаштувань.
Описи методів
void clear_settings() 🔗
Очищає всі налаштування.
Curve get_damping_curve(index: int) const 🔗
Повертає криву затухання, коли get_disperse_mode() має значення DISPERSE_MODE_CUSTOM.
DisperseMode get_disperse_mode(index: int) const 🔗
Повертає, що визначає, чи використовувати автоматичне призначення суми, чи дозволити ручне призначення.
int get_end_bone(index: int) const 🔗
Повертає індекс кінцевої кістки ланцюга кісток.
BoneDirection get_end_bone_direction(index: int) const 🔗
Повертає напрямок хвоста кінцевої кістки ланцюжка кісток, коли is_end_bone_extended() має значення true.
String get_end_bone_name(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_twist_amount(index: int, joint: int) const 🔗
Повертає величину скручування в joint у списку з'єднань ланцюжка кісток, коли get_disperse_mode() має значення DISPERSE_MODE_CUSTOM.
int get_reference_bone(index: int) const 🔗
Повертає опорну кістку для вилучення скручування налаштування в index.
Ця кістка є або кінцем ланцюга, або його батьківською, залежно від is_end_bone_extended().
String get_reference_bone_name(index: int) const 🔗
Повертає назву кістки-посилання для вилучення скручування налаштування в index.
Ця кістка є або кінцем ланцюга, або його батьківською, залежно від is_end_bone_extended().
int get_root_bone(index: int) const 🔗
Повертає індекс кореневої кістки ланцюга кісток.
String get_root_bone_name(index: int) const 🔗
Повертає назву кореневої кістки ланцюга кісток.
Quaternion get_twist_from(index: int) const 🔗
Повертає обертання до довільного стану перед скручуванням для поточної пози кістки, щоб витягти скручування, коли is_twist_from_rest() має значення false.
float get_weight_position(index: int) const 🔗
Повертає позицію, в якій потрібно розділити сегмент між суглобами для призначення ваги, коли get_disperse_mode() має значення DISPERSE_MODE_WEIGHTED.
bool is_end_bone_extended(index: int) const 🔗
Повертає true, якщо кінцева кістка подовжена, щоб мати хвіст.
bool is_twist_from_rest(index: int) const 🔗
Повертає true, якщо величину повороту витягує з різниці між положенням кістки в затишку та поточним положенням кістки.
void set_damping_curve(index: int, curve: Curve) 🔗
Встановлює криву затухання, коли get_disperse_mode() має значення DISPERSE_MODE_CUSTOM.
void set_disperse_mode(index: int, disperse_mode: DisperseMode) 🔗
Встановлює, чи використовувати автоматичне призначення суми, чи дозволити ручне призначення.
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_name(index: int, bone_name: String) 🔗
Встановлює назву кінцевої кістки ланцюжка кісток.
Примітка: Кінцева кістка має бути дочірньою кісткою кореневої кістки.
void set_extend_end_bone(index: int, enabled: bool) 🔗
Якщо enabled має значення true, кінцева кістка подовжується, щоб мати хвіст.
Якщо enabled має значення false, get_reference_bone() стає батьківським методом кінцевої кістки та використовує вектор до кінцевої кістки як вісь повороту.
void set_joint_twist_amount(index: int, joint: int, twist_amount: float) 🔗
Встановлює величину скручування в joint у списку з'єднань ланцюжка кісток, коли get_disperse_mode() має значення DISPERSE_MODE_CUSTOM.
void set_root_bone(index: int, bone: int) 🔗
Встановлює індекс кореневої кістки кісткового ланцюга.
void set_root_bone_name(index: int, bone_name: String) 🔗
Встановлює назву кореневої кістки ланцюга кісток.
void set_twist_from(index: int, from: Quaternion) 🔗
Встановлює обертання в довільний стан перед скручуванням для поточної пози кістки, щоб витягти скручування, коли is_twist_from_rest() має значення false.
Іншими словами, викликаючи set_twist_from() за допомогою SkeletonModifier3D.modification_processed певного SkeletonModifier3D, можна витягти лише скручування, згенеровані модифікаторами, обробленими після цього, але до цього BoneTwistDisperser3D.
void set_twist_from_rest(index: int, enabled: bool) 🔗
Якщо enabled має значення true, величина скручування визначається з різниці між залишком кістки та поточною позою кістки.
Якщо enabled має значення false, величина скручування визначається з різниці між get_twist_from() та поточною позою кістки. Див. також set_twist_from().
void set_weight_position(index: int, weight_position: float) 🔗
Встановлює позицію, в якій потрібно розділити сегмент між суглобами для призначення ваг, коли get_disperse_mode() має значення DISPERSE_MODE_WEIGHTED.
Наприклад, коли weight_position має значення 0.5, якщо між трьома суглобами існують два сегменти кістки довжиною 1.0, ваги призначаються кожному суглобу від кореня до кінця у співвідношеннях 0.5, 1.0 та 0.5. Тоді значення стають відповідно 0.25, 0.75 та 1.0.