您好,欢迎来到榕意旅游网。
搜索
您的当前位置:首页交互式虚拟三维环境的设计

交互式虚拟三维环境的设计

来源:榕意旅游网
山西电子技术 2008年第6期 软件天地 交互式虚拟三维环境的设计 史 峰 (国营785厂,山西太原030024) 摘要:介绍在Microsoft Windows 2000系统下使用Microsoft Visual C++6.0作为编译环境,建立基于 OpenGL的功能较简单的交互式虚拟三维环境的方法以及3ds max 7、Vue 5等相关软件的使用。 关键词:虚拟现实;模拟三维环境;OpenGL 中图分类号:TP391.41 文献标识码:A O引言 虚拟现实,是指用计算机生成的一种虚拟环境,它能使 人们进入一个三维的、多媒体的虚拟世界,通过一些操作界 环境的模拟。在虚拟三维环境中,天空的真实感是影响视觉 效果的重要因素之一,我们使用Vue5的环境模拟功能制作 出在各种大气条件下的天空的图片,然后把这些图片作为虚 面,与其中的虚拟对象进行交互,再配合各种传感器和机械 部件,给人们带来一种身临其境的感受。随着计算机软硬件 的发展以及图形处理能力的增强,虚拟现实技术在军事、医 拟三维环境中的“天空盒”的材质贴图,展现出逼真的大气环 境效果。另外,我们还可以使用Vue5强大的地形编辑功能, 制作出一些不同特征的地形模型来充实虚拟三维场景。 疗、教育、工业以及游戏中的应用已经越来越广泛。 虚拟三维环境是虚拟现实技术中一个极其重要的部分, 虽然可以用现成的三维引擎来制作,但是由于绝大多数的三 维引擎价格不菲,并且其主要面向三维游戏市场。所以,如 果要解决的问题不是特别复杂,完全可以通过自己编程并使 用一些工具软件来完成。 2虚拟场景中的三维模型的制作 2.1天空盒模型 我们使用3ds max 7等工具软件来制作虚拟三维场景中 的3D模型等元素。首先从天空开始,打开3ds max 7,创建 一个立方体,调整其边长到一个比较大的值(比如2000米), 我们把这个立方体称为天空盒。接着制作天空盒的材质贴 图,也就是大气环境的图片。打开Vue5,选择“载气”选 项,然后从弹出的对话框中选择一种你需要的大气环境(当 然你也可以使用其编辑功能创建自己想要的大气效果),然 后点击文件菜单下的“导出天空”选项,将大气环境作为位图 1开发环境与软件 1.1 Microsoft Visual C++6.0 Microsoft Visual C++6.0(以下简称为vC++6.0)是 由微软公司出品的功能强大的可视化开发平台之一,我们可 以利用它在Windows操作系统上完成应用程序的创建、编 码、测试、完善等各个阶段的工作。 I.2 OpenGL 导出,再使用图片处理工具把整幅位图分解为与立方体六个 面相对应的六幅位图;再次进入3ds max 7,选中刚才的立方 体,使用材质编辑器把刚才导出的天空图片赋予立方体,进 行一些调整,天空盒的模型就完成了。最后一步就是把天空 盒的模型导出为“3dS’’类型的文件,以便在程序中调用。 2.2建筑物等各种实体的模型 OpenGL(开放性图形库Open Graphics Library)是一个 3DAPI,它于硬件系统和操作系统,是跨平台的“图形 硬件的软件接口”,具有高度的可移植性。它包括了大量的 绘图和显示函数,用于快速创建实时3D图形,主要用于图 形专业领域,已经成为工业标准,目前的最新版本是 OpenGL2.0。 1.3 3dsmax 7 根据需要,还应在场景中添加一些建筑物之类的三维模 型,当然了,这些模型也是我们使用3ds max 7制作的,具体 的制作方法这里不再赘述。但是要注意,制作的3D模型要 在程序中实时绘制,因此,在制作模型时,不能一味追求精 细,应该有意识地控制多边形的数量,以提高程序运行时的 3ds max 7是由Autcdesk公司出品的用于制作3D模型 和动画的软件,使用它可以制作出栩栩如生的人物、动物、植 物和建筑物等各种3D模型和动画。我们使用3ds max 7来 制作一些动植物、建筑物的3D模型,并将其导出为3ds文 渲染速度。同样,把制作好的模型保存为“3ds”类型的文件。 2.3树木等植物 一般采用2D图片的方法来显示植物,这样,即使场景 中有一大片树林,也不会影响渲染的速度。制作植物图片 时,首先应选择合适的植物图片(最好是正面平视的照片), 对图片做一些简单的处理,使其满足以下几个要求:1)图片 尺寸为2的N次方(32、64…);2)图片的底色以及不需要显 示的地方为纯黑色。以便在程序中将这些地方处理成透明状 件,然后在虚拟三维环境中调用。 1.4 Vue 5 Infinite Vue5 Infinite(以下简称为vue5)由e-on软件公司出品, 它也可以用来制作3D模型和动画,其特长在于对3D自然 收稿日期:2008一l0—31作者史峰男27岁助理工程师 山西电态。最后,将图片保存为“bmp”格式,虚拟三维场景中的植 物就做好了。 2.4生成地形数据 地形的创建不再采用预先建模的方式,而采用在程序中 实时绘制的方法,便于在场景中漫游时检测并计算出所处位 置的地面高度。具体步骤如下:首先,建立一个三维浮点型 数组来保存地形的顶点坐标值,三个分量分别为地形顶点的 x、Y、z坐标;然后,我们再建两个数组,分别用来保存顶点的 索引值(整型)和曲面贴图的平面坐标(浮点型);接着,使用 一段循环代码来随机生成地面的高度值,同时给三个数组赋 值;最后,调用OpenGL中的函数glEnableClientState()和 glVertexPointev()来载入地形顶点坐标数组,凋用glEnable— ClientState()和glTexCoordPointer()函数来载人顶点索引数 组。这样,地形的初始化工作就完成了,可以把这个过程写 成一个函数,名字叫做lni(I、e ̄ain(),便于在程序中调用。 3创建基于OpenGL的应用程序框架 OpenGL中所有的绘图函数都必须在OpenGL的环境中 运行,这个环境称为OpenGL框架。OpenGL框架还必须运 行在Windows应用程序框架中。也就是说,首先要建立 Windows应用程序框架,用它响应和处理各种消息和命令, 然后再建立OpenGI 运行环境框架,并在其中调用各种 OpenOL绘图函数。 3.1创建Windows应用程序框架 首先,在VC十+6.0中新建一个Win32应用程序 (Win32 Application);然后,添加四个全局变量htX2、hRC、 hWnd和hlnstance,分别用来保存设备描述表、着色描述表、 窗口句柄和程序的实例句柄;接下来在应用程序中包含g1. h,glu.h、glaux.h三个头文件以及opengl32.1ib、glu32.1ib、 glaux.1ib三个静态链接库文件;最后,在程序中加入win— Main()函数和WndProc()函数(具体方法请参考MSDN)。 其中,WinMain()函数是主程序的入口,我们在其中添加一 些代码创建Windows窗口,并在WinMain()函数中使用 PeekMessage()函数完成消息循环(即程序的主循环,被程序 反复执行),它用来监听并向WndProc()函数传递 肖息。 WndProc()是一个窗口回调函数,用来处理各种窗口消息并 响应外部事件。这样,一个基本的Windows框架就建成了。 3.2创建OpenGL运行环境框架 步骤如下:1)对OpenGL运行环境进行初始化设置;2) 调用OpenGL函数库中的函数完成绘图和显示工作并刷新 屏幕,可以把完成这些工作的代码编写成一个函数,命名为 DrawScene(),以便在程序中调用;3)在程序退出之前释放 各种资源,断开OpenGL与Windows窗121的连接。 3.3框架程序间的关系 winMain()函数是程序的入口,我们用它创建一个窗口 并设置其大小和样式。WndProc()回调函数会对“创建窗 口”这个消息作出响应,马上调用OpenGL框架中的SetPix— elFom ̄at()函数检测机器对OpenGL的支持情况,并安装 OpenGL显示接口。当窗口创建成功后,WndProc()函数对 窗口尺寸变化消息作出响应,调用OpenGL框架中的gluPer— spective()等函数对OpenGL视12I进行变换调整。Windows 子技术 2008盎 窗口生成后,就进入程序的主循环,在其中调用DrawScene ()函数绘制场景,同时监听和分配各种消息。程序退出时, 调用OpenGL中的wglDeleteContext()函数来切断OpenGL 与Windows窗口的连接。 4虚拟三维场景的显示和人机交互 在搭建好了应用程序框架之后,我们就可以在其中加入 绘制场景的代码了。我们要在场景中绘制出天空、地面、植 物和建筑物,从而逐步创造一个虚拟的三维环境,然后增加 在其中漫游的功能,实现简单的交互。 4.1绘制并显示地形 在OpenOL框架初始化之后需要调用InitTerrain()函数 来生成地形数据数组,进行地形的初始化。编写一个函数来 绘制地形,命名为DrawTerrain(),在其中调用glDrawgle. ments()函数,通过绘制三角形带的方式来绘制地形。如果 地形有纹理,可以调用glBindTexture()函数给地面贴图。把 DrawTerrain()增加到DrawScene()函数中,这样在每次屏幕 刷新时就能自动重新绘制地形了。 4.2载入并显示3ds格式的模型文件 天空、建筑物等虚拟对象都是采用预先建模的方式创建 的,我们已经将其统一保存为“3ds”格式的文件。我们还需 要在程序中包含一个名字为“3ds.h”的头文件,其对应的源 文件叫做“3ds.cpp”,二者均可互联网上找到。对每一个3ds 文件,可以先用3ds.h文件中的载入函数将其调入程序,并 为其分配各自的编号,再调用显示模型函数在OpenGL环境 中显示相应的3D模型。显示模型函数的参数同时定义了 模型显示的位置、方向和比例。载入模型的工作可以在程序 初始化时完成,而显示模型的函数应添加到DrawScene()函 数中。 4.3载入并显示植物 按照前面提到的方法,在虚拟三维场景中显示一株植物 实际上是显示一幅植物的图片(而不是3D模型)。我们先 在程序中载入图片,然后在屏幕上绘制四边形,把植物的图 片作为贴图显示出来。在虚拟三维场景中漫游时,我们知道 自己的视线方向,也可以计算出自己所处的位置坐标,那么, 就可以编写一段代码,让具有植物纹理的四边形每次重绘时都 始终与我们的视线方向垂直,从而形成一种三维模型的效果。 4.4添加漫游功能 完成了虚拟三维场景的创建和绘制以后,还需要给程序 添加漫游功能。有了漫游功能,我们不但能够看到虚拟三维 场景,更能以第一人称参与其中,更加“真实”地体验这个虚 拟世界。 在现实中人们看到的画面效果,主要取决于两个方面: 观察点的位置和视线的方向。在OpenGL中,也有类似于我 们眼睛的东西,我们可以使用函数gluLookAt()来改变在 OpenGL场景中的观察点的位置和视线方向,我们把这个函 数添加到DrawScene()函数中。在程序运行期间,通过使用 键盘和鼠标等来改变观察点坐标和视线方向。屏幕每次刷 新时,改变函数gluLookAt()中的参数值,OpenGL就会用新 的视角重新绘制屏幕上的画面,从而产生在场景中漫游的效 果。 (下转第70页) 70 山西电子技术 2008年 法可以得到该优化问题的最优解。 并避免陷入局部最优的目的。 参考文献 李敏强,窦纪松,林丹,等.遗传算法的基本理论与应用 [M].科学出版社,2002. Robert P Dick,Niraj K Jha.M0GAC A Multi—objective Genetic Algorithm for Hardware-Software Co-synthesis of iDstributed Embedded Systems[J].IEEE Tram Com— pute,1999,17(10). 李兰英,冯宏伟.基于多性能指标的SOC软硬件划分方 法研究[J].计算机工程与应用,2008,44(2). 图5仿真结果 高健,李涛.三种软硬件划分算法的比较分析[J].计算 4结论 机工程与设计,2007,14. 综上所述,在小生境技术的基础上引入精英保持策略和 Else P,Peng Z,Kuchcinski K,et a1.Hardware/soft— 保持群体多样性的方法,即经过优化策略之后的算法,能够 ware Partitioning of VHDL System Specifications【J]. 更好更快地搜索到最优解集,从而达到了加速算法收敛速度、 Proceedingof E1『R0DAC,1996:176—178. .、J=  1J、{ Study 0f S0C Hardware/Software Partition Technology Based on Ameliorated Genetic Algorithm Yang Kai Luo Sheng—qing (Department ofElectronic and Science Techrudogy,Tongji University,Shanghai 201804,China) Abstract:With the development of chip integration.the design of IC has entered into the age of S0C.And the traditional meth— dos of hardware/software partition hash’t adaptde to the need of SOC desing,the co-desing of hardware/software has settled the problem.The hardware/software partition iS a key question of the co-design of hardware/software.The method has made two aspect improvements:one is to import the niche metl- ̄:ts,another way is to import ditism preservign strategy,SO that it can ensure the as— tringencyofthe algorithm. Key words:S0C:hardware/software partition;genetic algorithm;niche methods;elitism preserving strategy (上接第64页) 世界之间的密切联系,虚拟世界正在越来越真实地再现着现 到目前为止,一个简单的交互式虚拟三维环境就建成 实世界中的一草一木。虚拟三维环境作为虚拟世界的主体, 了,它可以作为任何一个实用的虚拟三维环境的基础模块, 直接决定着虚拟世界的真实感。OpenGL等技术的应用使 我们可以在这个基础上继续丰富场景内容,添加其它功能, 得三维图形技术在虚拟现实、三维仿真、模拟训练、电子娱乐 逐步完善程序。 等领域得到了越来越广泛的应用,一些平常无法实现或很难 5程序的优化和其它功能的介绍 实现的自然环境和工作环境的模拟在虚拟世界中成了家常 便饭。它在带给体验者更加逼真的感受的同时,也大大降低 在虚拟三维环境的设计中,还有很多值得借鉴的方法。 了各种成本,提高了工作效率,有着广阔的发展空间。 比如,用地形灰度图来生成高度数据,使用区域分块显示技 参考文献 术来提高渲染速度,采用M0D(分级显示)技术加快贴图显 [1]Richard S,Wright Jr,Benjamin Lipchak.OpenGL超级 示速度并产生较好的效果,用位图字体、轮廓字体等显示汉 宝典(第三版)[M】.北京:人民邮电出版社,2005.9. 字,使用显示列表显示多个重复模型从而提高效率,使用粒 [2]和平鸽工作室.OpenOL高级编程与可视化系统开发. 子动画来模拟爆炸、烟雾等场面,在程序中添加碰撞检测的 系统开发篇(第二版)[M].北京:中国水利水电出版 功能以符合物理原理,等等。 社,2006.1. 6小结 [3]毛伟冬,唐明理.三维游戏设计师宝典[M].四川:四川 计算机技术发展到今天,再也不能忽视虚拟世界与现实 电子音像出版中心出版,2005.6. Design of Interactive Virtual 3D Environment Shi Feng (State-owned 785 Plant,Taiyuan Shanxi 030024,China) Abstract:The paper introduces the method that how to USe Microsoft Visual C++6.0 to construct the simple interactive 3D environment based on OpenGL and Microsoft Windows 2000 OS,and the application of relative software;such as 3ds,Max7 and Vue5. Keywords:virtual reality;3D environment;OpenGL 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- nryq.cn 版权所有 赣ICP备2024042798号-6

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务