|
这是superbible里面第八章的那个TOON示例里的一段代码:
M3DMatrix44f mModelViewMatrix;
M3DMatrix44f mInvertedLight;
M3DVector3f vNewLight;
M3DVector3f vNormal;
m3dInvertMatrix44(mInvertedLight, mModelViewMatrix);
m3dTransformVector3(vNewLight, vLightDir, mInvertedLight);
vNewLight[0] -= mInvertedLight[12]; //为什么要减去这个值????????????
vNewLight[1] -= mInvertedLight[13]; //为什么要减去这个值????????????
vNewLight[2] -= mInvertedLight[14]; //为什么要减去这个值????????????
m3dNormalizeVector(vNewLight);
其中:
void m3dTransformVector3(M3DVector3f vOut, const M3DVector3f v, const M3DMatrix44f m)
{
vOut[0] = m[0] * v[0] + m[4] * v[1] + m[8] * v[2] + m[12];// * v[3];
vOut[1] = m[1] * v[0] + m[5] * v[1] + m[9] * v[2] + m[13];// * v[3];
vOut[2] = m[2] * v[0] + m[6] * v[1] + m[10] * v[2] + m[14];// * v[3];
//vOut[3] = m[3] * v[0] + m[7] * v[1] + m[11] * v[2] + m[15] * v[3];
}
|
|