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

本文讲解如何在OpenGL中实现平面对象的移动,并介绍了OpenGL坐标系统的理解方式,通过锯片、龙卷风和风扇的例子生动说明X、Y、Z轴的旋转概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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显示列表
②构建其他的三维场景,并且我们可以在需要的时候切换这些场景。这里,我们学会构建一些类,用它来储存我们的场景信息
③从文件读入我们的三维场景,当然,文件中保存了我们所需要的所有信息
④一些基本图形的绘制简介,包括圆柱、贝塞尔曲面(这些都仅作介绍)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值