我有一个三维矢量模型,我根据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在下面的评论中改变了[EDIT]代码以反映正确的矩阵/顶点乘法。但是,最初的问题仍然存在。