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

背景知识

模型视图变换

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个整数索引表示。 分别和每个矩阵矩阵调色板的矩阵相乘,然后取加权平均值,即为最终的位置。

吐嘈时间

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

转载于:https://my.oschina.net/chunquedong/blog/304537

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值