SkeletonModifier3D
派生: BoneConstraint3D, BoneTwistDisperser3D, IKModifier3D, LimitAngularVelocityModifier3D, LookAtModifier3D, ModifierBoneTarget3D, PhysicalBoneSimulator3D, RetargetModifier3D, SkeletonIK3D, SpringBoneSimulator3D, XRBodyModifier3D, XRHandModifier3D
能够修改 Skeleton3D 中骨骼的节点。
描述
SkeletonModifier3D 会将父级 Skeleton3D 节点作为目标 Skeleton3D。
如果存在 AnimationMixer,则修改会在 AnimationMixer 的播放处理后执行。
该节点应该用于实现自定义 IK 解算器、约束、骨架物理。
教程
属性
|
||
|
方法
void |
_process_modification() virtual |
void |
_process_modification_with_delta(delta: float) virtual |
void |
_skeleton_changed(old_skeleton: Skeleton3D, new_skeleton: Skeleton3D) virtual |
void |
_validate_bone_names() virtual |
get_skeleton() const |
信号
modification_processed() 🔗
修改完成后通知。
注意:如果要获取修改器修改后的骨骼姿势,必须在触发该信号时使用 Skeleton3D.get_bone_pose() 或 Skeleton3D.get_bone_global_pose()。
枚举
enum BoneAxis: 🔗
BoneAxis BONE_AXIS_PLUS_X = 0
+X 轴对应的枚举值。
BoneAxis BONE_AXIS_MINUS_X = 1
-X 轴对应的枚举值。
BoneAxis BONE_AXIS_PLUS_Y = 2
+Y 轴对应的枚举值。
BoneAxis BONE_AXIS_MINUS_Y = 3
-Y 轴对应的枚举值。
BoneAxis BONE_AXIS_PLUS_Z = 4
+Z 轴对应的枚举值。
BoneAxis BONE_AXIS_MINUS_Z = 5
-Z 轴对应的枚举值。
enum BoneDirection: 🔗
BoneDirection BONE_DIRECTION_PLUS_X = 0
+X 轴对应的枚举值。
BoneDirection BONE_DIRECTION_MINUS_X = 1
-X 轴对应的枚举值。
BoneDirection BONE_DIRECTION_PLUS_Y = 2
+Y 轴对应的枚举值。
BoneDirection BONE_DIRECTION_MINUS_Y = 3
-Y 轴对应的枚举值。
BoneDirection BONE_DIRECTION_PLUS_Z = 4
+Z 轴对应的枚举值。
BoneDirection BONE_DIRECTION_MINUS_Z = 5
-Z 轴对应的枚举值。
BoneDirection BONE_DIRECTION_FROM_PARENT = 6
枚举值,表示从父骨骼指向子骨骼的轴。
enum SecondaryDirection: 🔗
SecondaryDirection SECONDARY_DIRECTION_NONE = 0
Enumerated value for the case when the axis is undefined.
SecondaryDirection SECONDARY_DIRECTION_PLUS_X = 1
+X 轴对应的枚举值。
SecondaryDirection SECONDARY_DIRECTION_MINUS_X = 2
-X 轴对应的枚举值。
SecondaryDirection SECONDARY_DIRECTION_PLUS_Y = 3
+Y 轴对应的枚举值。
SecondaryDirection SECONDARY_DIRECTION_MINUS_Y = 4
-Y 轴对应的枚举值。
SecondaryDirection SECONDARY_DIRECTION_PLUS_Z = 5
+Z 轴对应的枚举值。
SecondaryDirection SECONDARY_DIRECTION_MINUS_Z = 6
-Z 轴对应的枚举值。
SecondaryDirection SECONDARY_DIRECTION_CUSTOM = 7
Enumerated value for an optional axis.
enum RotationAxis: 🔗
RotationAxis ROTATION_AXIS_X = 0
枚举值,表示 X 轴的旋转。
RotationAxis ROTATION_AXIS_Y = 1
枚举值,表示 Y 轴的旋转。
RotationAxis ROTATION_AXIS_Z = 2
枚举值,表示 Z 轴的旋转。
RotationAxis ROTATION_AXIS_ALL = 3
枚举值,表示无约束的旋转。
RotationAxis ROTATION_AXIS_CUSTOM = 4
Enumerated value for an optional rotation axis.
属性说明
如果为 true,则 SkeletonModifier3D 将执行处理。
设置修改的影响。
注意:该值由 Skeleton3D 用来混合,因此 SkeletonModifier3D 应始终仅应用结果的 100% 而不进行插值。
方法说明
void _process_modification() virtual 🔗
已弃用: Use _process_modification_with_delta() instead.
覆盖该虚方法可以实现自定义骨架修改器。你应该在这里执行获取 Skeleton3D 的当前姿势、应用姿势之类的操作。
_process_modification() 不得将 influence 应用于骨骼姿势,因为 Skeleton3D 会自动将影响应用于修改器设置的所有骨骼姿势。
void _process_modification_with_delta(delta: float) virtual 🔗
Override this virtual method to implement a custom skeleton modifier. You should do things like get the Skeleton3D's current pose and apply the pose here.
_process_modification_with_delta() must not apply influence to bone poses because the Skeleton3D automatically applies influence to all bone poses set by the modifier.
delta is passed from parent Skeleton3D. See also Skeleton3D.advance().
Note: This method may be called outside Node._process() and Node._physics_process() with delta is 0.0, since the modification should be processed immediately after initialization of the Skeleton3D.
void _skeleton_changed(old_skeleton: Skeleton3D, new_skeleton: Skeleton3D) virtual 🔗
骨架发生改变时调用。
void _validate_bone_names() virtual 🔗
Called when bone names and indices need to be validated, such as when entering the scene tree or changing skeleton.
Skeleton3D get_skeleton() const 🔗
Returns the parent Skeleton3D node if it exists. Otherwise, returns null.