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...
CopyTransformModifier3D
继承: BoneConstraint3D < SkeletonModifier3D < Node3D < Node < Object
对骨骼应用变换的 SkeletonModifier3D,变换复制自参考骨骼。
描述
从通过 BoneConstraint3D.set_reference_bone() 指定的骨骼上复制变换,将所复制的变换应用到通过 BoneConstraint3D.set_apply_bone() 设置的骨骼上,并可使用一些遮罩和选项对这个过程进行调整。
根据 set_relative()(相对)和 set_additive()(叠加)的组合,有四种方式可以应用该变换:
相对 + 叠加:
提取相对于静止姿态的参考姿态,并将其添加到目标骨骼的姿态上。
相对 + 非叠加:
提取相对于静止姿态的参考姿态,并将其添加到目标骨骼的静止姿态上。
非相对 + 叠加:
提取参考姿态的绝对姿态,并将其添加到目标骨骼的姿态上。
非相对 + 非叠加:
提取参考姿态的绝对姿态,并将其替换目标骨骼的姿态。
注意:相对选项仅当 BoneConstraint3D.get_reference_type() 为 BoneConstraint3D.REFERENCE_TYPE_BONE 时可用。另见 ReferenceType。
属性
|
方法
BitField[AxisFlag] |
get_axis_flags(index: int) const |
BitField[TransformFlag] |
get_copy_flags(index: int) const |
BitField[AxisFlag] |
get_invert_flags(index: int) const |
is_additive(index: int) const |
|
is_axis_x_enabled(index: int) const |
|
is_axis_x_inverted(index: int) const |
|
is_axis_y_enabled(index: int) const |
|
is_axis_y_inverted(index: int) const |
|
is_axis_z_enabled(index: int) const |
|
is_axis_z_inverted(index: int) const |
|
is_position_copying(index: int) const |
|
is_relative(index: int) const |
|
is_rotation_copying(index: int) const |
|
is_scale_copying(index: int) const |
|
void |
set_additive(index: int, enabled: bool) |
void |
set_axis_flags(index: int, axis_flags: BitField[AxisFlag]) |
void |
set_axis_x_enabled(index: int, enabled: bool) |
void |
set_axis_x_inverted(index: int, enabled: bool) |
void |
set_axis_y_enabled(index: int, enabled: bool) |
void |
set_axis_y_inverted(index: int, enabled: bool) |
void |
set_axis_z_enabled(index: int, enabled: bool) |
void |
set_axis_z_inverted(index: int, enabled: bool) |
void |
set_copy_flags(index: int, copy_flags: BitField[TransformFlag]) |
void |
set_copy_position(index: int, enabled: bool) |
void |
set_copy_rotation(index: int, enabled: bool) |
void |
set_copy_scale(index: int, enabled: bool) |
void |
set_invert_flags(index: int, axis_flags: BitField[AxisFlag]) |
void |
set_relative(index: int, enabled: bool) |
枚举
flags TransformFlag: 🔗
TransformFlag TRANSFORM_FLAG_POSITION = 1
如果设置,则会允许复制位置。
TransformFlag TRANSFORM_FLAG_ROTATION = 2
如果设置,则会允许复制旋转。
TransformFlag TRANSFORM_FLAG_SCALE = 4
如果设置,则会允许复制缩放。
TransformFlag TRANSFORM_FLAG_ALL = 7
如果设置,则会允许复制位置、旋转、缩放。
flags AxisFlag: 🔗
AxisFlag AXIS_FLAG_X = 1
如果设置,则会允许处理 X 轴。
AxisFlag AXIS_FLAG_Y = 2
如果设置,则会允许处理 Y 轴。
AxisFlag AXIS_FLAG_Z = 4
如果设置,则会允许处理 Z 轴。
AxisFlag AXIS_FLAG_ALL = 7
如果设置,则会允许处理所有轴。
属性说明
修改器中设置的数量。
方法说明
BitField[AxisFlag] get_axis_flags(index: int) const 🔗
返回索引为 index 的设置的轴标志。
BitField[TransformFlag] get_copy_flags(index: int) const 🔗
返回索引为 index 的设置的复制标志。
BitField[AxisFlag] get_invert_flags(index: int) const 🔗
返回索引为 index 的设置的翻转标志。
bool is_additive(index: int) const 🔗
如果索引为 index 的设置启用了加法选项,则返回 true。
bool is_axis_x_enabled(index: int) const 🔗
如果索引为 index 的设置的启用标志中存在 X 轴对应的标志,则返回 true。另见 set_axis_flags()。
bool is_axis_x_inverted(index: int) const 🔗
如果索引为 index 的设置的翻转标志中存在 X 轴对应的标志,则返回 true。另见 set_invert_flags()。
bool is_axis_y_enabled(index: int) const 🔗
如果索引为 index 的设置的启用标志中存在 Y 轴对应的标志,则返回 true。另见 set_axis_flags()。
bool is_axis_y_inverted(index: int) const 🔗
如果索引为 index 的设置的翻转标志中存在 Y 轴对应的标志,则返回 true。另见 set_invert_flags()。
bool is_axis_z_enabled(index: int) const 🔗
如果索引为 index 的设置的启用标志中存在 Z 轴对应的标志,则返回 true。另见 set_axis_flags()。
bool is_axis_z_inverted(index: int) const 🔗
如果索引为 index 的设置的翻转标志中存在 Z 轴对应的标志,则返回 true。另见 set_invert_flags()。
bool is_position_copying(index: int) const 🔗
如果索引为 index 的设置的复制标志中存在位置对应的标志,则返回 true。另见 set_copy_flags()。
bool is_relative(index: int) const 🔗
如果索引为 index 的设置启用了相对选项,则返回 true。
bool is_rotation_copying(index: int) const 🔗
如果索引为 index 的设置的复制标志中存在旋转对应的标志,则返回 true。另见 set_copy_flags()。
bool is_scale_copying(index: int) const 🔗
如果索引为 index 的设置的复制标志中存在缩放对应的标志,则返回 true。另见 set_copy_flags()。
void set_additive(index: int, enabled: bool) 🔗
将索引为 index 的设置的叠加选项设置为 enabled。主要影响对 BoneConstraint3D.set_apply_bone() 施加变换的过程。
如果将 enabled 设置为 true,则会将处理后的变换叠加到当前应用骨骼的姿势之上。
如果将 enabled 设置为 false,则会将当前应用骨骼的姿势替换为处理后的变换。不过如果将 set_relative() 设为 true,则该变换是相对于放松姿势的。
void set_axis_flags(index: int, axis_flags: BitField[AxisFlag]) 🔗
设置复制轴标志。如果标志有效,则会复制对应的轴。
void set_axis_x_enabled(index: int, enabled: bool) 🔗
如果 enabled 为 true,则会复制 X 轴。
void set_axis_x_inverted(index: int, enabled: bool) 🔗
如果 enabled 为 true,则会翻转 X 轴。
void set_axis_y_enabled(index: int, enabled: bool) 🔗
如果 enabled 为 true,则会复制 Y 轴。
void set_axis_y_inverted(index: int, enabled: bool) 🔗
如果 enabled 为 true,则会翻转 Y 轴。
void set_axis_z_enabled(index: int, enabled: bool) 🔗
如果 enabled 为 true,则会复制 Z 轴。
void set_axis_z_inverted(index: int, enabled: bool) 🔗
如果 enabled 为 true,则会翻转 Z 轴。
void set_copy_flags(index: int, copy_flags: BitField[TransformFlag]) 🔗
设置处理变换操作的标志。如果标志有效,则会处理变换操作。
注意:如果旋转仅对一个轴有效,就会考虑有效轴的滚转值。如果旋转对两个轴有效,就会丢弃无效轴的滚转值。
void set_copy_position(index: int, enabled: bool) 🔗
如果 enabled 为 true,则会复制位置。
void set_copy_rotation(index: int, enabled: bool) 🔗
如果 enabled 为 true,则会复制旋转。
void set_copy_scale(index: int, enabled: bool) 🔗
如果 enabled 为 true,则会复制缩放。
void set_invert_flags(index: int, axis_flags: BitField[AxisFlag]) 🔗
设置翻转轴的标志。如果标志有效,则会复制该轴。
注意:缩放翻转意味着对数值取倒数,并不是负数缩放。例如将 2.0 翻转就是 0.5。
注意:旋转翻转会翻转四元数的元素。例如,双轴反转会翻转每个轴的滚转,而三轴反转会翻转最终朝向。不过请注意,仅翻转一个轴可能会导致未翻转轴的意外旋转,这是由于四元数的特性所导致的。
void set_relative(index: int, enabled: bool) 🔗
将索引为 index 的设置的相对选项设置为 enabled。
如果将 enabled 设置为 true,则提取并应用的变换是相对于放松姿势的。
如果将 enabled 设置为 false,则提取到的变换是绝对的。