Skeleton3D
Наследует: Node3D < Node < Object
Узел, содержащий иерархию костей, используемый для создания трехмерной скелетной анимации.
Описание
Skeleton3D предоставляет интерфейс для управления иерархией костей, включая позу, покой и анимацию (см. Animation). Он также может использовать физику ragdoll.
Общее преобразование кости относительно скелета определяется позой кости. Остаток кости определяет начальное преобразование позы кости.
Обратите внимание, что «глобальная поза» ниже относится к общему преобразованию кости относительно скелета, поэтому это не фактическое глобальное/мировое преобразование кости.
Обучающие материалы
Свойства
|
||
|
||
|
||
|
Методы
Сигналы
bone_enabled_changed(bone_idx: int) 🔗
Выдается, когда кость в 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() 🔗
Выдается при обновлении rest данных.
show_rest_only_changed() 🔗
Вызывается при изменении значения show_rest_only.
skeleton_updated() 🔗
Выдается, когда рассчитана окончательная поза, будет применена к skin'у в процессе обновления.
Это означает, что вся обработка SkeletonModifier3D завершена. Чтобы обнаружить завершение обработки каждого SkeletonModifier3D, используйте SkeletonModifier3D.modification_processed.
Перечисления
enum ModifierCallbackModeProcess: 🔗
ModifierCallbackModeProcess MODIFIER_CALLBACK_MODE_PROCESS_PHYSICS = 0
Установите флаг для обработки изменений во время физических кадров (см. Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS).
ModifierCallbackModeProcess MODIFIER_CALLBACK_MODE_PROCESS_IDLE = 1
Установите флаг для модификации процесса во время кадров процесса (см. 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 для совместимости. Это свойство управляет внутренним виртуальным PhysicalBoneSimulator3D SkeletonModifier3D.active.
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 🔗
Возвращает глобальное преобразование rest для bone_idx.
Variant get_bone_meta(bone_idx: int, key: StringName) const 🔗
Returns the metadata with the given key for the bone at index bone_idx.
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, то у кости нет родителя.
Примечание: Возвращаемая родительская кость всегда будет меньше, чем bone_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 🔗
Возвращает масштаб позы кости в bone_idx.
Transform3D get_bone_rest(bone_idx: int) const 🔗
Возвращает rest преобразование для кости bone_idx.
StringName get_concatenated_bone_names() const 🔗
Возвращает все имена костей, объединенные запятыми (,) как один StringName.
Полезно задать его как подсказку для свойства enum.
PackedInt32Array get_parentless_bones() const 🔗
Возвращает массив со всеми костями, которые не имеют родителей. Другой способ взглянуть на это — это то, что он возвращает индексы всех костей, которые не зависят или не изменяются другими костями в Скелете.
Возвращает количество раз, когда иерархия костей изменялась в этом скелете, включая переименования.
Версия скелета не сериализуется: используется только в одном экземпляре Skeleton3D.
Используется для аннулирования кэшей в IK и других узлах, которые обрабатывают кости.
bool has_bone_meta(bone_idx: int, key: StringName) const 🔗
Returns true if the bone at index bone_idx has metadata with the given key.
bool is_bone_enabled(bone_idx: int) const 🔗
Возвращает, включена ли поза кости для кости в bone_idx.
void localize_rests() 🔗
Возвращает все кости скелета в исходное (rest) положение.
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) 🔗
Привязывает указанный 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) 🔗
Sets the metadata with the given key to value for the bone at index bone_idx.
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 — это Quaternion, описывающий вращение в локальном координатном пространстве кости относительно вращения любых родительских костей.
void set_bone_pose_scale(bone_idx: int, scale: Vector3) 🔗
Устанавливает масштаб позы кости в bone_idx на scale.
void set_bone_rest(bone_idx: int, rest: Transform3D) 🔗
Устанавливает rest преобразование для кости bone_idx.
void unparent_bone_and_rest(bone_idx: int) 🔗
Делает кость bone_idx без родительской, и устанавливает ее положение покоя в положение родительской кости перед сбросом.