跳到主要内容

骨骼动画

骨骼动画顾名思义:操纵骨骼运动,从而带动其他部位运动的动画。 本质上操纵骨骼动画和操纵普通的动画没有区别,只不过操纵对象由操纵物体本身变成操纵物体所关联的骨骼。

示例

使用

创建骨骼动画需要使用专属的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);

API

SkinMesh

Q&A