[英]glTranslatef gets messed up after glRotatef
我是 PyOpenGL 的新手。 我使用它编写了一个简单的代码来显示一个立方体,您可以使用键盘在它周围导航。 但是,我注意到在调用 glRotatef 命令后,它会改变您的视角,而不是对象的位置。 但是, glTranslatef 不适用于透视,而是文字坐标系。 换句话说,在调用 glRotatef 命令 90* 之后,本来可以让您向前移动的 glTranslatef 命令现在将您向左移动。 有没有像 glTranslatef 这样的函数,只是它随着旋转而变化,所以你不会得到奇怪的动作,或者你可以做的某种解决方法来改变你基于旋转传递给 glTranslatef 的值?
glTranslate
和glRotate
等操作定义了一个(平移或旋转)矩阵,并将当前矩阵乘以新矩阵。
矩阵乘法不是可交换的。 如果你想旋转模型并独立于旋转平移模型,那么你必须在平移之前进行旋转,分别将平移矩阵乘以旋转矩阵:(OpenGL矩阵乘法必须从右到左读取):
modelmatrix = translation * rotation
分别在glRotate
之前glTranslate
:
glTranslate(x, y, z)
glRotate(angle, ax, ay, az)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.