在场景仿真中采用Creator和3dsmax软件对不规则建筑体进行建模.docx
《在场景仿真中采用Creator和3dsmax软件对不规则建筑体进行建模.docx》由会员分享,可在线阅读,更多相关《在场景仿真中采用Creator和3dsmax软件对不规则建筑体进行建模.docx(7页珍藏版)》请在冰豆网上搜索。
在场景仿真中采用Creator和3dsmax软件对不规则建筑体进行建模
在场景仿真中采用Creator和3dsmax软件对不规则建筑体进行建模
摘要:
在场景仿真系统开发中采用multigencreator和Vega软件创建一个特定的3D模型越来越重要。
然而,用multigencreator构造。
在这篇文章中,提出一种利用3dsmax软件作为辅助建模的方法。
在3dsmax下开发的3D模型以3ds的格式存储下来然后导入multigencreator,在creator下修正后以flt格式保存。
为了减少模型的数据,还必须进行简化。
这样,使用creator构造复杂模型所遇到的难点得到解决。
在开发数字式的火箭系统模拟项目中,通过这种方法构建的模型具有很好的视觉效果,模型数据更小,并且可以被Vega驱动。
关键词:
场景仿真;建模;multigencreator;3dsmax
场景仿真技术由仿真建模技术和仿真驱动技术构成。
仿真建模技术是指对所有需要在场景仿真环境中的展示的模型进行建模。
场景仿真驱动技术是指可以驱动场景,转换,布置,分配和交替模型,并且可以处理很大的地形。
仿真建模是整个场景仿真系统的基础。
现在,场景仿真中有三种构造3D模型的方法。
第一种方法是将图形库和高级语言结合起来建模。
图形库一般使用OpenGL的或Direct的。
高级语言通常用VC++。
使用这种方法开发一些系统比较自由,可以应用在很多场合中,而且软件成本也低。
缺点是开发者必须精通编程,懂得许多的计算机图形知识和了解OpenGL或Direct。
雷雪梅等开发了基于OpenGL的火炮轨道场景仿真系统;李扬和吴锋使用OpenGL完成了氢存储合金熔炼的场景仿真系统。
第二种方法是通过虚拟现实建模语言(VRML)进行建模。
VRML是虚拟现实建模语言的缩写形式。
VRML由于起便于浏览,容易编写和编辑而应用广泛,但是绘图速度慢,所以如果驱动大型复杂的虚拟场景系统时很难达到实时的效果。
雷鸣,周兴建等在这一领域做了一些研究。
第三种方法是利用特殊的建模软件。
在场景仿真领域,如今有一些3D建模软件如MultigenCreator和Coryphaeus,地形建模软件如CTS,TerraVista等。
以上这些,由Multigen-Paradiam开发的MultigenCreator是虚拟现实和场景仿真的第一选择。
由于一些显著的优点,例如出众的表现,良好的稳定性和可靠性,使得MultigenCreator占有专业市场的80%。
它的的文件格式Openflight(flt)在场景仿真中已经成为标准格式了。
这种方法的优势是把开发者从编码中解脱出来,简化了开发和缩短了开发时间,其缺点应用成本高。
MultigenCreator的一些研究可以在参考文献中找到。
与其他CAD软件不同,尽管MultigenCreator构建大型地形容易,但是很难构建一些复杂的机械似的结构。
Creator的图形基础多边形建模。
它的绘图工具包括多边形,圆形,编辑工具包括墙体,锥体,球体,旋转体,带面和文字。
然而,这些工具用于创建复杂模型是不够的。
动画方面的应用如3dsmax,Maya,Softimage和Lightwave常用于场景仿真系统。
在我们的作品中,选用Autodesk公司的3dsmax,因为:
1)3dsmax有很强的3D建模能力,并且易学,价格低,已经成为最流行的3D动画建模软件。
2)以3ds格式存储的场景可以导入creator,可以不用其他软件进行转换数据,减少工作时间和软件成本。
1建模
图1显示了建模过程,从分析对象开始到建立flt文件结束。
分析是很重要的,因为要确定使用那种工具,是3dsmax还是creator。
如果对象很复杂,就说明它有很多不规则的部分而且不能拆分成简单的物体如箱体,球体圆柱体等,或者是它有许多曲形的表面,这种类型的模型可以使用3dsmax构造。
反之,如果对象简单,可以使用creator构造模型。
在建模过程中,适当的简化是必要的。
场景仿真系统对实时性高要求很高。
如果没有适当的简化,模型构造的会非常大,而且与实时性相冲突。
建模的程序是flt文件,flt是场景仿真的标准格式。
Flt文件用于场景驱动软件如Vega。
1.13dsmax建模
1.1.1单元设置
单元设置在3D建模中是非常重要的。
作为成熟的软件,3dsmax进行单元设置时有一定准则。
注释系统和显示单元之间的距离是重要的。
显示单元只能影响几何体在视口如何显示,系统单元才决定了几何体的实际大小。
在缺省设置中,系统单元是英寸,但在中国应该转换成毫米,在creator中也设置成毫米。
因此,在creator和3dsmax中大小是不变的。
1.1.2构造几何模型
在3dsmax中,通过在创建的面板里改变参数,应用修正和直接操作子对象几何模型可以将基本参量对象构造成更为复杂的几何模型。
通过调整一些值和打开或关闭一些按钮,也可以创建许多新的建筑体。
几何类型包括标准几何体,扩展几何体,复合物体,粒子系统,面片网格,非一致性有理基本样条曲面(NURBS)和动态对象。
3dsmax有三种组织图形的模式:
网格,面片和NURBS。
但是在3ds中文件的所有模式都是存储到网格里的。
因此由曲面片或NURBS构造的模型在存储为3ds格式的程序时也许会出错。
例如,由NURBS构造的控制点曲线在存储为3ds文件时会丢失。
这一点在建模时必须注意的。
不像物质建筑,带有固定形状和尺寸,3dsmax可以修改物体和其外形的参数来改变拓扑结构,以下可以给出几个例子:
1)将圆锥变成四棱锥只需缩减边数和去掉光滑选项;2)切割圆形物体;3)在指定宽度上直接渲染样条。
在切割操作时布尔减操作通常要避免使用,因为它容易出错如扭曲模型、丢失面和增加许多无用的面。
有两种方法可以取代布尔操作:
通过样条突出二维图形和在网格模式编辑副选项。
在机械系统里,有很多小管。
如果小管不必呈现内侧,则可以用刚体来代替,这样可以减少小管模型一半的面。
有两种方法可以模拟刚性的小管:
1)在圆柱上附加修改命令;2)使用透视样条。
出于简便的考虑,第二种方法更好。
因为移动控制点时,样条形状易于控制而且样条管有更少用于弯曲处插补的边数。
图2显示了两种不同方法构造的刚性小管。
1.1.3设定材质
3dsmax中有15种材质。
除了多重/子对象材质等,大部分材质都可以正确的导入creator。
当3dsmax的材质导入creator时,将会排列在缺省的0-63之后,从64直到最后。
事实上,标准类型的材质可以满足大部分场景仿真系统的使用。
纹理在3dsmax和creator中有不同的意义。
在3dsmax中,纹理只是材质的一项属性,然而在creator中,纹理和材质是并列的,并不从属的。
3dsmax和creator都不能以文件形式存储图片,只能存储有关图片的一些信息,诸如路径和大小。
3dsmax有很多映射类型,例如位图,凹凸和不透明性,但只有位图可以导入creator。
当3ds文件导入creator时纹理并不能显示,因为路径信息已经丢失了。
这个问题可以通过以下方法来解决,首先,在工具栏里打开纹理调色板,然后点击纹理列表中关于纹理图片的列表信息,选择一张图片,点击替换文件,找到你所要显示的图片就可以了。
还有另外一种方法导入纹理,渲染已经应用材质和纹理的模型,得到一张图片后,将这张图片作为纹理应用到creator的模型。
纹理的格式是受到限制的。
虽然3dsmax和creator可以使用大部分格式的图片,但是Vega只能显示RGBA格式的图片在RGBA格式下。
因此只有RGBA格式的图片才能用作纹理。
Photoshop的RGB可以改变其他格式为RGB格式的图片,然后在将RGB格式通过手动方式变成RGBA格式。
纹理的维数通常限定在二维,这样计算机可以更有效的处理和去掉不想要的枝节效果。
1.23ds文件导入creator
在3dsmax的建模完成后,模型以3ds的文件存储。
一个3ds的文件包含一系列的有用信息,它们用于描述由一个或多个物体构成的3d场景的每一个最小的细节。
3ds文件的二进制信息是用特殊的方式写入的。
3ds文件导入creator有两种方法。
第一种方法是直接导入,这种转换过程会有一些错误产生,例如遗失或置换面数。
这些错误可以用creator的转换,复制工具校正。
另一种方法是模型附上3dsmax的网格形式,再导入creator。
在Creator中,x为水平轴,y轴正交于x轴,z轴垂直于由x和y构成的平面。
Creator是一个3维的坐标系统,计算机显示的平面是二维的,放置数据库元件于三维的轨迹平面会更精确。
轨迹平面有两部分:
1)平面,三维的数据库空间。
一般而言,坐标系里,鼠标左键是放置元件于轨迹平面中。
2)位于轨迹平面的二维网格,网格被认为是笛卡儿或反射状的坐标,可以是可见的或不可见的。
OpenFlight是creator文件的格式,具有层次化结构。
这种结构定义了数据库中节点之间的关系,即节点是以树状形式连接在一起的,从最上层的根节点向下到体节点,面节点和底层的点节点。
点节点并不出现在层级视图中。
然而,在3dsmax中没有类似creator的层次化结构,尽管它有组的概念,但组的设计仅仅是用作易于选择,它的信息并不能以3ds文件格式存储。
当模型导入到creator时,它的层次结构附加在层级视图缺省的g2组节点之下,节点的名字就是模型的名字。
下一个节点是体节点,然后是面节点。
图3显示了导入creator的模型的层次化结构。
2.模型简化
场景仿真系统必须实时生成画面。
一个交互式的行走需要保持每秒20帧的速率才能保持运动平滑。
如果模型的数据太大,则帧率会减小,所以模型的数据需要控制在特定的范围内。
3dsmax的本质是3D建模和动画应用。
模型的构造是基于视觉效果但是模型的数据量很大,所以简化是必要的。
简化过程包含两方面:
3dsmax中的简化和creator中的简化。
2.13dsmax中的简化方法
1)忽略看不见的细节。
例如,如果管子内部不必显示,则用实心体来代替。
2)忽略对整体视觉效果影响不大的细节。
在机械式的系统中有很多倾斜的边缘,它们在3dsmax中并不重要。
如果在3dsmax中对这些细节建模,特别是内圆角,模型的面数会有很大的增加,因此将这些细节忽略。
3)用纹理表现一些细节。
许多机械式系统有铆钉或硬边会占用很多面,改变的方法是渲染模型,即通过凹凸映射表现这些细节,获取位图,然后应用位图到模型的表面。
图4显示通过凹凸纹理表现出的火炮引擎的表面细节。
4)用简单模型替代复杂模型。
在火炮场景系统,圆柱体通常用三棱柱或四边形代替。
5)在不失精确度的前提下缩减模型的段数。
段数和视觉效果之间的平衡是很重要的。
当模型的段数增加,模型的平滑性会更好,但是数据量也就随之变得更大。
6)编辑模型的子对象和删除的哦场景效果影响甚微的子节点。
2.2在Creator中的简化方法
1)实例化技术。
在屏幕上显示出几个相同的模型,但在内存只导入了一个模型。
实例化技术可以在节省计算机的运行开销的情况下缩减数据量。
2)简化纹理技术。
在不失视觉效果的前提下,用小尺寸的纹理图片代替大尺寸的图片。
例如用16×16象素的图片代替128×128象素的图片。
3)层次细节(LOD)技术。
LOD是一组同一个物体而又具有不同的细节程度的模型对象,不同细节程度版本模型的多边形的复杂度也不一样。
当视点距离物体越近,更多细节会呈现出来。
最大数量的多边形的版本模型称为最大LOD,是视点移向模型最近时产生的。
当视点离模型越来越远时,许多细节不再需要,所以更小的LOD就切换过来了。
以上部分介绍了9种简化方法,然而这些方法并不被用于一个模型。
根据模型的结构,可以应用1~3种简化方法。
图5(a)是简化之前的模型,图5(b)是简化后的模型。
该模型使用了2种简化方法,在3dsmax中忽略一些细节和减少段数,简化效果显示在表格1中。
表格1三角形数量和文件大小的比较
三角形数量文件大小
简化之前80761130K
简化之后1096131K
缩减百分比8689
3简化实例
这篇文章介绍的建模方法可以有效的应用于火炮场景仿真系统的开发。
火炮是非常复杂的系统,有很多复杂的结构零件。
火箭有很多不规则的外形和许多曲面,这些在multigencreator中无法建模,所以3dsmax可以作为辅助工具,还可以使用上面提到的一些简化方法。
图6显示了火箭引擎的第一层,这个模型有26176个三角形,文件大概有1.1M,模型可以被Vega驱动。
4总结
这篇论文阐述了在场景仿真系统中对应于不规则和复杂模型的一种新的3D建模方法。
下面的结果可知:
1)3dsmax适合于在场景仿真系统构造不规则和复杂结构的模型。
2)3ds格式的文件可以导入creator。
3)本文提出的简化方法可以是模型数据量大大减少,大约只有原来的10%。
在场景仿真系统中已经构建了火箭及推进系统的模型。
可以看到模型栩栩如生,系统中三角形的数目是合适的。
总之,在场景仿真系统,3D建模方法对不规则模型是有效的。