什么是模型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

2006 - 2024,推荐分辨率 1024*768 以上,推荐浏览器 Chrome、Edge 等现代浏览器,截止 2021 年 12 月 5 日的访问次数:1872 万 9823 站长邮箱

沪 ICP 备 18037240 号-1

沪公网安备 31011002002865 号