SkeletonIK3D
Застаріло: This class may be changed or removed in future versions.
Успадковує: SkeletonModifier3D < Node3D < Node < Object
Вузол використовується для обертання всіх кісток Skeleton3D кісткового ланцюжка, що розміщує кінцеву кістку на бажаному положенні 3D.
Опис
SkeletonIK3D використовується для обертання всіх кісток ланцюга кісток Skeleton3D таким чином, що кінцева кістка розміщується в бажаному 3D-положенні. Типовий скрипт для IK в іграх полягає в тому, щоб покласти ноги персонажа на землю або руки персонажа на предмет, який зараз тримається. SkeletonIK використовує FabrikInverseKinematic внутрішньо для вирішення ланцюжка кісток і застосовує результати до властивості Skeleton3D bones_global_pose_override для всіх уражених кісток у ланцюжку. Якщо застосовано повністю, це перезаписує будь-яку трансформацію кістки з Animation або спеціальні пози кістки, встановлені користувачами. Застосовувану кількість можна контролювати за допомогою властивості SkeletonModifier3D.influence.
# Автоматично застосовувати ефект IK до кожного нового кадру (не поточного)
skeleton_ik_node.start()
# Застосувати ефект IK лише до поточного кадру
skeleton_ik_node.start(true)
# Зупинити ефект IK і скинути bones_global_pose_override на Skeleton
skeleton_ik_node.stop()
# Застосуйте повний ефект IK
skeleton_ik_node.set_influence(1.0)
# Застосуйте ефект половини IK
skeleton_ik_node.set_influence(0,5)
# Застосувати нульовий ефект IK (значення 0,01 або менше також усуває bones_global_pose_override на Skeleton)
skeleton_ik_node.set_influence(0.0)
Властивості
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Методи
get_parent_skeleton() const |
|
void |
|
void |
stop() |
Описи властивостей
Застаріло: Use SkeletonModifier3D.influence instead.
Значення взаємозв'язку для того, скільки результатів IK застосовуються в поточному кістковому ланцюжку скелета. Вартість 1.0 повністю перезаписати всі кісткові перетвори скелета, а значення 0.0 візуально відключить скелети.
Vector3 magnet = Vector3(0, 0, 0) 🔗
Положення вторинної цілі (перше – це властивість target або target_node) для ланцюга IK. Використовуйте положення магніту (полюсну ціль) для керування вигином ланцюга IK. Працює лише якщо ланцюг кісток має більше 2 кісток. Положення середньої кістки ланцюга буде лінійно інтерпольовано з положенням магніту.
Кількість петель ітерації, що використовуються розчинником IK для отримання більш точного (і елегантного) результатів кісткової ланцюга.
Мінімальна відстань між кісткою і цільовою метою. Якщо відстань нижче цього значення, то розчинник IK припиняє подальшу ітерацію.
bool override_tip_basis = true 🔗
Якщо true перезаписує обертання кінчика кістки обертанням target (або target_node якщо визначено).
StringName root_bone = &"" 🔗
void set_root_bone(value: StringName)
StringName get_root_bone()
Назва поточної кореневої кістки, перша кісточка в ланцюжку IK.
Transform3D target = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) 🔗
void set_target_transform(value: Transform3D)
Transform3D get_target_transform()
Перша ціль ланцюжка IK, де розміщена кінцева кістка, і, якщо override_tip_basis має значення true, як обертається кінцева кістка. Якщо шлях target_node доступний, замість цього використовується перетворення вузлів, і ця властивість ігнорується.
NodePath target_node = NodePath("") 🔗
Цільова вершина NodePath для ланцюга IK. При наявності поточного вузла Transform3D використовується замість об'єкта target.
StringName tip_bone = &"" 🔗
void set_tip_bone(value: StringName)
StringName get_tip_bone()
Назва поточної кінчикової кістки, останньої кістки в ланцюзі IK, розміщеної на target перетворення (або target_node якщо визначено).
Якщо true, інструктує розчинник IK для розгляду вторинної магнітної цілі (полярна ціль) при обчисленні кісткового ланцюжка. Використовуйте магнітне положення (полярне призначення) для управління вигином ланцюга IK.
Описи методів
Skeleton3D get_parent_skeleton() const 🔗
Повертає батьківський вузол Skeleton3D, який був присутній, коли SkeletonIK увійшов до дерева сцени. Повертає null, якщо батьківський вузол не був вузлом Skeleton3D, коли SkeletonIK3D увійшов до дерева сцен.
Повертаємо true, якщо SkeletonIK застосовує IK-ефекти подовжує кадри до кісток Skeleton3D. false, якщо SkeletonIK припиняється або start() був використаний з one_time параметром true.
void start(one_time: bool = false) 🔗
Починає застосовувати IK-ефекти на кожному кадрі до кісток Skeleton3D, але займе тільки ефект від наступного кадру. Якщо one_time є true, це займе ефект відразу, але також скидати на наступному кадрі.
void stop() 🔗
Стопи застосування IK ефектів на кожному кадрі до кісток Skeleton3D, а також дзвінки Skeleton3D.clear_bones_global_pose_override() для видалення наявних накладок на всіх кістках.