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.

RetargetModifier3D

继承: SkeletonModifier3D < Node3D < Node < Object

修改器,能够将父骨架的姿势(或全局姿势)转移给在模型空间中具有不同放松姿势的子骨架。

描述

获取模型空间中相对于父骨架放松姿势的姿势(或全局姿势)并将其转移给子 Skeleton。

修改器会在父骨架的更新过程中直接重写子骨架的姿势。这意味着它会覆盖目标骨架上正常处理过程中设置的映射骨骼姿势。如果你想要在重新定向后设置目标骨架的骨骼姿势,则需要向目标骨架添加一个 SkeletonModifier3D 子节点才能修改姿势。

注意:启用 use_global_pose 时,即便是未映射的骨骼也可能导致视觉问题,因为如果父骨骼存在映射的子骨骼,那么应用全局姿势时会忽略父骨骼的姿势。另见 use_global_pose

属性

BitField[TransformFlag]

enable

7

SkeletonProfile

profile

bool

use_global_pose

false

方法

bool

is_position_enabled() const

bool

is_rotation_enabled() const

bool

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 🔗

禁用 use_global_pose 时,用于单独控制变换元素过程的标志。


SkeletonProfile profile 🔗

用于重定向与骨骼列表中名称匹配骨骼的 SkeletonProfile


bool use_global_pose = false 🔗

  • void set_use_global_pose(value: bool)

  • bool is_using_global_pose()

如果为 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