1 概述
近年来虚拟现实在科技领域引起了广泛的关注,采用虚拟技术达到的逼真效果、沉浸式体验使其在众多行业得到应用,尤其表现在室内虚拟交互设计中。早前的室内设计效果图只能以静态的方式展现,而目前通过虚拟现实技术用户可以“走进”室内环境,多角度的浏览,并进行交互操作。虚拟现实技术达到的直观动态的展示效果对于室内虚拟交互设计是极其重要的。各虚拟现实制作软件中,Uinty3D 拥有嵌套多种开发语言的功能和特点,使得其在虚拟现实项目上得到了认可。研究Unity3D平台的室内虚拟交互设计系统具有一定的应用价值。
2 系统技术分析
虚拟漫游技术是虚拟技术的一个重要组成部分。这种技术开发的虚拟漫游给人一种身临其境、逼真的效果。系统通过提供鼠标、键盘、电子头盔、数据手套等虚拟现实硬件设备使得用户能够和虚拟场景进行交互。
2.1 系统功能架构设计
本系统主要包括漫游与自由视角模式、材质的动态更换、家具的添加与删除、场景背景音乐的开关、场景中电视的开关、人物在地图中的定位导航。具体功能结构如图1所示:
2.2 系统技术平台架构
室内虚拟交互设计系统采用Unity 3D技术,Unity 3D可以充分、实时的处理大量的模型。同时,Unity 3D也支持多种脚本语言(C#,JavaScript等)。展示平台分为数据模型、数据库、Unity 3D服务、开发接口和表现层5层结构。Unity 3D服务:系统的运行逻辑。包括相机控制、碰撞检测、动作触发、声音控制等。用户可以在室内自由漫游,可以点击墙上的电视打开或关闭或者对房间的家具进行添加删除和移动等。如图2所示。
3 室内虚拟交互设计系统的实现
3.1漫游模式切换
室内漫游中,除了第一人视角通过键盘或鼠标完成漫游外,还有通过指定摄像机路径进行漫游。本系统中研究了两个摄像机Camera01、Camera02按照指定路径漫游,Camera03自由视角漫游。
摄像机漫游过程中,设置角色的上述属性之余最关键的一点是要建立角色与墙面、角色与物体等的碰撞属性。在没有设置碰撞属性的情况下,角色会穿越墙面或物体,给“障碍物”添加碰撞器,达到碰撞效果。碰撞器是一群组件,它包含了很多种类。本系统使用Mesh Collider,Mesh Collider通过附加在GameObject上的网格构建碰撞效果,根据所附加对象的Transform属性设定其位置和大小。
function oneWindow (windowID : int) //漫游窗口内的按钮
{ GUI.skin=ManyouGUIskins;//以下漫游菜单按钮用GUISkin作为显示状态
if(GUI.Button(Rect(161,9,25,27),"","guanbi"))
{Window0 = false;}
if(GUI.Button(Rect(1,11,139,78),"","manyou1"))//漫游1为指定路径
{ Camera01.active = true;//Camera01为激活状态
Camera02.active = false;//Camera02为关闭状态
Camera03.active = false;//Camera03为关闭状态
Window0 = false;
}}......
室内虚拟交互系统中关键一点就是室内漫游技术的实现,本系统将指定路径漫游与自由视角漫游相结合的方式全方位的展现了漫游的技术,让用户更加多角度的浏览室内环境。
3.2材质的动态更换
在室内展示中,我们常需要动态地实现墙纸、地板等材质的更换以获得不同的展示效果。材质更换功能需要调用库中的图片即可实现,具体使用方法为调用ChangeTexture函数、PlayerPrefs.GetInt( ) 方法。
var ChosenColor : int;//声明一个整形变量ChosenColor
var vehicle01 : Renderer;//声明一个渲染器vehicle01
var Textures : Texture2D[];//声明一个二维纹理数组Textures
利用ChangeTexture函数完成材质更换。在ChangeTexture函数中如果整形变量colors的值大于或等于数组Textures的长度,没有材质更换,反之在数组范围内,则将
材质赋予给渲染器。数组的长度根据材质图片数量所定。
4 系统测试及总结
4.1系统测试
系统设计中直接将界面大小规定为1024*576,运行Dome时无需再设定界面大小。打开系统,进入初始界面,界面清晰明了,各个按钮对应进入不同的场景界面。说明界面场景中只存放一张说明介绍图使得从初始界面跳转到说明界面,加载迅速,此界面测试良好。
点击按钮,进入室内漫游界面,在该界面实现不同的交互功能,通过测试发现借助于物体模型的优化,减少模型面数使之适合室内使用,更换性能配置较高的电脑进行操作,可以解决系统中存在的运行缓慢的问题。
4.2 总结
Unity3D与JavaScript语言的结合运用,实现了室内虚拟交互设计系统的研究。在Unity3D中实现了一系列的交互功能,如自动漫游、手动漫游、场景切换、家具添加、材质更换等。满足了用户直观浏览并与之交互的需求。相信通过知识的不断积累,以及技术能力的不断提高,此系统能实现完全交互。不仅给消费者带来便捷,同时能够服务于设计师。
参考文献:
[1] Grigore C·Burdea,[法]Philippe Coiffet.虚拟现实技术[M]. 魏迎梅,译.北京:电子工业出版社,2005.
[2] Mel slater,Anthony Steed.计算机图形学与虚拟环境[M].程成,徐玉田,译.北京:机械工业出版社,2004.
[3] 华伦·巴克兰德.在虚拟和现实之间[J].北京电影学院学报,2002(3).
[4] Joe Gradeek.虚拟现实系统制作指南[M].何定,华宏,译.北京:电子工业出版社,1996.
[5] Chris Marrin,Bruce Campbell. 2l天学通VRML[M].王海燕,译.北京:人民邮电出版社,1998.