骨骼动画
骨骼动画顾名思义:操纵骨骼运动,从而带动其他部位运动的动画。 本质上操纵骨骼动画和操纵普通的动画没有区别,只不过操纵对象由操纵物体本身变成操纵物体所关联的骨骼。
示例
使用
创建骨骼动画需要使用专属的SkinMesh
,而SkinMesh
和其他 mesh 不同的点在于:
SkinMesh
对应的几何体是内置的JointGeometry
JointGeometry
的创建需要额外传入两个参数- 每个顶点所关联的关节
jointIndices
- 每个关节所占的权重
jointWeights
// 需要注意的是,一个顶点最多关联四个关节。
const geom = new JointGeometry({ jointIndices, jointWeights });- 每个顶点所关联的关节
SkinMesh
除了几何体和材质外,还需要构建Skin
蒙皮(Skin)代表的是关节之间的关系,这里关节在数组中对应的下标和
jointIndices
中的下标是对应的,蒙皮的创建如下:const joint0 = new Joint({ position: new Vector3(0, 0, 0) });
const joint1 = new Joint({ position: new Vector3(4, 0, 0) });
const skin = new Skin({ joints: [joint0, joint1] });
准备好几何体、材质和蒙皮后就能简单创建一个SkinMesh
了:
const skinMesh = new SkinMesh(JointGeometry, Material, Skin);