基于OpenGL的虚拟校园漫游系统的设计与实现

来源 :计算机时代 | 被引量 : 0次 | 上传用户:mikezhai128
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:介绍了虚拟校园漫游系统的设计与开发技术,包括:OpenGL绘图窗口的创建;实体建模;纹理设置和贴图;界面和树的实现;虚拟仿真——利用VC++6.0开发平台,编制程序实现虚拟校园的漫游。该系统可以用于校园三维漫游、校园管理、校园规划等领域。
  关键词:虚拟现实;OpenGL;实体建模;虚拟校园
  
  0 引言
  
  虚拟校园作为虚拟技术的一个应用,需运用计算机图形学以及图像处理技术结合三维可视化语言在屏幕上显示校园环境,并实现漫游、人机交互等功能。本文以太原理工大学阳泉学院校区为虚拟空间,主要实现对地形和建筑的建模,以及全方位的观测,并实现在虚拟空间中的漫游功能,使观察者无需到达实地就有身临其境的感觉。
  
  1 虚拟校园漫游系统的设计
  
  虚拟校园漫游系统功能实用,主要包括:图形操作基本功能和手动漫游功能。
  (1)图形操作基本功能
  主要实现地图和景点图片的浏览功能,提供全景、放大、缩小等基本的地图操作功能。
  (2)手动漫游功能
  该系统是为方便学校管理规划而设计开发的,它提供了多种交互手段,用户和系统的交互主要通过鼠标和键盘进行。通过w、a、s、d键上下左右移动,利用鼠标控制前进的方向,用户可以有效地定位检索出校园最新信息。
  
  2 虚拟校园实体建模实现
  
  虚拟校园实体建模是系统最主要的部分,内容包括:资料的收集、底图的生成、立体模型的制作、三维贴图到校园立体图的绘制等。我们通过数码相机采集贴图,在photoshop cs2中对贴图进行处理,得到素材,在VC中建立函数,套用OpenGL函数库构建模型。
  


  2.1虚拟校园实体模型的构成
  本文对学校做了建模,主要分为四个层次:第一层(y=0.0;y为地形的高度),包括二食堂、一号教学楼、实验楼、二号教学楼;第二层(y=0.6),在这一层中只有一号宿舍楼;第三层(y=1.2),二号宿舍楼和大食堂;第四层(y=1.8),在这一层中包括三号宿舍楼、四号宿舍楼和操场。
  2.2建模方法
  利用OpenGL能够绘制点、线和多边形,应用这些基本的形体,可以构造出几乎所有的三维模型。考虑到渲染速度,本文主要采用了三角形进行建模。在OpenGL中,可以编写代码创建三角形,但是创建时要指定三角形的三个顶点,这样的话要写很多代码且使整个建模过程产生大量的冗余代码。为了解决这一问题,本文采用了读取文本文档的方法来减少代码的冗余。在建模过程中又定义了绘制台阶函数DrawStair()、侧面体函数DrawWall()、横面体函数DrawFloor()来完成各种模型的建立。
  2.3虚拟校园最终模型构建
  


  虚拟校园最终模型的构建都是利用函数DrawGLScene()完成的。该函数在主函数WinMain()中被循环调用,直到程序退出为止。绘制效果如图1所示。
  
  3 虚拟校园漫游系统的开发过程
  
  3.1设置像素格式
  OpenGL的像素格式告诉系统在利用OpenGL绘制图形时所采用的颜色模式、颜色的位数。
  3.2创建图形操作描述表
  创建图形操作描述表并启用它后,才能调用OpenGL函数在窗口内进行各种图形操作。创建图形操作描述表利用MFC中视类(CView)的消息OnCreat()实现。
  3.3 OpenGL窗口创建
  首先是打开VC++6.0,然后创建一个新工程。创建一个新的Win32程序后,链接OpenGL库文件即可。
  3.4纹理与贴图
  纹理贴图就是利用数码相机将拍摄的实物照片作为所建立三维模型的纹理“贴”至相应的二维物体模型,使模拟的地物更具有真实感。
  3.4.1纹理设置
  比如绘制一面砖墙,就可以用一幅真实的砖墙图像或照片作为纹理贴到一个矩形上,这样,一面逼真的砖墙就画好了。下面介绍纹理创建的方法。
  首先,创建一个文件句柄。句柄用来鉴别资源,它使程序能够访问此资源。开始先将句柄设为NULL,然后通过以下三个函数实现纹理设置。
  AUX_RGBImageRec*LoadBMP(char *Filename)//载入位图图像 auxDIBImageLoad(Filename)//读取图像数据并将其返回 int LoadGLTextures()//栽入位图(调用上面的代码)并转换成纹理
  3.4.2贴图制作
  在创建虚拟校园的过程中,对建筑物的数据采集非常关键。由于在虚拟校园系统中各个建筑物的外观不一样,贴图也不—样,这对设计是—个难点。用数码相机取图片时,因为采集的是正面图,所以要保持和图在一个水平线上。
  


  对采集来的数码相片我们用photoshop加以处理,比如对台阶贴图进行处理后,台阶的颜色下浅上深,产生了层次感,如图2所示。对各个楼的柱子贴图都要进行处理,使之看起来有立体感,如图3所示。另外本文采用的贴图都是正方形的,有的贴图还需要重复粘贴。比如学院的草地边的条砖路,它的贴图做到了左右上下都对称,重合在一起显得比较协调。贴图处理后效果如图4所示。
  3.5树的实现
  树是通过定义一个类Tree来实现的。由于树的形状不像建筑那样规则,因此它的构造也是相当复杂的。本文中树的建模过程如下。
  3.5.1树叶纹理的制作
  树叶纹理的制作是实现树的难点。树叶的纹理是由两张贴图生成的,一张是纹理的透明贴图branchAlphal.bmp,另一张是纹理的背景贴图branchl.bmp。通过两张贴图的合成生成树叶的纹理,可用bool Tree::MakeAlphaTextureBind(char*TextureFileName,char*AlphaFileName,unsigned int*TexturelD)函数实现。
  3.5.2树的模型构建
  树的模型构建分两个部分,树杆的构建和树枝的构建。可用以下函数实现。
  void Tree::Draw3DTree(float SzTree)//绘制树杆
  void Tree::DrawGreenTree()//绘制树枝
  void Tree::DrawTop(float width,float height)//绘制树顶
  3.6虚拟校园漫游系统界面的实现
  本系统界面是作为一个类来实现的,主要是通过使用OpenGL绘图函数来构建。界面的搭建可分为三层。第一层:界面主背景,主要由一个四边形加上背景纹理贴图构成。第二层:选项菜单和说明层,在本层中主要是根据鼠标的位置和单击事件来选择不同的纹理贴图给人以变换的感觉,该层也是界面中最主要的一层。第三层:鼠标层,鼠标同样是由四边形加上背景纹理贴图构成,但纹理贴图方式是由透明加背景色实现。界面绘制效果如图5所示。
  
  4 虚拟仿真
  
  4.1虚拟校园漫游系统的实现
  虚拟校园漫游是交互性技术的重要体现。解决方法如下:①根据用户的指令旋转并变换镜头位置。②围绕原点,以与镜头相反的旋转方向来旋转世界(让人产生镜头旋转的错觉)。③以与镜头平移方式相反的方式来平移世界(让人产生镜头移动的错觉)。
  4.1.1镜头的旋转
  镜头的旋转是靠获取鼠标事件事实现的。在这里用到了三个全局变量和一个常量,heading是用来记录左右旋转的角度,yrot用来传递给渲染函数这个值。lookupdown用来记录上下旋转的角度。
  4.1.2镜头的平移
  镜头的平移是靠获取键盘事件来实现的。镜头的平移分为左移、右移、前进、后退,分别对应键盘的A、D、W、S键。
  4.2碰撞检测
  碰撞检测就检测观察者在行进中是否遇到了阻碍。主要实现办法是根据不同的地形或建筑设定不同的高度值(也就是Y值),然后在行进中检测Y值的变化,如果在行进的某一瞬间Y值的变化超过某一范围则限制x或z值的变化。
  
  5 结束语
  
  本文以虚拟校园的实现为研究对象,利用虚拟现实技术绘制了虚拟校园的三维模型,编程实现了虚拟校园的漫游。但有些方面还存在不足,譬如只完成了室外建模,并没有对室内进行建模;碰撞检测算法不太精确造成了资源的浪费等。
其他文献
摘 要:文章给出了在民族古籍数字化保护系统操作中典型的并发事件(丟失更新)解决的两种封锁机制。在操作时,采用适当的封锁机制,锁定需要修改的“行”,防止并发事件的产生,以保证数据库的完整性和一致性。  关键词:民族古籍数字化保护系统;并发控制;悲观封锁;乐观封锁    0 引言    在民族古籍数字化保护系统的数据库中,多个用户程序(如查询和著录)可以并行地存取数据库,如果不对并发操作进行控制,会出
期刊
摘 要:VNC是由A7&T剑桥实验室开发的一个强大的远程桌面共享工具,能够让多个用户通过复杂的互联网环境实时观看到远端的服务器桌面并进行操作。但VNC系统的星型结构在实际应用中很容易造成服务器端网络的拥塞,使得可用性大大降低。文章对VNC系统进行了改进,增加了音/视频方面的支持,增强了安全性能,并引进了P2P技术,利用现有网络架构,通过优化和改进多媒体数据流的传送技术,实现了一个低成本高效率的实时
期刊
摘 要:现代教育技术在教学中的应用越来越多,多媒体课件在教学中的作用日益明显,制作多媒体课件也就成为教师必须掌握的一门技术。很多教师制作课件都选择单一工具软件(PowerPoint或Authorware),在制作过程中难免存在这样或那样的不足。而把PowerPoint和Authorware结合使用可以达到最佳效果。  关键词:PowerPoint;Authorware;OLE对象;文件打包    
期刊
摘要:旅行商问题(TSP)是遗传算法得以成功应用的典型问题。文章对遗传算法加以改进,提出了新的选择策略和交叉算子,并且引入了兄弟竞争的策略来加快收敛速度和全局搜索能力。把该算法应用在不同类型的TSP问题的求解上,表现出了比传统遗传算法更好的收敛性和计算效率。说明改进算法是有效的。关键词:旅行商问题(TSP);遗传算法(GA);交叉算子;兄弟竞争策略    0 引言    旅行商问题(Traveli
期刊
摘 要:在社会信息化程度不断提高的今天,软件开发者也在不断探索着新的软件开发方法,希望能使软件开发更加简单有效,在这种大前提下,敏捷开发应运而生。敏捷开发指的是一种面临迅速变化的需求去快速开发软件的方法。Rubyon Rails是一种解释型的方便快捷的面向对象脚本语言,利用Ruby语言和Rail相框的强大功能,可以使、Web开发更加轻松自如。在不久的将来,Rails技术会给我们的开发带来更多的进步
期刊
摘 要:介绍了利用VBA在Excel中编写“宏”,生成树状表格的方法。借助于该方法可以提高制作表格的效率。  关键词:VBA Excel;树状表格;控件;插入;合并    0 引言    在实际应用中,我们经常会用到形如图1(表式1和表式2)所示的表格形式。因为这种类型的表格可以被抽象为一种树状结构,所以也称为树状表格山。这种树状形式的表格应用范围很广,它可以是整个表格,也可以是表格中的某些部分(
期刊
摘要:针对无线Ad Hoc网络中三种典型的异步MAC层接入协议:MAcAw、FAMA-NTR和DBTMA,从协议的基本思想、算法描述、协议状态流程等方面进行了探讨。其研究成果可以为进一步探讨无线Ad hoc网络异步MAC层接入协议提供参考。  关键词:Ad Hoc;异步;接入协议;MAC层    0 引言     无线Ad Hoe网络是一种自组织的对等式网络,又称作多跳网络(Multi-hop N
期刊
摘要:结合某电信知识管理系统中权限管理模块的实际需求,对RABC模型进行扩展,设计了针对功能和数据的权限管理模型,使权限管理具有更高的灵活性和实用性。  关键词:基于角色的访问控制;功能权限;数据权限;知识管理    0 引言    为降低客户服务成本,提高运营效率,构建学习型组织,某电信知识管理系统的实现目标是建立信息规范、分类规整、知识流畅通的先进、统一、高效的企业级知识管理体系。此系统具有功
期刊
摘要:二维条码作为一种新的信息存储和传递技术,具有信息容量大、不依赖于数据库和计算机网络、可靠性高、保密防伪性强和易于制作等优点,在各个领域有着广泛的应用前景。文章简要介绍了二雏条码的基本概念及其分类,并以PDF417条码为倒介绍了二维条码的码图结构和编解码过程。最后介绍了二维条码在3G中的应用方案。  关键词:二维条码;PDF417; 手机二维条码;3G    0 引言    条码技术的发明给计
期刊
摘要:数字滤波是数字信号处理的重要环节。数字滤波器可分为FIR和IIR两大类。文章根据FIR滤波器的设计原理.详细介绍了MATLAB环境下FIR数字滤波器的设计方法和操作步骤,并列出了设计实例程序及运行结果。关键词:MATLAB;数字信号处理;数字滤波器;有限脉冲响应    0 引言    数字滤波是数字信号处理的重要环节,是由乘法器、加法器和单位延时器组成的一种运算过程,它对输入的离散信号进行运
期刊