基于Virtools的虚拟小区漫游系统的设计与实现
来源:第三维度
作者:冯玉芬
单位:唐山师范学院
摘要:虚拟建筑小区漫游系统是虚拟现实技术的综合应用,作者使用三维建模软件—3DMAX软件和多功能三维开发工具软件—Virtools软件,设计实现了南堡盐场西苑小区虚拟漫游系统。此系统可以为用户提供多视点、多场景的浏览,使人有身临其境之感。
1 引言
在建筑设计和规划科学领域, 现阶段展示建筑物信息大多使用二维或三维方式,这种方式只能传递建筑物部分属性,提供单一尺度下的建筑物信息。使用虚拟现实技术可展示单体建筑、居住小区甚至整个城市空间, 可以让人以不同的俯视、仰视角度去审视或欣赏其外部空间的动感形象。它所产生的融合性, 要比模型或效果图更形象、完整和生动。
使用虚拟现实软件, 可实现实时场景及单体编辑、动画、解说等多媒体信息和虚拟现实无缝连接。本文设计了唐山南堡盐场西苑小区漫游系统的功能, 并给出具体实现方法。
2 系统建模与优化
2. 1 模型的构建
三维模型是整个漫游系统的基础,模型的好坏直接影响运行的效果和场景的逼真度。本系统采用3DSMAX进行建模,用它建立的模型有很强的仿真立体效果。
1)以南堡盐场西苑小区为虚拟对象,该小区建筑物以住宅楼为主。在这些楼群中,有主有次。收集数据时,首先要取得小区的总图,对小区里建筑物的分布有初步的了解,并确定漫游系统所涉及的范围和需要建模的建筑物。
2)创建几何模型
根据对层次结构的分析,遵循由下到上的原则,逐层逐块地利用建模软件3DSMAX提供的点、线、面、体的创建和修改工具,进行虚拟场景的构建。对于需要精细建模的建筑物要用尽量使用精确的几何形体创建模型细节,对于要粗略建模的建筑物要尽量使用面数较少的几何体构建[ 1 ]。
3)纹理映射
为了提高三维模型的逼真度,减少模型的多边形数量,采用纹理贴制的方法来代替用多边形表示模型的细节,从而大大降低了模型的多边形数量。对于精确建模的模型,可以用纹理贴图来表示极难构建而且又不是特别重要的模型,例如建筑屋顶上的蓝灰色瓦片,把所有的瓦片都构建出来是不可能的,这时就可以使用贴图来代替如图1。
图1 建筑模型贴图效果
对于粗略的模型,要尽可能的使用纹理贴图来代替几何体来创建模型,例如周边的住宅楼,就可以忽略楼体形体的细节,使用一张贴图代替,建筑物模型效果如图2。
图2 建筑物模型贴图效果
4) 3D精灵技术与广告牌技术
模拟树木作为场景中数目最多的外部景观,树木的逼真程度直接影响到整个场景的真实感。因此,单株树木的表示方法也是场景建模中的重要研究内容。一般来说,按照真实树木的形体进行详细建模是很难实现的。由于树的不规则形状,很难像建筑物建模那样用长方体、圆柱等基本几何体来表示一棵树。因此想通过精细建模的方法来表示大量的树木是行不通的。利用纹理映射来实现树木的简单表示,但也要采取必要的手段来保证场景中树木的立体感与真实性,文中使用Billboard 技术多边形面来模拟树的方法[ 2 ]。Bill2board技术使得当视点改变时,此多边形会绕指定的轴旋转从而保证实体始终面向着视点。只要时刻保持二维纹理树木图像的法线矢量指向观察者,就可以造成一种能够使观察者满意的三维树木的假象。如图3所示。
图3 使用3D精灵和Billboard技术模拟树
2. 2 LOD 的使用及碰撞检测
由于LOD 技术在降低场景复杂度的同时也会增加系统的开销,所以在小区漫游系统中只将LOD技术应用于构建的比较精细的模型上[ 3 ]。为将要应用LOD技术的物体添加LOD属性:Virtools中的物体可以添加很多属性,例如,地板属性、碰撞检测属性等。把要应用LOD 技术的物体添加LOD 属性,在添加时可以将属性添加到模型中体积较大、面数较多的物体上去,其他体积较小并且不太重要的物体可以不添加LOD 属性,这样可以提高LOD 的效率。Virtools软件的最大优点就是它提供了许多封装好的功能模块和参数操作, Collision Detection和Prevent Collision都有三个属性Geometry Precision。这个属性供用户选择碰撞检测的精度,它有三个选项: Automatic, BoudingBox和Faces.选项Automatic,在碰撞检测中各物体采用自身的精度;选项Bouding Box;宣布为障碍物的三维对象统一采用六面体的包围盒,由于在虚拟漫游中对物体之间的碰撞检测精度要求并不是太高,采用这种精度,既能达到预期效果,而且不影响速度,比较适合虚拟漫游系统中的碰撞检测;选项Faces,则是在面与面之间进行的碰撞检测,这种精度过于精细,影响漫游速度,故采用的较少[ 3 ]。
3 漫游功能的设计
在虚拟场景漫游中,需要提供多种漫游控制功能,方便用户和虚拟场景之间的交互。本文设计和实现了几种漫游功能,如图4所示。
图4 漫游系统主要功能界面
1)Unit:南堡盐场西苑小区有多种户型平面,本功能可让客户对小区中不同户型单元平面图进行浏览,并可以放大浏览,设置动态放大到一定的倍数,比如利用线性插值模块,可以实现动放大到两倍就停止放大。
2) Single:单体住宅楼透视效果;可改变场景,转入到单体住宅楼环境中。这样可以提高运行速度,详细观看单体建筑的外观。
3) Indoor:住宅样板房间室内漫游;建立虚拟场景时,不可能对每栋楼的室内建立模型,其原因是工作量太大,电脑的资源有限。因此,建立几种户型的样板房,让客户感受不同户型房间内的空间、采光及家具的布置情况等,以帮助客户确定购房方案。
4)Outdoor:小区外景漫游;室外漫游提供了在虚、左右旋转、仰视、俯视、自动漫游、自由漫游等方式。在漫游中使用小地图功能,小地图的功能不仅能显示整个场景的外观,还能放映角色在地图中的大致位置,这就需要制作一个小区总平面图,本设计中,此图是由CAD总平面图经过光栅后,用Photoshop填充制作而成的,整体效果精确、美观,红色矩形小方块代表虚拟角色,它会随着虚拟角色在场景中移动,实时动态地改变在总图中的位置。如图5所示。
自动漫游是让用户在设计好的路线上观察建筑物。对关键点、设计精彩的位置或是寓意深刻的小区景观做适当停留,加入声音向客户说明,以吸引客户注意力。这个功能只需让相机沿着预设路径移动,不需要人工干涉,从而全面浏图4 漫游系统主要功能界面览场景。
自由漫游可以使用户随心所欲地在场景中任何一个地方走动,同时考虑碰撞检测,避免角色穿墙而入,或是站到一个不可能的位置。对自由漫游的过程,设计漫游过程的录制功能,对录制好的路线,可以回放,这样能为下次浏览节省时间。
5)Weather:在系统中适当增添在不同天气情况下小区的整体景色,如夜景、雨雪天气等景观效果,可以提高漫游系统的趣味性,同时又能增加虚拟场景的真实感[ 4 ]。
图5 漫游中小地图
4 功能的实现
用Virtools软件的BBs编程来实现上述功能,下面给出了部分功能的实现方法.
4. 1 主功能界面
使用了几个二维帧作为按钮,分别对每个按钮添加cre2ate systemfong和pushbutton行为模块,并设置相关的参数。如返回按钮的scrip t如图6。
图6 功能界面中的返回功能按钮
4. 2 平面图的动态放大
可对户型平面图动态放大,实现方法是将linear p rOGREs2sion拖拽到映射户型平面的二维帧上,再加入interpolator和setworld matrix 行为模块, 如下图, 并设置interpolator 的参数。
图7 户型平面二维帧的脚本
4. 3 小地图功能的实现
系统中,小键盘的上、下、左、右控制角色前进、后退、左右转向,并是相机随角色移动,实时控制场景的变化。小地图上的二维帧,红色矩形的位置点取决与角色所在的坐标点,然后使其在小地图的相对位置上移动[ 5 ] [ 6 ]。
图8 相机随角色移动脚本
4. 4 特殊天气景观的实现
从视觉仿真的角度出发,采用粒子系统来实现降雨雪效果。通过对粒子生成范围、粒子数目、粒子形状、粒子的大小、粒子的颜色、粒子的重量、粒子的生存期等参数的设置,来模拟自然环境中雨雪天气。
图9 小地图中红色矩形帧的设置脚本
5 结束语
对复杂场景的虚拟漫游研究是虚拟现实和图形学领域一个重要的课题,虚拟小区漫游系统的设计与实现中合理使用了场景优化策略和碰撞检测技术,保证了实时漫游速度,并增加了漫游系统的真实感,在实践中深化了理论知识。在设计中对场景的实时显示进行了多方面的测试,并给出了具体实现方法。系统设计中存在不足之处,场景的动态性和交互性较为简单,对象的建模还没深入到实体内部,只是完成了外部模型构建,后期工作是完成建筑物内部模型构建,将玻璃设置成透明材质,优化内存,增强多客户的交互性和沉浸感。
参考文献:
[ 1 ] 孙长勇. 虚拟现实中三维建模技术方法的分析与研究[D ]. 中国人民解放军信息工程大学电子技术学院硕士研究生论文, 2004.
[ 2 ] 刘明昆. 三维游戏设计宝典[M ]. 成都:四川电子音像出版中心, 2005 - 8.
[ 3 ] 陈学文,等. 基于包围盒的碰撞检测算法研究[ J ]. 计算机工程与应用, 2005, 5.
[ 4 ] 刘航,等. 虚拟校园三维仿真系统关键技术研究[ J ]. 计算机工程与设计, 2007, (12) : 2935 - 2936.
[ 5 ] 李昌国,等. 基于GIS和V IRTOOLS技术的虚拟校园漫游开发方法的研究[ J ]. 计算机工程与设计, 2007, 7 ( 13 ) : 3223- 3226.
[ 6 ] 方小峰. 基于虚拟现实的城市规划三维仿真设计系统[ J ]. 计算机仿真, 2007, 3 (5) : 230 - 234.
[作者简介]
冯玉芬(1970 - ) ,女(汉族) ,河北唐山人,唐山师范学院高级工程师,研究方向:计算机应用及软件开发。