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...
RetargetModifier3D
继承: SkeletonModifier3D < Node3D < Node < Object
修改器,能够将父骨架的姿势(或全局姿势)转移给在模型空间中具有不同放松姿势的子骨架。
描述
获取模型空间中相对于父骨架放松姿势的姿势(或全局姿势)并将其转移给子 Skeleton。
修改器会在父骨架的更新过程中直接重写子骨架的姿势。这意味着它会覆盖目标骨架上正常处理过程中设置的映射骨骼姿势。如果你想要在重新定向后设置目标骨架的骨骼姿势,则需要向目标骨架添加一个 SkeletonModifier3D 子节点才能修改姿势。
注意:启用 use_global_pose 时,即便是未映射的骨骼也可能导致视觉问题,因为如果父骨骼存在映射的子骨骼,那么应用全局姿势时会忽略父骨骼的姿势。另见 use_global_pose。
属性
BitField[TransformFlag] |
|
|
|
方法
is_position_enabled() const |
|
is_rotation_enabled() const |
|
is_scale_enabled() const |
|
void |
set_position_enabled(enabled: bool) |
void |
set_rotation_enabled(enabled: bool) |
void |
set_scale_enabled(enabled: bool) |
枚举
flags TransformFlag: 🔗
TransformFlag TRANSFORM_FLAG_POSITION = 1
如果设置,则允许重定向位置。
TransformFlag TRANSFORM_FLAG_ROTATION = 2
如果设置,则允许重定向旋转。
TransformFlag TRANSFORM_FLAG_SCALE = 4
如果设置,则允许重定向缩放。
TransformFlag TRANSFORM_FLAG_ALL = 7
如果设置,则允许重定向位置、旋转、位置。
属性说明
BitField[TransformFlag] enable = 7
🔗
void set_enable_flags(value: BitField[TransformFlag])
BitField[TransformFlag] get_enable_flags()
禁用 use_global_pose 时,用于单独控制变换元素过程的标志。
SkeletonProfile profile 🔗
void set_profile(value: SkeletonProfile)
SkeletonProfile get_profile()
用于重定向与骨骼列表中名称匹配骨骼的 SkeletonProfile。
bool use_global_pose = false
🔗
如果为 false
,则在目标骨架的骨骼数量少于源骨架时,源骨架父级的变换将被忽略。
这样可以在不同体型的模型之间进行重定向,位置、旋转和缩放都可以单独重定向。
如果为 true
,则在重定向时会考虑全局姿势。
在目标骨架的骨骼数量少于源骨架的情况下,会考虑源骨架父级的变换。然而,骨架之间的骨骼长度必须完全匹配,否则骨骼将被强制扩展或缩小。
适用于在骨骼数量不同的模型之间进行重定向时使用长度为 0
的虚设骨骼来匹配姿势。
方法说明
bool is_position_enabled() const 🔗
如果 enable 中有 TRANSFORM_FLAG_POSITION 则返回 true
。
bool is_rotation_enabled() const 🔗
如果 enable 中有 TRANSFORM_FLAG_ROTATION 则返回 true
。
bool is_scale_enabled() const 🔗
如果 enable 中有 TRANSFORM_FLAG_SCALE 则返回 true
。
void set_position_enabled(enabled: bool) 🔗
在 enable 中设置 TRANSFORM_FLAG_POSITION。
void set_rotation_enabled(enabled: bool) 🔗
在 enable 中设置 TRANSFORM_FLAG_ROTATION。
void set_scale_enabled(enabled: bool) 🔗
在 enable 中设置 TRANSFORM_FLAG_SCALE。