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

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

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

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

最佳答案

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

关于opengl - GPU 骨骼动画和法线。有没有快速的方法来获得转置(逆(m))?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48104096/

10-10 23:22