Skeleton3D
Успадковує: Node3D < Node < Object
Вузлом, що містить ієрархію кістки, використовується для створення 3D скелетної анімації.
Опис
Skeleton3D надає інтерфейс для управління ієрархією кісток, включаючи позу, відпочинок та анімацію (див. Animation). Також можна використовувати ragdoll фізики.
Загальна трансформація кістки по відношенню до скелета визначається кістковою позою. Біонний відпочинок визначає початкову трансформацію кісткової пози.
Зверніть увагу, що «глобальна поза» нижче відноситься до загального перетворення кістки по відношенню до скелета, тому не є фактичним глобальним / світовим перетворенням кістки.
Посібники
Властивості
|
||
|
||
|
||
|
Методи
Сигнали
bone_enabled_changed(bone_idx: int) 🔗
Викликається, коли кістка за параметром param bone_idx() перемикається за допомогою методу set_bone_enabled(). Використовуйте метод is_bone_enabled() для перевірки нового значення.
bone_list_changed() 🔗
Викликається, коли список кісток змінюється, наприклад, під час виклику методу add_bone(), методу set_bone_parent(), unparent_bone_and_rest() або методу clear_bones().
pose_updated() 🔗
Увімкнено, коли поз оновлено.
Примітка: Під час процесу оновлення цей сигнал не пожежний, тому модифікація SkeletonModifier3D не виявлена.
rest_updated() 🔗
Видається, коли решта оновлюється.
show_rest_only_changed() 🔗
Викликається, коли змінюється значення show_rest_only.
skeleton_updated() 🔗
Випробувано, коли остаточна поза була розрахована на шкіру в процесі оновлення.
Це означає, що всі SkeletonModifier3D обробка завершено. Для виявлення завершення обробки кожного SkeletonModifier3D використовуйте SkeletonModifier3D.modification_processed.
Переліки
enum ModifierCallbackModeProcess: 🔗
ModifierCallbackModeProcess MODIFIER_CALLBACK_MODE_PROCESS_PHYSICS = 0
Встановити прапор для модифікації процесу при фізичних кадрах (див. [constant Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS".
ModifierCallbackModeProcess MODIFIER_CALLBACK_MODE_PROCESS_IDLE = 1
Встановити прапор для модифікації процесу під час обробки кадрів (див. [constant Node.NOTIFICATION_INTERNAL_PROCESS".
ModifierCallbackModeProcess MODIFIER_CALLBACK_MODE_PROCESS_MANUAL = 2
Не обробляйте модифікацію. Використовуйте advance() для обробки модифікації вручну.
Константи
NOTIFICATION_UPDATE_SKELETON = 50 🔗
Після того, як цей скелет буде оновлено. У тому випадку, це називається тільки один раз за кадром в розшифрованому процесі.
Описи властивостей
bool animate_physical_bones = true 🔗
Застаріло: Ця властивість може бути змінена або усунута у наступних версіях.
Якщо ви дотримуєтеся рекомендованого робочого процесу та явно маєте PhysicalBoneSimulator3D як дочірній об'єкт Skeleton3D, ви можете контролювати, чи впливає на нього raycasting, не запускаючи метод physical_bones_start_simulation(), за допомогою його SkeletonModifier3D.active.
Однак, для старих (застарілих) конфігурацій Skeleton3D має внутрішній віртуальний PhysicalBoneSimulator3D для сумісності. Ця властивість контролює внутрішній віртуальний SkeletonModifier3D.active PhysicalBoneSimulator3D.
ModifierCallbackModeProcess modifier_callback_mode_process = 1 🔗
void set_modifier_callback_mode_process(value: ModifierCallbackModeProcess)
ModifierCallbackModeProcess get_modifier_callback_mode_process()
Встановлює терміни обробки для модифікатора.
Мультиплікація 3D позиційної анімації.
Примітка: Без цього значення 1.0, ключове значення в анімації не буде відповідати дійсному значення позиції.
Якщо true, змусить кісточки в їх за замовчуванням решта, незалежно від їх значень. У редакторі це також запобігає редагуванню кісток.
Описи методів
Додає нову кісточку з вказаною назвою. Повертає новий індекс кістки, або -1, якщо цей метод не виходить.
Примітка: Біони повинні бути унікальними, не порожніми, і не можна включати : і `` /`` символи.
Вручну просунути дочірні об'єкти SkeletonModifier3D на заданий час (у секундах).
Примітка: Значення delta тимчасово накопичується в Skeleton3D, і відкладений процес використовує накопичене значення для обробки модифікації.
void clear_bones() 🔗
Очистити всі кістки в цьому скелеті.
void clear_bones_global_pose_override() 🔗
Застаріло: Цей метод може бути змінений або усунутий у наступних версіях.
Видаліть глобальну позу на всіх кістках у скелеті.
Skin create_skin_from_rest_transforms() 🔗
There is currently no description for this method. Please help us by contributing one!
int find_bone(name: String) const 🔗
Повертає кістковий індекс, який відповідає name як його ім'я. Повертає -1, якщо немає кістки з такою назвою.
void force_update_all_bone_transforms() 🔗
Застаріло: This method should only be called internally.
Примус оновлює кісткові трансформатори / пози для всіх кісток в скелеті.
void force_update_bone_child_transform(bone_idx: int) 🔗
Примушує кісткову трансформацію на кістці bone_idx і всі її діти.
PackedInt32Array get_bone_children(bone_idx: int) const 🔗
Повертає масив, що містить кісткові індекси всіх дочірньих вузлів пропущених в кістці, bone_idx.
Повертає кількість кісток в скелеті.
Transform3D get_bone_global_pose(bone_idx: int) const 🔗
Повертає загальне перетворення зазначеної кістки, по відношенню до скелета. Що стосується каркаса скелета, то це не фактичне «глобальне» перетворення кістки.
Примітка: Це глобальна поза, яку ви встановили до скелету в процесі, кінцева глобальна поза може передаватися модифікаторами в процесі відстрочення, якщо ви хочете отримати доступ до кінцевої глобальної пози, скористайтеся SkeletonModifier3D.modification_processed.
Transform3D get_bone_global_pose_no_override(bone_idx: int) const 🔗
Застаріло: Цей метод може бути змінений або усунутий у наступних версіях.
Повертає загальне перетворення зазначеної кістки, по відношенню до скелета, але без перепадів глобальної пози. Що стосується каркаса скелета, то це не фактичне «глобальне» перетворення кістки.
Transform3D get_bone_global_pose_override(bone_idx: int) const 🔗
Застаріло: Цей метод може бути змінений або усунутий у наступних версіях.
Повернути глобальну позу перевизначну трансформацію для bone_idx.
Transform3D get_bone_global_rest(bone_idx: int) const 🔗
Повертає глобальну трансформацію відпочинку для bone_idx.
Variant get_bone_meta(bone_idx: int, key: StringName) const 🔗
Повертає метадані для кістки за індексом bone_idx з key.
Array[StringName] get_bone_meta_list(bone_idx: int) const 🔗
Повертає список усіх ключів метаданих для кістки за індексом bone_idx.
String get_bone_name(bone_idx: int) const 🔗
Повертає назву кісточки в індексі bone_idx.
int get_bone_parent(bone_idx: int) const 🔗
Повертає кістковий індекс, який є батьком кісточки bone_idx. Якщо -1, то кістка не має батьків.
Примітка: Повернути батьківську кісточку завжди буде менше параметр кістка_idx.
Transform3D get_bone_pose(bone_idx: int) const 🔗
Повертає позу трансформацію зазначеної кістки.
Примітка: Це поза, яку ви встановили до скелета в процесі, кінцева поза може отримати перерозподілений модифікаторами в процесі відстрочення, якщо ви хочете отримати доступ до кінцевої пози, скористайтеся SkeletonModifier3D.modification_processed.
Vector3 get_bone_pose_position(bone_idx: int) const 🔗
Повертає положення кістки в точці bone_idx. Повернений Vector3 знаходиться в локальному координатному просторі вузла Skeleton3D.
Quaternion get_bone_pose_rotation(bone_idx: int) const 🔗
Повертаємо позу обертання кісточки на bone_idx. Повернуто Quaternion локально до кістки щодо обертання будь-яких кісток батьків.
Vector3 get_bone_pose_scale(bone_idx: int) const 🔗
Повертаємо шкалу пози кісточки на парова кістка_idx.
Transform3D get_bone_rest(bone_idx: int) const 🔗
Повертає решту перетворення кістки bone_idx.
StringName get_concatenated_bone_names() const 🔗
Повертає всі кісткові імена, що містять коми (,) як єдиний StringName.
Корисно встановити її як підказка на об'єкт нерухомості.
PackedInt32Array get_parentless_bones() const 🔗
Повертає масив з усіма кісточками, які без батьків. Ще один спосіб подивитися на це те, що він повертає індекси всіх кісток, які не залежні або модифіковані іншими кісточками в скелеті.
Повертає кількість разів, коли кісткова ієрархія змінилася в межах цього скелета, в тому числі перейменувань.
Версія Skeleton не є послідовним: використовувати лише в одному екземплярі Skeleton3D.
Використовуйте для недійсних кешів у розчинників IK та інших вузлів, які обробляють кістки.
bool has_bone_meta(bone_idx: int, key: StringName) const 🔗
Повертає true, якщо кістка за індексом bone_idx має метадані з ключем key.
bool is_bone_enabled(bone_idx: int) const 🔗
Повертає, чи ввімкнено кісткову позу для кістки bone_idx.
void localize_rests() 🔗
Повертає всі кістки в скелеті до їхнього відпочинку пози.
void physical_bones_add_collision_exception(exception: RID) 🔗
Застаріло: Цей метод може бути змінений або усунутий у наступних версіях.
Додає виключення зіткнення до фізичної кістки.
Працює так само, як вузол RigidBody3D.
void physical_bones_remove_collision_exception(exception: RID) 🔗
Застаріло: Цей метод може бути змінений або усунутий у наступних версіях.
Вилучає виключення зіткнення до фізичної кістки.
Працює так само, як вузол RigidBody3D.
void physical_bones_start_simulation(bones: Array[StringName] = []) 🔗
Застаріло: Цей метод може бути змінений або усунутий у наступних версіях.
Повідомляє вершини PhysicalBone3D у Скелеті, щоб розпочати імітацію та реагацію на фізичний світ.
Додатково можна пропустити список кісткових імен, що дозволяє імітувати тільки пропущені кістки.
void physical_bones_stop_simulation() 🔗
Застаріло: Цей метод може бути змінений або усунутий у наступних версіях.
Розмістіть вузол PhysicalBone3D у Скелеті, щоб зупинити імітацію.
SkinReference register_skin(skin: Skin) 🔗
Побої заданої шкіри до скелета.
void reset_bone_pose(bone_idx: int) 🔗
Налаштовує кісткову позу для відпочинку bone_idx.
void reset_bone_poses() 🔗
Встановлює всі кісткові пози для відпочинку.
void set_bone_enabled(bone_idx: int, enabled: bool = true) 🔗
Вимкнено позу для кістки на bone_idx, якщо false, дозволяє кісткову позу, якщо true.
void set_bone_global_pose(bone_idx: int, pose: Transform3D) 🔗
Встановлює глобальне перетворення пози, pose, для кістки за адресою bone_idx.
Примітка: Якщо пози інших кісток були змінені, цей метод виконує некоректне перерахунок поз і призведе до погіршення продуктивності. Якщо ви знаєте, що буде застосовано кілька глобальних поз, розгляньте можливість використання set_bone_pose() з попереднім обчисленням.
void set_bone_global_pose_override(bone_idx: int, pose: Transform3D, amount: float, persistent: bool = false) 🔗
Застаріло: Цей метод може бути змінений або усунутий у наступних версіях.
Встановлює глобальне перетворення пози, pose, для кістки за адресою bone_idx.
amount – це сила інтерполяції, яка буде використовуватися під час застосування пози, а persistent визначає, чи залишиться застосована поза.
Примітка: Перетворення пози має бути глобальною позою! Щоб перетворити перетворення світу з Node3D на глобальну позу кістки, помножте Transform3D.affine_inverse() вузла Node3D.global_transform на потрібне перетворення світу.
void set_bone_meta(bone_idx: int, key: StringName, value: Variant) 🔗
Встановлює метадані для кістки за індексом bone_idx, встановлюючи key мета до value.
void set_bone_name(bone_idx: int, name: String) 🔗
Встановлює назву кістки, name, для кістки за адресою bone_idx.
void set_bone_parent(bone_idx: int, parent_idx: int) 🔗
Встановлює індекс кістки parent_idx як батьківський елемент для кістки за адресою bone_idx. Якщо -1, то кістка не має батьківського елемента.
Примітка: parent_idx має бути меншим за bone_idx.
void set_bone_pose(bone_idx: int, pose: Transform3D) 🔗
Встановлює перетворення пози pose для кістки за адресою bone_idx.
void set_bone_pose_position(bone_idx: int, position: Vector3) 🔗
Встановлює позицію кістки в bone_idx на position. position – це Vector3, що описує позицію, локальну для вузла Skeleton3D.
void set_bone_pose_rotation(bone_idx: int, rotation: Quaternion) 🔗
Встановлює обертання кістки в bone_idx на rotation. rotation – це кватерніон, що описує обертання в локальному координатному просторі кістки відносно обертання будь-яких батьківських кісток.
void set_bone_pose_scale(bone_idx: int, scale: Vector3) 🔗
Встановлює масштаб пози кістки в bone_idx на scale.
void set_bone_rest(bone_idx: int, rest: Transform3D) 🔗
Налаштовує решту перетворень для кістки bone_idx.
void unparent_bone_and_rest(bone_idx: int) 🔗
Непристойна кісточка на bone_idx і встановлює її решту позицію до того, що його батько перед скиданням.