一种基于Unity 3D的场景交互漫游

2016-09-16 08:27中国传媒大学南广学院周晓梅
电子世界 2016年12期
关键词:漫游材质虚拟现实

中国传媒大学南广学院 周 灵 周晓梅 郝 婧

一种基于Unity 3D的场景交互漫游

中国传媒大学南广学院周灵周晓梅郝婧

本论文阐述了基于Unity3D为虚拟漫游系统开发平台,以3D Max软件来实现模型制作和材质赋予,讨论并实现了虚拟现实在室内虚拟漫游交互系统中的关键性应用技术。在Unity3D中实现了键盘操控人物漫游、鼠标键移动视角、替换材质及显示对话框的相关技术。在现实家装的基础上,通过模拟仿真构建具有沉浸感和交互性的虚拟环境。虚拟漫游系统不仅能为装修设计行业提供全新的一种规划方式,也提供了全新的展现与交互感受。

Unity3D;虚拟建模;场景漫游

1 引言

虚拟漫游系统是虚拟现实技术(VR)较为重要的一部分。依据研究结果,Unity3D确实是目前虚拟现实系统的最专业的引擎,用它来开发的虚拟场景,有着更佳的用户反馈。

本研究在虚拟场景漫游中实现了键盘操控人物漫游、鼠标键移动视角、替换材质及显示对话框的相关技术。在现实家装的基础上,通过模拟仿真构建具有沉浸感和交互性的虚拟环境。虚拟漫游系统不仅能为装修设计行业提供全新的一种规划方式,也提供了全新的展现与交互感受。

2 场景交互系统总体设计

虚拟漫游交互系统根据应用层面,可以分为:仅供参观者浏览的简单虚拟家装环境和以第一人称为视角,加入一系列碰撞功能,以虚拟现实技术为基础建立的虚拟现实漫游系统。在开发虚拟漫游交互系统的过程中,首先对系统进行需求分析,设计各种模型可能的交互行为;然后采集建模需要的有关数字化信息,利用3D Max制作3D仿真模型,寻找合适的平台来实现漫游。通过实验几款软件的交互功能做了比较,最终确定使用Unity3D来实现交互式的虚拟漫游系统,模拟人物在建筑内部行走、参观建筑内家具行为以及为模型更换材质等。虚拟漫游交互系统开发主要分为以下几个步骤:基础数据的采集、资料的收集与整理、三维模型的建立、三维模型的优化、材质与贴图设计、导入到 Unity3D、结合Javascript语言进行场景美化及交互式虚拟漫游系统的实现。整体设计使虚拟场景的全貌与局部、大场景与小细节相结合。本论文的研究重点是虚拟漫游功能在Unity3D 中的设计与实现。系统总体设计流程图如图1所示。

图1 系统设计流程图

3 三维场景的设计与实现

三维场景的设计与实现主要从三维场景的空间表示、三维物体的模型表示、三维场景的视觉表示、三维模型的输出和灯光布置五个部分进行分析,通过这几个部分把需要做的内容展现出来。

3.1三维场景的空间表示

虚拟漫游交互系统,最初的空间表示开发分为三个阶段:精确建模范围、整体框架布置和墙体模型构建。首先,精确建模范围主要用到的方法是测量和换算。为了更真实的表现真实世界,精细建模所表现的细节越多越好,综合程度越低越好,但这会带来庞大的数据量。同时,表现建筑的细节的另一有力手段是精细贴图,所以模型的精细程度直接影响整体建筑的真实感。除了建筑模型以外,结构≥0.5m的附属模型也值得注意,例如窗架、电视墙、围墙、踢脚线、屋顶结构等。另外,需精细建模的建筑模型的外形和纹理必须与实际建筑保持一致。

精确模型后,开始布置家装的整体框架。由于整体框架不算复杂,这里选择直接在3D Max三维建模软件中进行1:1绘制,里面的环境基本还原实际中的家庭装修环境,首先在建立新文件,选择文件新建命令,打开新建场景对话框,指定要保留的对象的类型。

建模的第三阶段是建造分体模型。首先为墙体放置窗户和门框。首先根据实际尺寸拉出一个长方形,再选择基本几何体的下拉菜单,选择复合对象,单击布尔拾取操作对象B,再单击长方形,墙体上就扣出了一个符合目标要求的窗户洞。扣除窗户洞后,在几何体菜单中选择窗选项,此时有遮蓬式窗、平开窗、固定窗等六种窗户样式可以选择。依据整体大批需要,这里选择固定窗。在前视图中拉出固定窗,修改参数,拖动模型到墙体的窗洞上即可。门扇的制作方法相同。空间表示图见图2。

图2 空间表示图

图3 人物模型动画

3.2三维物体的模型表示

对于房间内部模型的设计,根据工艺不同主要是分为四部分,家具类,装饰类,布艺类和电器类。家具类的搭建基本为大面积的立方体的搭建和细节的刻画;装饰类的构造主要依靠复杂的几何图形及修改器的大量应用;布艺类的制造主要依靠可编辑多边形中点和面的细致调整,使布艺品表面有凹凸不平感,其目的是方便贴图更生动的依附于模型上;电器类的构造最为复杂,一般为五到八个复杂的小模型实现,目的是为了增加模型的真实感。但依据工艺的分类也不是绝对分类,例如床的模型制作,床头和床架运用到的是家具类的搭建方法,而床上用品(被罩、枕头、抱枕)则运用到的是布艺类的建造方法。

3.3三维场景的视觉表示

世界上所有的事物都利用它表面的颜色、光线强度、纹理、折射率和反射率来表现各自的特性。所以三维场景的视觉表示就主要体现在模型赋予的材质上,材质更贴近实际,贴图后模型才会更加逼真。利用3Ds Max材质球中明暗器基本参数中的各向异性(phong,strauss,blinn,oren-nayar-blinn)对高光、颜色、反射率、折射率等参数进行设置,即可得到质感丰富的材质。各向异性其实就是人们通常所理解的反光,也叫阴影类型。

在本设计中,模型的材质主要分为瓷器材质,金属材质,玻璃材质和木纹材质四个部分。瓷器材质主要运用于碗碟、洗脸盆、马桶和装饰品中;金属材质主要运用于器皿、家具边角和电器中;玻璃材质主要运用于镜面、茶几、相框和酒具等透明材质的模型中;木纹材质主要运用于地板、天花板、床头柜等木质结构的模型中。

3.4三维场景的灯光布置

光有三个基本特性:光强、方向和颜色。光强是指强度与到光源距离的运算关系按照平方反比定律。即假如点b距离光源的距离为2x,点a距离光源的距离为x,那么点b所接收到的强度就是点a的1/4;方向是指根据光源与物体的相对位置,光源位置可分为四类:(1)正面光:会产生一个没有影子的影象,深度和形状是靠光影的排列表现出来的,会产生平面的二维视觉感受,也称为平光。(2)45度侧面光:这种光形态中有丰富的影调,由深度而产生立体的效果。(3)90度侧面光:这种照明通常用于戏剧性的场景,有着明暗的强烈对比,影子修长而具有表现力,物体结构十分明显,被称做“质感照明”。(4)逆光:光线从被摄对象身后射出,正对摄像机,在明亮的场景下会呈现出被摄对象深色的剪影,这种高反差影象简单又具有表现力;颜色:包括自然光照明颜色和人工光照明颜色。

本场景中的灯光布置为了更好地表现出场景模型的纹理效果,分别放置了主光和辅光。布置灯光的过程,为防止灯光效果叠加造成混乱,选择逐步添加灯光,这样既可以清楚地明白每一盏灯光对场景的作用,也能避免添加多余的灯光而导致不需要的效果和更多的渲染时间。

3.5三维模型的输出

通过3D Max建立了场景与场景中的模型后,将要把模型导入Unity3D。Unity支持从大多数3D软件中导出的模型文件,可读取的文件类型有.FBX/.dae/.dxf等格式文件;同时还支持.mov/.avi/.asf/. mpg/.mpeg等视频格式,将以上格式的文件添加到unity工程时,这些文件都将自动导入并转化格式为oggtheora;若导入的文件为.aiff/. wav/.mp3等格式的音频文件,将在Unity中转化为oggvorbis。本作品中全部为模型文件。先打开渲染场景对话框,设置文件的输出尺寸,然后在渲染输出中选择文件的保存路径,为了防止Unity中读取错误,这里要注意路径中所有文件夹必为英文。选择输出格式,设置为.FBX,然后单击渲染,即可输出模型。

4 场景交互系统的实现

场景交互系统的实现体现在人机交互上,而人机交互的实现主要依靠JavaScript语言在Unity3D中实现。主要分为角色动作功能、漫游视角功能、模型碰撞功能、更换贴图功能四个部分。

4.1角色动作功能的实现

虚拟场景漫游交互系统的漫游功能主要依靠人物模型在场景中行走实现,首先导入人物模型.FBX文件,模型自带摆动动画,分为行走和休息两部分。选中对象“Girl01”找到Inspector面板,勾选Import Animation选项,在Clips面板下截取想要表现的模型动画的片段,这里分别截取了行走动作的动画和行走停止动作的动画。接下来需要实现人机互动功能,可以通过鼠标或键盘控制任务。在Assets文件下找到code文件夹,新建名为people.js文件为人物模型编写程序。声明变量和对象,控制动画速度,同步渲染时间,在场景中找到名为“Girl01”的对象。

保存人物动画程序,将此程序文件拖拽到人物模型上,即将这段动画程序赋给人物模型。试运行工程,按键盘WASD可控制人物在场景中进行相对位移,停止操控时人物呈现休息状态。人物模型动画见图3。

4.2漫游视角功能的实现

漫游视角功能核心内容在于摄像机的程序编写。其功能体现在按 W、A、S、D 键,人物向前、左、右、后移动时摄像机跟随视角变化,看到不同的场景。在此场景中件摄像机置于人物模型头部,选用Frustum Culling(平接头体剪裁),可以使超过人物头顶部分的物体不显示。摄像机视野角度为45度,选择透视投影。跟随距离为5,高度1.2,另外要为物体添加刚体属性,赋予物体质量、阻力和角阻力,再添加重力防止人物发生碰撞后发生浮动。

4.3模型碰撞功能的实现

模型之间或模型与墙壁之间使用Box Collider进行碰撞检测。此设计中为每个模型、墙体、门框都使用了Box Collider技术。门框和餐厅处墙体由于是结构复杂的整体,所以使用基于网格的碰撞检测,因为若对门框进行Box Collider碰撞检测,人无法通过。

在Unity3D中集成碰撞检测模块,当角色靠近被碰撞物体时,系统根据碰撞检测算法检测该物体的高度,如果被碰撞物体的高度低于预设高度则人物模型可以通过,反之,模型将会被挡住,如图4所示碰撞检测原理图。

5 结论

本系统的测试主要是调试设计的代码和功能,对作品进行分模块的调试运行,检验是否有错误发生;检测无误后,方可输出为.exe文件,以方便用户浏览,并有效避免设计被二次修改,经检测,本系统能满足家装虚拟仿真的需求。未来可以在系统适时更新、虚拟家装系统的细节展示设计和体感漫游技术方面做更深入研究。

图4 碰撞检测原理图

[1]卞峰,江漫清,桑永英,等.虚拟现实及其应用进展[J].计算机仿真,2007(6):1-4.

[2]江河.虚拟现实结合交互式多媒体学习设计研究[J].攀枝花学院报,2010,27(6):21-25.

[3]许微.虚拟现实技术的国内外研究现状与发展[J].现代商贸工业,2009(2):279-280.

[4]林深华,范志尚,蒋建兵等.基于Android平台Unity3D游戏设计与实现[J].企业科技与发展,2013(10):40.

[5]倪乐波,戚鹏,遇丽娜,等.Unity3d虚拟展示技术的研究与应用[J].数字技术与应用,2010(12):54-55.

周灵(1984—),江苏常州人,博士研究生,讲师,主要研究方向:数字媒体技术、教育技术。

江苏高校哲学社会科学研究项目“嬗变与重构:媒介融合时代大学生媒介素养培养模式研究”(2015SJD324); 2016年中国传媒大学南广学院校级科研培育项目“翻转课堂理念下的教学模式改革实践研究”(2016KYPY052);江苏省高校自然科学研究项目“云存储在校园媒体资产管理系统中的关键技术研究”(14KJD520011)。

猜你喜欢
漫游材质虚拟现实
衣服材质大揭秘
霹雳漫游堂
REALITY BITES
风口上的虚拟现实
NASA漫游记
虚拟现实技术向科幻小说借灵感
外套之材质对比战
针织衫之材质对比战
10KV配变绕组材质鉴别初探
浅谈虚拟现实