我有一个向量的 3d 模型,我正在根据 Collada 规范应用一系列加权变换矩阵,并为模型设置动画。动画效果很好,但模型正在缩放,即使我已经验证矩阵中的缩放信息都是相同的并且权重加起来都是 1.0。我还验证了在蒙皮期间我没有两次应用投影矩阵。
最后,我验证了当我绕过蒙皮代码时,模型可以正确缩放。
那么:关于什么可能导致模型缩放(~0.5)有什么明显的吗?
这是相关的着色器代码:
vec3 pos = vec4( 0.0, 0.0, 0.0 );
for( int j = 0; j < 4; j++ )
{
float weight = weights[j];
pos += (jointMats[j] * (jointInvMats[j] * inpos)) * weight;
}
[编辑] 代码更改以反映正确的矩阵/顶点乘法,这要感谢 Christian 和 Andreas 在下面的评论中。但是,原来的问题仍然存在。