我在尝试使用平滑蒙皮为游戏中的网格设置动画时遇到问题。我正在从 Maya 导出网格、关节和所有动画数据,并且它在游戏中正确导入。我还在游戏中将我的关节显示为球体,只是为了确保它们的动画效果正确,而且它们确实如此。将顶点转换为骨骼空间时遇到问题,我不知道为什么。这是我目前正在做的事情的基本概要。
预先计算绑定姿势中每个骨骼的倒数。这里也设置了骨骼层次结构,我只是设置它们的局部矩阵,因为它们的世界矩阵是根据请求计算的。
在关键帧之间插值矩阵,这似乎正在工作,因为球体正在正确设置动画。
将网格顶点从绑定姿势复制到要修改的单独缓冲区中
变换每个顶点:
对于每个顶点
For each influencing bone in vertex Vertex tempvert; tempvert = vertex.position * local bone inverse matrix; tempvert = tempvert * world interpolated bone transform; tempvert *= influence weight; vertex += tempvert;
使用转换后的顶点更新 GPU
我也尝试过切换骨骼的本地和世界变换,但无济于事。我很确定我在做一些愚蠢的事情,我只是想在我拆开我的数学库之前确保是这种情况。
谢谢您的帮助。