资源描述:
《opengl 新手实验 指导3new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计算机科学与技术学院&软件学院计算机图形学实验指导书山东大学实验三迷宫实验学时:18学时实验要求:必做实验性质:综合、设计实验类别:专业一.实验目的二.实验环境三.实验内容和要求四.实验指导1. 利用键盘控制场景漫游2.纹理映射3. MD2模型1计算机科学与技术学院&软件学院计算机图形学实验指导书山东大学一.实验目的:1.掌握并学会利用OpenGL开发场景漫游程序的编程方法。2.掌握并学会利用OpenGL纹理映射的方法。3.了解MD2三维模型的文件格式,熟悉并学会读取模型、加载到场景中的方法。4.在项目实践开发过程中,逐步培养综合开发能力、科研钻研能力和创新能力。二.实验环
2、境:硬件环境:P4 CPU 2.0以上PC机,512M以上内存。软件环境:Windows XP,Visual C++ 6.0,OpenGL图形软件包,GLUT开发包。三.实验内容和要求:设计一个OpenGL程序,创建一个三维迷宫,支持替身通过一定交互手段在迷宫中漫游。基本功能包括:1、迷宫应当至少包含10 * 10 个Cell,不能过于简单,下图给出一种示例。2、读取给定的替身模型,加载到场景中。3、键盘方向键控制替身转向与漫游。4、有碰撞检测,替身不应当穿墙。5、支持切换第一视角和第三视角进行观察。6、迷宫场景中的墙、地面等应贴上纹理。扩展功能包括(至少选择一个):1.同时
3、加入二维辅助地图,替身在三维迷宫探索的同时,在小地图中显示已经探索的区域;2.在俯视状态下,可以通过鼠标点选替身需要到达的目的地,通过寻径算法,控制替身自动到达目的地;3.迷宫地图交互编辑功能,例如,可以设计一个二维地图编辑器,根据用户的绘制,拉伸得到三维迷宫场景;4.其他相当难度,可以增加迷宫游戏趣味性的功能(需要通过指导老师认可)完成一份实验报告,说明你所实现的一个扩展功能。2计算机科学与技术学院&软件学院计算机图形学实验指导书山东大学四.实验指导(一)利用键盘控制场景漫游:让我们看一个比较好的使用键盘控制的例子。这一小节我们将建立一个应用程序。这个程序绘制了一个小的居住着
4、雪人的世界。并且我们将用方向键来移动照相机(即移动视点在场景中漫游)。左右方向键,将照相机绕y轴旋转,上下方向键,将照相机前后方向移动。运行结果见下图。这个例子的代码放在下面。首先我们处理初始状态。#include#include#includestaticfloatangle=0.0,ratio;staticfloatx=0.0f,y=1.75f,z=5.0f;staticfloatlx=0.0f,ly=0.0f,lz=‐1.0f;staticGLintsnowman_display_list;注意我们包含了math.
5、h头文件。我们需要计算旋转角。上面变量的含义到后面你就会3计算机科学与技术学院&软件学院计算机图形学实验指导书山东大学清楚了,但我们还是简单的描述下:1:angle:绕y轴的旋转角,这个变量允许我们旋转照相机。2:x,y,z:照相机位置。3:lx,ly,lz:一个向量用来指示我们的视线方向。4:ratio:窗口宽高比(width/height)。5:snowman_display_list:一个雪人的显示列表索引。注意:如果你不愿意用显示列表,你也可以忽略它。接下来,我们用一个公共的函数来处理窗口尺寸。唯一的区别是函数glutLookAt的参数用变量而不是固定的值。gluLoo
6、kAt函数提供了一个简单直观的方法来设置照相机的位置和方向。它有三组参数,每一组由三个浮点型数组成。前三个参数表明照相机的位置,第二组参数定义照相机观察的方向,最后一组表明向上的向量,这个通常设为(0.0, 1.0, 0.0)。也就是说照相机并没有倾斜。如你想看到所有的物体都是倒置的则可以设置为(0.0, ‐1.0, 0.0)。上面提到的变量x,y,z表示照相机位置,因此这三个变量也就对应着函数gluLookAt里的第一组向量。第二组参数观察方向,是通过定义视线的向量和照相机位置相加得到的:LookAtPoint=LineOfSight+CameraPositionvoidch
7、angeSize(intw,inth){//防止被0除.if(h==0)h=1;ratio=1.0f*w/h;//ResetthecoordinatesystembeforemodifyingglMatrixMode(GL_PROJECTION);glLoadIdentity();//设置视口为整个窗口大小glViewport(0,0,w,h);//设置可视空间gluPerspective(45,ratio,1,1000);glMatrixMode(GL_MODELVIEW);glLoadI