Skeleton3D
包含骨骼层级结构的节点,用于创建 3D 骨骼动画。
描述
Skeleton3D 提供了管理骨骼层级结构的接口,包括姿势、放松姿势和动画(见 Animation)。它还可以使用布娃娃物理。
骨骼相对于骨架的整体变换由骨骼的姿势决定。骨骼的放松姿势定义的是骨骼姿势的初始变换。
请注意,下文的“全局姿势”是指骨骼相对于骨架的整体变换,因此并不是骨骼的实际全局/世界变换。
要设置不同类型的反向运动学,请考虑使用 SkeletonIK3D,或者添加一个子节点并在 Node._process 中实现自定义 IK。
教程
属性
| ||
| ||
|
方法
信号
bone_enabled_changed ( int bone_idx )
目前没有这个信号的描述。请帮我们贡献一个!
bone_pose_changed ( int bone_idx )
当该 Skeleton3D 节点中的任一骨骼,改变了它们的姿势时,就会发出这个信号。这用于通知依赖骨骼位置的节点,Skeleton3D 中的任一骨骼已经改变了它们的变换/姿势。
pose_updated ( )
目前没有这个信号的描述。请帮我们贡献一个!
show_rest_only_changed ( )
目前没有这个信号的描述。请帮我们贡献一个!
常量
NOTIFICATION_UPDATE_SKELETON = 50
属性说明
bool animate_physical_bones = true
目前没有这个属性的描述。请帮我们贡献一个!
float motion_scale = 1.0
与 3D 位置轨道动画相乘。
注意:除非这个值是 1.0
,否则动画中的键值将与实际位置值不匹配。
bool show_rest_only = false
目前没有这个属性的描述。请帮我们贡献一个!
方法说明
void add_bone ( String name )
添加骨骼,名称为 name
。get_bone_count 将成为该骨骼的索引。
void clear_bones ( )
清除这个骨架上的所有骨骼。
void clear_bones_global_pose_override ( )
移除骨架中所有骨骼上的全局姿势覆盖。
Skin create_skin_from_rest_transforms ( )
目前没有这个方法的描述。请帮我们贡献一个!
int find_bone ( String name ) const
返回名称与 name
匹配的骨骼的索引。
void force_update_all_bone_transforms ( )
强制更新该骨架中所有骨骼的变换/姿势。
已废弃。请勿使用。
void force_update_bone_child_transform ( int bone_idx )
强制更新索引为 bone_idx
的骨骼及其所有子项的变换/姿势。
PackedInt32Array get_bone_children ( int bone_idx ) const
返回一个数组,其中包含传入骨骼 bone_idx
的所有子节点的骨骼索引。
int get_bone_count ( ) const
返回骨架中骨骼的数量。
Transform3D get_bone_global_pose ( int bone_idx ) const
返回指定骨骼的整体变换,相对于骨架。由于是相对于骨架的,这不是该骨骼的实际“全局”变换。
Transform3D get_bone_global_pose_no_override ( int bone_idx ) const
返回指定骨骼的整体变换,相对于骨架,不包含任何全局姿势覆盖。由于是相对于骨架的,这不是该骨骼的实际“全局”变换。
Transform3D get_bone_global_pose_override ( int bone_idx ) const
返回 bone_idx
骨骼的全局姿势覆盖变换。
Transform3D get_bone_global_rest ( int bone_idx ) const
返回 bone_idx
骨骼的全局放松变换。
String get_bone_name ( int bone_idx ) const
返回索引为 bone_idx
的骨骼的名称。
int get_bone_parent ( int bone_idx ) const
返回 bone_idx
处的骨骼的父级骨骼索引。如果为 -1,则该骨骼没有父级。
注意:返回的父骨骼索引总是小于 bone_idx
。
Transform3D get_bone_pose ( int bone_idx ) const
返回指定骨骼的姿势变换。
Vector3 get_bone_pose_position ( int bone_idx ) const
返回骨骼在 bone_idx
处的姿势位置。返回的 Vector3 位于 Skeleton3D 节点的局部坐标空间中。
Quaternion get_bone_pose_rotation ( int bone_idx ) const
返回 bone_idx
处骨骼的姿势旋转。返回的 Quaternion 是局部于该骨骼的,且相对于任何父骨骼的旋转。
Vector3 get_bone_pose_scale ( int bone_idx ) const
返回 bone_idx
处骨骼的姿态缩放。
Transform3D get_bone_rest ( int bone_idx ) const
返回骨骼 bone_idx
的放松变换。
PackedInt32Array get_parentless_bones ( ) const
返回一个包含所有无父级的骨骼的数组。另一种看待这一点的方法是,它返回所有骨骼的索引,这些骨骼不依赖于该骨架中的其他骨骼,或不被该骨架中的其他骨骼修改。
int get_version ( ) const
返回骨骼层次结构在该骨架中更改的次数,包括重命名。
骨架版本没有被序列化:只能在 Skeleton3D 的单个实例中使用。
用于使 IK 解算器中的和处理骨骼的其他节点中的缓存失效。
bool is_bone_enabled ( int bone_idx ) const
返回位于 bone_idx
的骨骼是否启用了骨骼姿势。
void localize_rests ( )
将骨架中的所有骨骼都恢复到放松姿势。
void physical_bones_add_collision_exception ( RID exception )
向物理骨骼添加一个碰撞例外。
就像 RigidBody3D 节点一样工作。
void physical_bones_remove_collision_exception ( RID exception )
移除物理骨骼的一个碰撞例外。
就像 RigidBody3D 节点一样工作。
void physical_bones_start_simulation ( StringName[] bones=[] )
让 Skeleton 中的 PhysicalBone3D 节点开始仿真模拟,对物理世界做出反应。
可以传入骨骼名称列表,只对传入的骨骼进行仿真模拟。
void physical_bones_stop_simulation ( )
让 Skeleton 中的 PhysicalBone3D 节点停止仿真模拟。
SkinReference register_skin ( Skin skin )
将给定的 Skin 绑定到 Skeleton。
void reset_bone_pose ( int bone_idx )
将 bone_idx
骨骼设置为放松姿势。
void reset_bone_poses ( )
将所有骨骼都设置为放松姿势。
void set_bone_enabled ( int bone_idx, bool enabled=true )
如果为 false
则为位于 bone_idx
的骨骼禁用姿势,如果为 true
则启用该骨骼姿势。
void set_bone_global_pose_override ( int bone_idx, Transform3D pose, float amount, bool persistent=false )
为 bone_idx
处的骨骼设置全局姿势变换 pose
。
amount
是应用姿势时将使用的插值强度,persistent
决定应用的姿势是否会保留。
注意:姿势变换需要的是全局姿势!要将 Node3D 的世界变换转换为全局骨骼姿势,请将节点的 Node3D.global_transform 的 Transform3D.affine_inverse 乘以所期望的世界变换。
void set_bone_name ( int bone_idx, String name )
目前没有这个方法的描述。请帮我们贡献一个!
void set_bone_parent ( int bone_idx, int parent_idx )
将骨骼索引 parent_idx
设置为 bone_idx
处骨骼的父级。如果为 -1,则该骨骼没有父级。
注意:parent_idx
必须小于 bone_idx
。
void set_bone_pose_position ( int bone_idx, Vector3 position )
将 bone_idx
处的骨骼姿势位置设置为 position
。position
是一个 Vector3,描述局部于 Skeleton3D 节点的位置。
void set_bone_pose_rotation ( int bone_idx, Quaternion rotation )
将 bone_idx
处骨骼的姿势旋转设置为 rotation
。rotation
是一个 Quaternion,描述该骨骼局部坐标空间中相对于任何父骨骼的旋转的旋转。
void set_bone_pose_scale ( int bone_idx, Vector3 scale )
将 bone_idx
处骨骼的姿势缩放设置为 scale
。
void set_bone_rest ( int bone_idx, Transform3D rest )
设置骨骼 bone_idx
的放松变换。
void unparent_bone_and_rest ( int bone_idx )
让位于 bone_idx
的骨骼不再有父级,并将其放松位置设置为之前父级放松时的位置。
© 版权所有 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0). Revision b1c660f7
.
Built with Sphinx using a theme provided by Read the Docs.