基于OpenGL与3DS Max的三维场景建模

2012-03-29 14:07王新波朱维杰
电子科技 2012年1期
关键词:列表建模图形

王新波,朱维杰

(1.武警工程学院研究生管理大队,陕西西安 710086;2.武警工程学院通信工程系,陕西西安 710086)

目前三维应用已涉及建筑、产品设计、医学、地球科学、流体力学等各个领域。要模拟这些真实的三维场景,可以先利用专业建模软件3DS Max,建立需要的模型,然后结合Visual Studio 2005开发环境直接获取3DS模型数据,在OpenGL中进行绘制交互控制。这种方法一方面可以利用专业建模软件3DS Max的优点,较快地建立复杂模型,另一方面利用OpenGL的编程接口对建立的模型进行实时绘制和交互控制,降低建模时间,加快系统开发进程。

1 OpenGL技术与3DS模型

OpenGL是一个三维的计算机图形开发包,为程序员提供了一个图形硬件接口。它是一个功能强大、支持底层绘制和造型能力的软件图形函数库,独立于硬件和窗口系统,适用于所有的主流操作系统平台,有着广泛的硬件支持,是为游戏、造型及CAD之类的图形应用程序而设计。OpenGL能在网络环境下以客户/服务器模式工作,是专业的图形处理、科学计算等高端应用领域的标准图形库。OpenGL的核心图形函数功能强大,使用灵活方便,并能够支持粒子系统,对模拟水、火、雪等自然景物提供了真实有效的方法。3DS MAX是Autodesk公司开发的基于PC系统的三维动画渲染和制作软件。在Windows NT出现以后,3DS Max+Windows NT的组合减低了CG制作的门槛。打破了工业级CG制作被SGI工作站垄断的局面。成为三维动画、图形及图像设计首选的优秀软件。广泛应用在影视广告、学习娱乐、建筑装潢、机械制造、抽象艺术等行业。3DS Max强大的建模能力可以在短时间内迅速建立起复杂的物体模型。但3DS Max中缺乏交互能力,无法实现实时控制,难以直接用于仿真。因此,首先在3DS Max中建造模型,然后在OpenGL绘图环境中读入构造出的模型,再利用OpenGL的交互控制优势以达到理想的三维效果。

2 3DS Max建立模型

3DS Max提供了高级的三维建模指令,它丰富的建模技术能够较为方便和真实地表现复杂、精细的模型。它在业产品设计、数字化技术、仿真系统等诸领域中得到广泛应用。在3DS Max中有着多种建模方法,但其核心共3种:多边形建模、面片建模、Nurbs建模。由于每种建模方法都有自己的优势和不足,因此,必须在充分了解这些优势和不足之后,才能在实际工作中扬长避短。如由较大的直边和平面构成的对象,还有建筑模型,如墙、床、门、甚至是家具等用多边形建模最有效。面片建模多用于光滑表面建模。NURBS建模方法的主要优点是具有多边形建模方法及编辑的灵活性,但不依赖于复杂网络细化表面。在这方面,他更像使用面片表面。建模时可以只使用曲线定义表面。这些表面在窗口中看起来细节较少,但在渲染时却有更高层次的复杂度。如果能力具备,应该尽可能全面的掌握3DS Max的不同建模方法,因为在同一场景或对象组中,不同的建模方法是互补的。

3 三维场景的实现

3DS模型建立完成后,可以用 3D Exploration,Wcvt2pov等软件把3DS模型转换为相应的OpenGL的CC++格式文件,也可以由程序直接载入3DS模型。用软件转换格式的方法能够保留模型的颜色、纹理等信息。但也有局限性,即在转换模型时需要软件的支持和人工交互转换,且每次也只能转换一个模型。因此,效率并不高。而由程序直接的方法可以自由控制所需载入的模型,提高程序运行的效率。3DS模型载入OpenGL程序后,还需进行相应的比例放缩、旋转、移动等控制。

(1)读取3DS模型。

3DS文件采用块结构的组织方式,并且块与块之间存在嵌套关系,所以对3DS文件中的三维模型数据的读取方式是从模型文件中读取一个块,根据块ID来判断块的功能信息,然后根据块ID进行相应处理。在块处理过程中,比如主编辑块,也是通过相同的方式,读取一个子块,判断块信息,再进行相应的数据提取和存放处理。

(2)构建模型显示列表。

在编写OpenGL程序时,遇到重复的工作,可以创建一个显示列表,把重复的工作装入,并在需要的地方调用这个显示列表。使用显示列表一般有4个步骤:分配显示列表编号、创建显示列表、调用显示列表、销毁显示列表。

(3)根据3DS模型的最小和最大x,y坐标和三维场景实际需要的宽度和高度计算其缩放比例,对模型进行缩放。使用函数为:glScalef(GLfloat x,GLfloat y,GLfloat z)。把当前矩阵和一个表示缩放物体的矩阵相乘。x,y,z分别表示在该方向上的缩放比例。

(4)根据模型在三维场景中的方向角度,对模型进行旋转。使用函数为:glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)。把当前矩阵和一个表示旋转物体的矩阵相乘。物体将绕着(0,0,0)到(x,y,z)的直线以逆时针旋转,参数 angle表示旋转的角度。

(5)根据模型在三维场景中的位置,计算模型x,y,z方向的平移量,将模型平移。使用函数为:glTranslatef(GLfloat x,GLfloat y,GLfloat z)。把当前矩阵和一个表示移动物体的矩阵相乘。3个参数分别表示在3个坐标上的位移值。

(6)实现3DS模型在三维场景中按对应大小、方向、位置的放置,调用显示列表,完成模型的绘制。

4 结束语

3DS Max建模软件直观、方便易学,可操作性强,能够制作出高质量模型,并提高建模效率。采用OpenGL技术与3DS Max软件的方式来构建虚拟三维空间的方法,克服了OpenGL缺乏复杂三维模型的创建能力,使得使用OpenGL的简单函数也可以轻松地创建出复杂精美的三维模型。同时OpenGL的实时性的交互能力,弥补了3DS Max缺乏交互性的缺点。而且,OpenGL还提供了模型变换、纹理贴图、显示列表等技术,提高了Opengl对三维图形的控制能力,优化了三维场景的处理速度。OpenGL的灵活性、实时交互性结合3DS MAX强大的创建模型的能力,这种便利高效的组合,使其在虚拟现实和计算机仿真中得到了广泛应用。

[1]吕希奎,周小平.实战OpenGL三维可视化系统开发与源码精解[M].北京:电子工业出版社,2009.

[2]王瑶.3ds Max 2008完全手册[M].北京:科学出版社,2007.

[3]RIEHARD S W,BENJAMIN J.Lipchak nicholas haemel Open-GL超级宝典[M].4版.北京:人民邮电出版社,2010.

[4]伏玉琛,周洞女.计算机图形学[M].武汉:华中科技大学出版社,2006.

[5]郭兆荣,李菁,王彦.Visual C++OpenGL应用程序开发[M].北京:人民邮电出版社,2006.

[6]陈东亮,陆达.关于在OpenGL中装载3DS模型文件的分析[J].福建电脑,2007(5):59-60.

猜你喜欢
列表建模图形
学习运用列表法
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
扩列吧
基于PSS/E的风电场建模与动态分析
不对称半桥变换器的建模与仿真
分图形
找图形
列表画树状图各有所长
图形变变变
图形配对