码迷,mamicode.com
首页 > 其他好文 > 详细

骨骼蒙皮动画中的坐标变换

时间:2014-08-20 00:09:56      阅读:344      评论:0      收藏:0      [点我收藏+]

标签:java   os   io   ar   cti   时间   on   sp   

背景知识

模型视图变换

OpenGL没有视图矩阵,只有模型视图矩阵,一般游戏引擎都会抽象出视图矩阵的。
总的变换为:

v` = projection * view * mode * v;

父子节点变换

v` = worldMatrix * v = (parentWorldMatrix * localMatrix) * v;

骨骼变换

其实真正表示的关节,而不是骨头,只是骨头比较好理解。

默认姿态网格对象坐标空空变换到骨骼局部坐标空间(offsetMatrix)。

完了后又从骨骼空间变换回动画姿态世界坐标(nodeWroldMatrix)。

v`= nodeWroldMatrix * offsetMatrix * v;

这里有一个bindShapeMatrix不知道是什么意思,猜测是网格对象绑定骨骼时的偏移,即:

offsetMatrix = inverseWroldMatrix(逆世界变换) * bindShapeMatrix;

由于MVP(模式视图矩阵)矩阵已经包含了M矩阵,所以在nodeWroldMatrix矩阵中必须排除最顶层变换,或者将MVP变为VP。

v` = projection * view * nodeWroldMatrix * offsetMatrix * v;

蒙皮变换

皮肤的变换,把每个nodeWroldMatrix * offsetMatrix的最终矩阵组成的列表叫做矩阵调色板。
每个皮肤顶点关联多个骨骼,也就是关联多个矩阵调色板中的矩阵,实现的时候一般用4个整数索引表示。
分别和每个矩阵矩阵调色板的矩阵相乘,然后取加权平均值,即为最终的位置。

吐嘈时间

这些概念大部分是我猜测出来的,基本搜不到这方面的资料。

骨骼蒙皮动画中的坐标变换,布布扣,bubuko.com

骨骼蒙皮动画中的坐标变换

标签:java   os   io   ar   cti   时间   on   sp   

原文地址:http://my.oschina.net/chunquedong/blog/304537

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!