Virtools引擎开发虚拟漫游系统的具体过程及关键技术分析
2013-08-10沈有福石连栓
□ 沈有福 石连栓
一、引言
随着计算机技术的高速发展,其软硬件方面都有了极大的提升,从而人们对计算机的画面质量、维度显示都有了更高的要求。近来,3D电影越来越受人们的喜爱,究其原因,无非就是3D电影采用了新的三维视觉效果来呈现故事内容,它使观看者更加觉得自己融入电影的世界中,即增强了用户的沉浸感。那么,在三维环境呈现的基础上再加上人机互动,使用户亲身进入三维环境,并且通过简单的键盘或者鼠标操作就可以自由控制人物,浏览整个虚拟场景,这样的一种虚拟漫游系统也一定会受到人们的欢迎,如2010年的上海世博会虚拟现实系统。
虚拟现实系统可分为桌面式、分布式、沉浸式以及增强式四种类型,一般的虚拟漫游系统均属于桌面式虚拟现实系统,它具有沉浸感、构想性、交互性以及多感知性四个特点。那么如何开发一个桌面式的虚拟漫游系统,接下来,笔者将结合亲身开发的一个虚拟漫游系统系统来阐述其具体过程及关键技术。
二、开发过程
一个虚拟漫游系统包括的几个要素有人物角色、环境场景、实体物件、控制系统以及其他附属效果(天气、声音、火焰等)。因此,开发过程主要分为以下几个阶段(图1)。
如图1所示,一个虚拟漫游系统的开发主要包括素材收集、人物模型操作、实体物件模型的修改以及控制脚本的编写。其中素材收集主要包括图片/贴图、人物模型以及实体物件模型;人物模型操作包括骨骼、蒙皮、封套及动作的制作;实体物件模型包括贴图创建及修正,模型调整及优化,父子关系、坐标及尺寸设定;控制系统部分包括模型导入及调整,灯光、摄像机架设,材质的修正,物体属性设定以及控制脚本的编写。
虚拟漫游系统开发的过程可分为上述四个阶段,在开发的过程中各个阶段是相互联系、相互影响的。如人物动作制定好后,导入Virtools中发现人物的动作不协调,显得并不真实,则需返回3d max中重新制作动作。因此,在开发之前,一定要将所有可能发生影响的因素以及可能发生的结果进行具体规划考虑。
三、关键技术分析
一个虚拟漫游系统开发过程中的技术细节很多,如素材收集阶段搜索引擎的使用,人物模型操作阶段坐标、尺寸的设定,Virtools中物体模型的调整等。笔者使用的开发软件为3d max 9以及Virtools 5.0。文中主要针对以下几方面技术进行阐述:1)人物角色模型骨骼架设,蒙皮及封套编辑,动作制作及导出;2)实体物件模型材质制定及模型优化;3)Virtools中灯光架设及材质修正;4)物体模型属性设定;5)角色脚本控制;6)碰撞处理机制;7)摄像机架设及脚本控制。
(一)人物角色制作
为了表现出较为真实的漫游效果,虚拟角色的存在是必不可少的。对于虚拟角色的制作步骤,分为以下三点:1)人物角色模型骨骼架设;2)蒙皮及封套编辑;3)动作制作及导出。
1.人物角色模型骨骼架设
人物角色模型建立好后将其位置置于世界坐标中心位置(0,0,0),将人物角色模型冻结,以免在调整骨骼的时候不小心破坏掉源模型。创建骨骼(Biped),在体型模式下利用移动、旋转、缩放、锁定工具,并且配合捕捉工具调整骨骼,使其与模型的位置和大小均匹配。
图1 虚拟漫游系统开发过程
2.蒙皮及封套编辑
调整好骨骼后,解冻人物角色模型,选中模型,添加蒙皮修改器。然后进入封套级别进行每一块骨骼影响模型位置及权重。影响位置通过封套半径来控制,权重设定可通过权重表来实现。
3.动作制作及导出
骨骼及蒙皮编辑好后就可以制作人物角色动作了,一般动作的制定可以通过3d max中动作编辑器来实现。由于开发者自己调整的动作并不是非常自然、协调,稍微复杂点的动作可以加载外界以制作好的动作BIP文件,结合轨迹视图,根据需要进行修改。人物角色走路的动作可以利用3d max中足迹模式来实现自然流畅的效果。动作制作完毕,在导出时,应先将骨骼隐藏,再将角色模型以character类型导出,动作则以animation类型导出。
(二)实体物件模型材质制定及模型优化
为展示出形象、逼真的虚拟场景,需要为模型添加材质。在添加材质的时候,需要注意几个问题:1)根据不同的模型赋予材质不一样的名称;2)材质类型的选择尽量使用Virtools支持的材质类型,如标准材质、多维/子对象材质等;3)尽量减少使用贴图,因为贴图非常耗费系统资源,如果能够采用3d max中自己调的材质,如简单物体颜色及反射光设定,就可以极大地加快系统运行速度;4)如果使用贴图则需使用2的幂次方文件大小的图片,减少内存浪费,因为计算机的储存机制为二进制;5)如果需要使用阴影,可将材质烘焙好再赋予模型。
通常建模时主要采用多边形建模的方式,放样、NURBS等建模方式配合使用。为了保证模型在后期Virtools中显示正确,模型建立好以后要全部转化为可编辑多边形或者可编辑网格,避免凹多边形的面出现。为了减少系统负担,需要对模型进行优化处理:1)删除不可见面,移除孤立的顶点,删减模型的面数,适当减少模型分段;2)一样的模型使用实例方式复制,材质相同的模型使用合并材质;3)一些模型,如树木等采用十字交叉面片创建;4)远处物体,如背景或者较小的物体,使用图片来实现;5)草地、花丛等模型利用面片来制作等。
(三)Virtools中灯光架设及材质修正
模型导入Virtools,调整好位置后,则应该先为其架设灯光,灯光可分为主光和辅光。在Virtools中,灯光分为点光源、聚光灯以及目标聚光灯三种类型。点光源可理解为泛光灯,用于全局照明;聚光灯用于表现实物理世界中以点光源作为照明的灯光,比如射灯、筒灯等;目标聚光灯用于表现表现真实物理世界中的阳光,这是平行光的一大特点,而且平行光不用考虑灯光的衰减。
模型导入Virtools中如果为黑色,需要调整模型的材质自发光。Virtools中物体材质的表现要结合模型自身材质的环境光、漫反射、透明度以及自发光参数以及架设的灯光来进行调整。另外,可以利用材质属性面板中的Effect增强空间环境的真实性。
(四)物体模型属性设定
在虚拟漫游系统中,用到的物体属性包括地板属性、固定障碍物属性、移动障碍物属性等。雨、雪、雾、喷泉等效果可以用粒子系统实现,配合利用系统的属性包括粒子系统导向板以及粒子系统交互器。
在层级管理器中,选中要添加属性的物体,添加属性,或者在物体的设置面板,左侧选择其属性项标签也可以实现添加属性操作。如果需要移除物体的某一个属性,在物体设置面板中属性标签选择要移除的属性项右键执行删除即可。
(五)角色脚本控制
准备工作做好以后,如果想让角色动起来,就需要为人物角色添加控制脚本。通常情况下我们可以使用Virtools中 Building Blocks下面的Keyboard Controller、Character Controller以及Character Keep On Floor三个BB模组来实现人物控制及保持在地板上。使用这种方法,人物后退、左转、右转、前进和跑的动作控制对应键盘按键是固定的,即2、4、6、8及Insert按钮。如果想要改变动作对应按键以及设定一些其他参数,可以使用Keyboard Mapper、Unlimited Controller以及Enhanced Character Keep On Floor模组来进行操作。实现人物碰撞效果的脚本,将在下面“碰撞处理机制”中进行阐述。
(六)碰撞处理机制
在虚拟漫游系统中使用到的人物与物体碰撞检测方法主要有以下三种:1)物体障碍物属性设定配合Prevent Collision BB模组;2)碰撞网格(Grid)配合Layer Slider BB模组;3)碰撞群组配合Object Slider BB模组。实现方法分别为:1)为碰撞物体添加固定障碍物属性,在人物角色控制脚本中添加Prevent Collision BB;2)创建Grid,将Grid中对应障碍物的各个网格选中,在人物角色控制脚本中添加Layer Slider BB;3)创建一个群组,将需要实现碰撞的物体全部放进去,人物角色控制脚本中添加Object Slider BB,模组中参数选择创建的碰撞群组。Prevent Collision BB在检测到碰撞时,人物会产生碰撞效果,但是人物不会滑动,而包含“Slider”的BB则会产生一定的滑动效果,防止人物卡住。为了达到较好的碰撞效果,应将上述几种方法结合使用。
(七)摄像机架设及脚本控制
漫游系统中,针对人物角色,一般有第一人称视角、第三人称视角、跟随视角以及全景视角。这几种视角实现的方法大致相同,区别在于摄像机的位置及视野位置、范围的差异。
调整好视图,创建摄像机,并制定初始值,为摄像机添加脚本,加入Set Position和Look At BB,连接循环就可以实现摄像机跟随角色移动(图2)。实现按键控制不同视角之间的切换功能,加入Switch On Key和Set As Active Camera两个BB模组,设定按键及对应的摄像机即可(图3)。
图2 摄像机控制脚本
图3 摄像机切换脚本
四、Virtools引擎应用前景展望
Virtools引擎可以制作出许多不同用途的3D产品,如网际网络、计算机游戏、多媒体、建筑设计、交互式电视、教育训练、仿真与产品展示等。目前全世界有超过270所大学使用Virtools,已经获得许多媒体技术学系学生的肯定和支持,并且越来越多的多媒体技术公司开始应用Virtools开发其产品,如水晶宫、奇士等公司。由此可见,Virtools引擎的应用前景十分看好。
[1]刘明昆.三维游戏设计师宝典——Virtools开发工具篇[M].四川电子音像出版中心,2005.
[2]韩静华.森林公园虚拟漫游装置关键技术研究[D].北京林业大学,2011.
[3]刘妍.楼盘虚拟漫游技术及应用研究[D].中南林业科技大学,2012.
[4]陈彦菲.校园内场景的虚拟漫游技术研究[D].大连理工大学,2008.
[5]曾敏.成都职业技术学院校园漫游系统[D].西南交通大学大学,2011.
[6]黄炜.基于的工厂虚拟漫游系统的设计与实现[D].电脑知识与技术,2011.
[7]王兆丰,厉晓飞,崔伊飞.基于虚拟现实技术的3D虚拟漫游系统的设计与实现[J].China Academic Journal Electronic Publishing House.1994-2012.