游戏引擎动画系统中蒙皮与骨骼的映射关系|local本地坐标系与model模型坐标系|计算机图形学

本文参考于GAMES104课程动画系统一节,对蒙皮skin和关节joint对于本地坐标系和模型坐标系间的变换做出解释

本文仅代表作者见解,如解释有误或其他观点欢迎讨论
也欢迎直接去GAMES104课程学习

image
蒙皮动画中,skin是与joint相邦定的,他们之间的关系如下:
image
下面对这些变量做出解释(用V表示蒙皮动画中与关节绑定的一个skin结点,用J表示关节)
V和J受2组状态影响:
1.绑定pose下的初态和动画进行到时间t时刻的状态
2.本地(local)坐标系下和模型(model)坐标系下的状态
可以得到下面这张状态表

V在初态下 V在时间t下 J在初态下 J在时间t下
模型坐标系 image image image image
本地坐标系 imageimage image

其中V和T在初态下模型坐标系的值是已知的,我们最终想通过公式得到模型坐标系下t时刻V的位置.
需要用到的公式如下:
image
V在模型坐标的位置(t时间)=J在模型坐标的位置(t时间)*V在本地坐标的位置

image
J在模型坐标系下(时间t)=根节点在时间t下的值通过结点累加到当前Joint
image
V在本地坐标的位置(t时间)恒等于V在初态下本地坐标的位置
即在本地坐标系下V与J的相对位置是不会变的
image
V在模型坐标的位置(初态)=J在模型坐标位置(初态)*V在本地坐标的位置(初态)
image
通过公式④我们可以推出公式⑤,也就是V在初态下本地坐标的位置=J在初态下模型坐标位置的逆
*V在初态下模型坐标的位置

可以汇总为这样一张表:image

通过①-⑤,我们最终得到这样一个公式image
V在模型坐标的位置(t时间)
=J在模型坐标的位置(t时间) * V在本地坐标的位置
=Inverse Bind Pose Matrix*J在模型坐标的位置(初态)

其中的Inverse Bind Pose Martrix就是Kjimage

Kj是提前算好的,并乘以一个模型坐标系到世界坐标系的转换矩阵,在数据结构中提前存好image

posted @ 2022-06-28 23:34  TomoyaAT  阅读(296)  评论(0)    收藏  举报