OpenGL 物体坐标旋转
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/09/13 04:37:12
OpenGL 物体坐标旋转
我建立了一个飞机模型,并且希望在输入其绕三个轴旋转的时候的角度使它旋转.
但是问题在于,所有的输入变量都没有问题,旋转也正常进行.但是当运行
glRotatef(planerotation[0],1,0,0);
glRotatef(planerotation[1],0,1,0);
glRotatef(planerotation[2],0,0,1);
的时候,我希望每个角度都是针对物体坐标轴进行旋转的.
但是程序运行的时候,只有Z轴旋转是按照物体坐标轴旋转的,X轴虽然旋转中心是在物体中心位置,但是其旋转轴和世界矩阵是平行的,并不会随着物体的旋转而旋转.而Y轴则是根据物体的Z轴旋转得到的新的Y轴旋转,也不是按照物体坐标轴来转.
请问有没有什么方法在OpenGL下面得到一个根据物体坐标系来旋转物体的方式呢?
我建立了一个飞机模型,并且希望在输入其绕三个轴旋转的时候的角度使它旋转.
但是问题在于,所有的输入变量都没有问题,旋转也正常进行.但是当运行
glRotatef(planerotation[0],1,0,0);
glRotatef(planerotation[1],0,1,0);
glRotatef(planerotation[2],0,0,1);
的时候,我希望每个角度都是针对物体坐标轴进行旋转的.
但是程序运行的时候,只有Z轴旋转是按照物体坐标轴旋转的,X轴虽然旋转中心是在物体中心位置,但是其旋转轴和世界矩阵是平行的,并不会随着物体的旋转而旋转.而Y轴则是根据物体的Z轴旋转得到的新的Y轴旋转,也不是按照物体坐标轴来转.
请问有没有什么方法在OpenGL下面得到一个根据物体坐标系来旋转物体的方式呢?
用glPushMatrix和glPopMatrix保存和恢复你希望的变换状态
再问: glPushMatrix之后再POP的话,之间做的所有改动不是都无效了么?是这样的,我做的是个飞机模型,我现在假设飞机水平翻滚了90度,然后飞行员拉升飞机,飞机沿着物体坐标轴旋转了90度,那么应该是这个样子的:
但是我用两个旋转得到的结果却是这样的:第二次的旋转是以和与世界坐标平行的Z坐标轴进行旋转的。
这样子应该怎么办?
再答: 沿着三个轴的变换要用一个矩阵,这个自己算,然后用glMulMatrix 一次性将变换应用到当前绘制,否则你将碰到下面这个问题 http://en.wikipedia.org/wiki/Gimbal_lock
再问: 请问这个矩阵是什么呢?有没有详细一点的教程呢?谢谢
再答: http://nehe.gamedev.net/tutorial/arcball_rotation/19003/ 关于实现,你看看上面那个,数学的部分你可以用那个ARCBALL 中的函数,或者你可以用GLM(http://glm.g-truc.net/)库,但是那个的话你可能需要熟悉GLSL 数学概念的话,你看看这个http://www.cprogramming.com/tutorial/3d/quaternions.html 一般图形学书上应该有的。
再问: glPushMatrix之后再POP的话,之间做的所有改动不是都无效了么?是这样的,我做的是个飞机模型,我现在假设飞机水平翻滚了90度,然后飞行员拉升飞机,飞机沿着物体坐标轴旋转了90度,那么应该是这个样子的:
![](http://img.wesiedu.com/upload/9/8c/98c562650aae3b44fa1340dc4b025309.jpg)
![](http://img.wesiedu.com/upload/e/7c/e7c6cb38900a8648926250dafdbb6c89.jpg)
再答: 沿着三个轴的变换要用一个矩阵,这个自己算,然后用glMulMatrix 一次性将变换应用到当前绘制,否则你将碰到下面这个问题 http://en.wikipedia.org/wiki/Gimbal_lock
再问: 请问这个矩阵是什么呢?有没有详细一点的教程呢?谢谢
再答: http://nehe.gamedev.net/tutorial/arcball_rotation/19003/ 关于实现,你看看上面那个,数学的部分你可以用那个ARCBALL 中的函数,或者你可以用GLM(http://glm.g-truc.net/)库,但是那个的话你可能需要熟悉GLSL 数学概念的话,你看看这个http://www.cprogramming.com/tutorial/3d/quaternions.html 一般图形学书上应该有的。
android opengl 已知物体原空间坐标和旋转过的角度,怎么求出它旋转后的空间坐标,并转换成屏幕坐标
求算法:opengl 绕任意轴旋转后的坐标
关于OPenGL坐标变换的问题,
在OpenGL中,用鼠标控制三维物体旋转后,物体显示不全,不知是何原因,还望大虾们帮忙
求助!OPENGL中屏幕坐标到世界坐标的转换~
OpenGL画球时如何使球心不在坐标原点
3Dmax移动物体时坐标轴不见了怎么办?旋转物体缩放物体都没有坐标、
使用OpenGL怎样获得局部坐标经变换后得到的世界坐标?
opengl使用gluUnProject得到近远剪裁面的世界坐标以后,怎么将世界坐标转换成模型坐标?
如何通过鼠标点击获得鼠标点的三维世界坐标呢?OPENGL
opengl 圆锥(三角形逼近的)纹理贴图,怎么对应纹理坐标
英语翻译对OpenGL中的模型坐标与纹理映射进行了研究,得以在指定区域显示OpenGL纹理,此外通过模版1模版2的导入,