您的位置:首页 > 编程语言 > Qt开发

To be a senior software engineer【2】(QT+openGL)

2009-07-17 09:51 232 查看
2.单薄的小人
上一节中我们展示了如何创建一个看似立体的场景,当然,我们只是靠一些纹理贴图让它看起来立体,而不是真正的去构建三维模型。在这一节中,我们要在前面的场景中加入一些元素。我们把这些加入的元素想象成人、汽车或者是其他的一些东西。而我们的目标是让它们看起来是在场景中移动。
还记得上一节中我们只绘制了5个面吗,现在,我们把第六个面加进来,但是并不将它作为我们立方体的正面。你可以把第六个面想象成皮影戏中的小人,而我们要完成的工作仅仅是让这个单薄的小人在我们的场景中移动。当然,这看起来十分的简单,当我做完时我也感觉到完成这项工作其实对于学习openGL没有什么实质性的进展,所以我决定在下一节中与大家分享构建多场景,并且加入立体元素的内容。而这一节,也希望你能耐心的看下去,你将从中学会怎样移动一个对象和openGL中的坐标系统。
场景或对象的移动与旋转是在一开始遍完成的。这么说的原因在于,每当我们移动或旋转一个对象时,其实我们在进行updateGL(),即重绘我们的场景和对象。想象一下,我们是如何画一个面的,当时我们用的是确定的一些坐标。这么说我想你应该能反应过来,对象和场景的移动其实就是用到为变量的坐标,我们对这些变量进行操作,然后update一下。
对于坐标系统D. Michael Traub:提供了对 Xvector , Yvector 和 Zvector 的上述解释。

为了更好的理解X, Y 和 Z的旋转,我们看一些例子...

X轴-您正在使用一台台锯。锯片中心的轴从左至右摆放(就像OpenGL中的X轴)。尖利的锯齿绕着X轴狂转,看起来要么向上转,要么向下转。取决于锯片开始转时的方向。这与我们在OpenGL中绕着X轴旋转什么的情形是一样的。(CKer注:这会儿您要把脸蛋凑向显示器的话,保准被锯开了花 ^-^。)

Y轴-假设您正处于一个巨大的龙卷风中心,龙卷风的中心从地面指向天空(就像OpenGL中的Y轴)。垃圾和碎片围着Y轴从左向右或是从右向左狂转不止。这与我们在OpenGL中绕着Y轴旋转什么的情形是一样的。

Z轴-您从正前方看着一台风扇。风扇的中心正好朝着您(就像OpenGL中的Z轴)。风扇的叶片绕着Z轴顺时针或逆时针狂转。这与我们在OpenGL中绕着Z轴旋转什么的情形是一样的。

当你完全明白以上所说的知识时,你会自己编写代码让我们单薄的小人在场景中移动了。不过,是不是觉得一点都不兴奋,你会说,为什么我们不构造一个立体的小人呢...
下面我为下一节做些铺垫,我们将会探讨:

①构建一个三维场景,且里面的物体也是立体的,我们的小人也是立体的。如果我们构造的物体看起来都差不多,我们会考虑使用displayList显示列表
②构建其他的三维场景,并且我们可以在需要的时候切换这些场景。这里,我们学会构建一些类,用它来储存我们的场景信息
③从文件读入我们的三维场景,当然,文件中保存了我们所需要的所有信息
④一些基本图形的绘制简介,包括圆柱、贝塞尔曲面(这些都仅作介绍)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: