2016-09-03 55 views
0

我正在做两个对象在OpenGL的旋转。其中一个工作:GLM - 旋转使对象消失

 Model1 = glm::translate(...); 
     Model1 = glm::scale(...); 
     Model1 = glm::rotate(Model1, 90 , glm::vec3(1,0,0)); 

和其中一个犯规:

 Model2 = glm::translate(...); 
     Model2 = glm::scale(...); 
     Model2 = glm::rotate(Model2, 90 , glm::vec3(0,0,0)); 

这让我的对象消失。

我认为这是由于乘以0(或相似)造成的。 那么,我应该如何表示不轮换?

轴角是一种使用旋转的好方法,或者应该将它们存储为四元数并使用不同的函数,或者每次旋转时都将其转换回角度轴?

+1

为什么不移除“Model2 = glm :: rotate(Model2,90,glm :: vec3(0,0,0));”? – robor78

+0

原因我在** n **对象的循环中执行它,并且我想要每次应用旋转,即使它的旋转类似于'glm :: rotate(Model2,90,glm :: vec3(0, 0,0));'(物体是可旋转的,我必须每次检查是否没有这种消失的情况) –

回答

4

那么,我该如何表示没有旋转?

以0(而不是90)的角度。不要通过退化旋转轴。