2021SC@SDUSC
骨骼(skeleton)由刚性的关节(joint)层阶结构构成。(技术上来说,关节就是动画师直接控制的刚性物体,而骨头只是关节之间的空位。但通常来说,游戏引擎并不关注骨头,只关注关节,所以游戏业界内关节和骨头两个词,通常是相互替代的,当提到骨头时,一般也指代关节。)
·骨骼阶层结构
而骨骼的关节构成层阶结构(如学习笔记二的刚性层阶式动画),也即树结构。选择一个关节作为根,其他关节则是根关节的子孙。以下是人形角色的可能的例子:
Pelvis(骨盆)
LowerSpine(脊椎下部)
MiddleSpine(脊椎中部)
UpperSpine(脊椎上部)
RightShoulder(右肩)
RightElbow(右肘)
RightHand(右手)
LeftShoulder(左肩)
LeftElbow(左肘)
LeftHand(左手)
Neck(脖子)
Head(头)
面部关节
RightThigh(右大腿)
RightKnee(右膝盖)
RightAnkle(右脚踝)
LeftThigh(左大腿)
LeftKnee(左膝盖)
LeftAnkle(左脚踝)
会给每个关节赋予0到N-1的索引。每个关节有且只有一个父关节,在每个关节索引储存其父关节的索引即可表示整个骨骼阶层。
在Flax Engine中由Struct SkeletonNode来描述单个骨骼节点的节点数据,供运行时使用。
[Unmanaged]
[Tooltip("Describes a single skeleton node data. Used by the runtime.")]
public struct SkeletonNode
节点相对于父节点的局部变换
声明
[Tooltip("The local transformation of the node, relative to the parent node.")]
public Transform LocalTransform
此节点的名称
[Tooltip("The name of this node.")]
public string Name
父节点索引。根节点使用值 -1。
[Tooltip("The parent node index. The root node uses value -1.")]
public int ParentIndex
|