什么是模型Bone
模型bone是一个表示3D模型中一个mesh相对于其他bone的位置的矩阵。
在XNA Framework中,Model类表示整个模型。而Model中每个独立的mesh都对应一个ModelMesh。每个ModelMesh包含一个ParentBone,这个ParentBone控制相对于模型的位置和朝向。Model有一个Root bone,它决定了模型的位置和朝向。
每个ModelBone都有一个parent和许多children。模型对象的root bone是最终的parent。它的children是ModelMesh对象的bone-而这个ModelMesh对象可能还有其他ModelMesh bones作为它的children。对于给定的一族bone,旋转parent bone也会导致旋转它的children和这个children的children。每个bone都有一个变换矩阵(叫做Transform)定义相对于parent bone的位置和旋转。这个位置和旋转作用于ModelMesh 中的所有顶点(例如,连接到这个bone的所有顶点)。要对一个bone施加动画,你需要将默认bone变换乘以一个新矩阵。当绘制ModelMesh时,世界矩阵就是基于这个bone变换的。
在绘制过程中加入变换的bone的最简单方法是使用CopyAbsoluteBoneTransformsTo方法。这个方法提取相对的bone变换,并将这个变换最终变为相对于模型Root bone的变换(译者注:即绝对bone变换)。然后返回这些变换的拷贝。当你绘制每个ModelMesh时,你可以使用绝对bone变换作为世界矩阵的第一个部分。通过这种方式,你无需考虑parent bone和它们之间的联系。
发布时间:2009/6/29 上午7:56:27 阅读次数:7194