void ShadedModel::setWorldMatrix(mat4 mat) { prog->setUniform(mat,"WorldMatrix"); //update normal matrix mat3 normMat( mat[0][0], mat[1][0], mat[2][0], mat[0][1], mat[1][1], mat[2][1], mat[0][2], mat[1][2], mat[2][2]); //glUniformMatrix3fv(normalMatrix, 1, GL_TRUE, normMat); prog->setUniform(normMat, "NormalMatrix"); // update lights updateLightPositions(); //TODO: need to save? }
void VfunctionsTest::testNormJ() { mslam::RealType data[4] = { 1.000000000000000000e+00, 4.125607846284472073e-03, 3.812299856873190788e-03, -1.630117227660913225e-04 }; mslam::RealType targetData[4 * 4] = { 3.157934715637507523e-05, -4.125412418737937729e-03, -3.812119270536476565e-03, 1.630040009994514845e-04, -4.125412418737937729e-03, 9.999671901185915868e-01, -1.572730917349752375e-05, 6.724905854990989835e-07, -3.812119270536476565e-03, -1.572730917349752375e-05, 9.999696770106860644e-01, 6.214201296799663458e-07, 1.630040009994514845e-04, 6.724905854990989835e-07, 6.214201296799663458e-07, 9.999841833808724711e-01 }; mslam::RealMatrix normMat(4, 4, targetData); mslam::RealMatrix r; CPPUNIT_ASSERT_NO_THROW(r = mslam::normJac(mslam::RealVector(data, 4))); CPPUNIT_ASSERT_EQUAL(0, cv::countNonZero(cv::abs(r - normMat) > 1e-10)); }