我有一个程序,在其中显示一个对象。
首先我从文件中加载位置p.x,p.y,p.z和比例s.x,s.y,s.z。
然后我将它们应用于4x4 ModelMatrix,并对其执行许多平移和缩放操作。
当我第一次加载对象时,我使用p和s的值:
现在的问题是,重新加载程序后,对象不会出现在我保存它们的位置,而是一些随机的位置。(特别是翻译) 我是否错误地组合了变换 (在平移中添加x、y、z,在缩放中乘以)?
当我第一次加载对象时,我使用p和s的值:
modelMatrix = glm::mat4(1.0));
/*Translations*/
modelMatrix = glm::translate(modelMatrix, glm::vec3(p.x, p.y, p.z));
modelMatrix = glm::scale(modelMatrix, glm::vec3(s.x, s.y, s,z));
在程序中,我进行了缩放和平移操作,然后将p和s值保存回文件。
void Display::Translate( double x, double y, double z)
{
modelMatrix = glm::translate(modelMatrix, glm::vec3(x,y,z));
p.x += x; //that way p is composition of all translations
p.y += y;
p.z += z;
}
void Display::Scale( double x, double y, double z)
{
modelMatrix = glm::scale(modelMatrix, glm::vec3(x,y,z));
s.x *= x; //that way s is composition of all scalings
s.y *= y;
s.z *= z;
}
现在的问题是,重新加载程序后,对象不会出现在我保存它们的位置,而是一些随机的位置。(特别是翻译) 我是否错误地组合了变换 (在平移中添加x、y、z,在缩放中乘以)?