3

为我的游戏编写硬件蒙皮,也需要为法线设置动画。从这篇文章中我了解到,通常要转换法线,你需要这样的东西:

transformed_normal = transpose(inverse(bone[i])) * normal;

我无法通过制服将第二组预先计算的转置(逆(骨骼))传递给着色器,因为我没有足够的制服。所以我必须在顶点着色器中计算这个 transpose(inverse(bone[i])) (一次又一次地为每一个数千个顶点计算),不是吗?有没有更快的方法来做到这一点?这个操作的一些廉价和肮脏的近似?

编辑:找到这个很酷的解决方案https://stackoverflow.com/a/46518010/9173149

4

1 回答 1

6

处理此问题的典型方法是不在骨骼矩阵中进行缩放。如果骨骼变换只有旋转和平移,则不需要进行反向/转置。

于 2018-01-04T22:02:08.957 回答