漫游系统的设计原理

时间:2022-10-06 09:45:40

漫游系统的设计原理

摘要:Virtools是目前开发虚拟漫游系统和游戏功能强大的整合软件。该文主要通介绍在Virtools软件环境下设置场景元素的重力、碰撞属性,角色动作控制和摄象机设置等,实现可以人机交互的虚拟建筑场景漫游系统。

关键词:虚拟建筑;漫游系统;Virtools

中图分类号:TP391文献标识码:A文章编号:1009-3044(2008)34-2020-02

The Disgning and Developping of Building Field Virtual Walkthrouth System Based on Virtools

LUO Yong-hong

(Computer Department, Yiwu Industrial & Commercial College, Yiwu 322000, China)

Abstract: Currently, Virtools is a powerfull integration software which be used to develop virtual walkthrough system and games. This paper presents how to set up the collision attribute, gravity attribute, character control and camera in the Virtools software, to realize human interactions of building field virtual walkthrough system.

Key words: building field; virtual walkthrough; Virtools

1 引言

近几年来,建筑物尤其室内建筑的虚拟漫游吸引了很多人的目光。虚拟漫游技术是虚拟现实(VR)技术的重要分支,在建筑、旅游、游戏、航空航天、医学等多种行业发展很快。由于有可贵的3I特性――沉浸感、交互性和构想性,使得沿用固定漫游路径等手段的其他漫游技术和系统无法与之相比。虚拟建筑是指客观上并不存在是完全虚构的,或者虽有设计数据但尚未建造的建筑物。虚拟建筑场景漫游是一种应用越来越广泛、前景十分看好的技术领域。在建筑设计、城乡规划、室内装潢等建筑行业,在虚拟战争演练场和作战指挥模拟训练方面,在游戏设计与娱乐行业,乃至在促进未来新艺术形式诞生等方面,它都大有用武之地,而且代表着这些行业的新技术和新水平。

2 虚拟建筑场景漫游系统的功能设计

为了能够真实地展示整个虚拟建筑的环境,我们需要一个角色能够在虚拟环境中被用户控制。角色可以按照用户的需求在场景中做走、跑、转身、等待、开门等动作。角色的运动路径由用户控制。在漫游视觉效果上,用户可以根据个人视觉习惯选择角色视角模式或追踪观察模式。场景模型中门的运动效果可以根据实际生活中的自动门和手动门结合场景中角色的距离或动作进行相应的交互动作。在运动和交互的过程中还需要让角色像现实生活一样,不能漂浮在地面上或穿墙而过。

3 虚拟建筑场景漫游系统的设计原理

给系统中的任何对象要添加交互或行为方式,都需要使用Virtools软件提供的“行为模块(Building Blocks)”。Building Blocks原意为堆积木,其包含的行为按照相应的规则和条理拖放给相应的对象,并按设计员的逻辑思维执行。行为模块的结构如图2所示。

其中水平方向上的引脚代表脚本事件流程控制:

On/Off:流程的输入为开或关;

Contact/No Contact:流程的输出为有结果或没结果。

垂直方向上的引脚代表参数数据处理流程,上方是参数的输入,下方是参数运算的输出。

行为模块的执行流程:

1) 行为模块尚未被启动;

2) 至少一个“流程输入”被驱动,这时行为模块开始运作;

3) 行为模块读取“参数输入”数值,并以此数值为指示运作;

4) 至少一个“流程输出”被驱动,这时行为模块停止动作;

5) 部分的行为模块就会停止运作,回到1)的状态,但是部分行为模块会再自行驱动,并进入3)的状态。

整个运行过程根据行为模块流程的连接方式有:

一次执行:InOut。

重复执行:Loop InLoop Out。

选择执行(由用户决定):On/OffOn Exit/Off Exit。

要使整个系统能够流畅地按设计者的思维方式来执行,还需要将这些行为模块进行连接,我们称为“行为连接”,以执行流程的联系工作。在执行过程中会有某个行为模块的参数输出是另一个行为模块的参数输入,此时我们需要进行“参数连接”,来负责数据的传递,如图3所示。

4 虚拟建筑场景漫游系统的关键技术与方法

4.1 角色动作控制

角色控制常用的行为模块有“角色控制(Character Controller)”,“键盘控制(Keyboard Controller)”,“不限量的动作控制(Unlimited Controller)”,“键盘地图(Keyboard Mapper)”。“Character Controller”行为模块只能设置4个基本动作(stand、walk、walk backward、ran)。“Keyboard Controller”只有系统默认的数字键盘上8(控制前进)、4(控制左转)、6(控制右转)、2(控制后退),不能根据用户的需要进行设置。“Unlimited Controller”可以填加用户想要的所有动作。“Keyboard Mapper”可以把键盘上所有的键按设计员的需求进行随意设置。前两者主要用于角色的基本动作控制,后两者适用拥有多种动作数据以上的角色,可以做更细节的人物动作控制。

4.2 角色重力设置

为了让角色始终在地面上运动,而不是陷入地面或漂浮在空气中,需要设置虚拟对象中地面的“Floor”属性。要使角色能够识别“Floor”并保持在地板上运动,还需要给角色添加行为模块“Enhangce Character Keep On Floor”。

4.3 角色碰撞设置

虚拟的环境要表现真实世界的状况还需要建立角色和墙面、物体等的碰撞属性。在没有设置碰撞效果的情况下,角色会穿越墙面或物体。碰撞效果的建立有3种方式:

1) 建立对象的碰撞属性(Obstacle attribute);

2) 建立组合对象(Group);

3) 绘制碰撞范围(Grid与Layer)。

碰撞效果的设计逻辑就是无论使用哪种方法,首先告诉Virtools谁是“障碍物”或障碍物的范围,最后是告诉Virtools谁要受“障碍物”的影响,需要给受“障碍物”的影响的对象添加“Prevent Conllision”行为模块,“Object Slider”行为模块或“Layer Slider”行为模块。

4.4 角色阴影设置

阴影设置牵涉到两个对象,阴影的产生对象(角色)和阴影的呈现对象(地板、墙面等)。我们需要对阴影的产生对象添加ShadowCaster行为模块,对阴影的呈现对象逐个给它们的“Attribute”设置添加“Shadow Caster Receiver”属性。

4.5 门开关控制

门开关动作主要有两种类型:自动门和手动门。自动门需要通过判断进门的对象和门之间的距离来确定开关。判断角色与门之间的距离通常用“Preximity”行为模块。我们可以通过设定“Preximity”的距离参数。当小于参数值是时候执行“开门”,大于参数值的时候执行“关门”。门的运动主要用“Bezier Progression”、“Rotate”和“Translate”行为模块来实现。“Bezier Progression”是用来控制对象扭曲运动的,扭曲的方式如果是旋转就用“Rotate”,位移则用“Translate”。如果是手动门,需要对门设置一个等待消息的行为模块“Wait Massage”。如果想让整个效果更逼真,还可以给角色制作开门的动作。

4.6 影机设置

在漫游系统的视觉效果上主要采用摄象机来完成。在很多游戏和漫游系统中主要采用的是第一人称摄象机和跟随摄象机。第一人称摄象机的设置位置很重要,一般需要调整角色的位置然后添加摄象机,效果为角色眼睛看到的环境。跟随摄象机除了需要设置摄象机与角色的距离,还需要用“Keep at Constant Distance”行为模块来让摄象机与角色保持一定的距离,然后用“Look At”行为模块来让摄像机开始。

5 总结与展望

本文通过讲解Virtools的设计原理,分析系统的功能结构,给读者展示了在Virtools环境中开发设计虚拟建筑漫游系统的过程。所有的脚本都通过了测试。

系统在设计上还可以加上Culling以增加执行的效能,但设计和计算Culling是非常复杂,在这里没有做详细描述。对于房间的一些装饰物品可以增加LOD Object属性,这样也可以增加执行的效能,使物体在远处时显示最少的面,在近处时显示最多的面。

参考文献:

[1] 胡小强.虚拟现实技术[M].北京:北京邮电大学出版社,2005.

[2] 刘祥.虚拟现实技术辅助建筑设计[M].北京:机械工业出版社,2005.

[3] 张宇.Creating animation for Games 3ds Max8 & Virtools游戏动画设计[M].北京:海洋出版社,2006.

[4] 傅晟,彭群生.一个桌面型虚拟建筑环境实时漫游系统的设计与实现[J].计算机学报,21(9):793-799.

[5] 陈华斌,王彤.虚拟建筑环境实时漫游系统的设计和实现[J].西南交通大学学报,36(1):53-56.

上一篇:基于HTTP协议的无线AP远程配置实现方法 下一篇:基于VB和API函数实现文件时间属性的获取和设置