APP下载

基于unity3d 的室内虚拟现实漫游

2020-04-10沈忠杰

山西青年 2020年5期
关键词:脚本漫游灯光

沈忠杰

桂林电子科技大学,广西 桂林 541004

虚拟现实技术是利用计算机模拟产生一个三维空间的虚拟世界,提供使用者关于视觉、听觉、触觉等感官的模拟,通过对真实环境的模拟让使用者对未来项目的具体情况有了深入理解。目前在家居设计行业得到广泛的应用和发展,当下平面图结合效果图的表现方法随着时间的发展已经不能满足业主高端的需求,业主更希望能有一个好的交互系统,能够提供一个逼真的环境来展示未来房子装修的效果。Unity3D软件在这样的环境下被应用是非常合适的,Unity3D 是一个全面整合的专业游戏引擎,Unity3D 结合3DMax 或者Maya软件就能够轻松的实现室内的虚拟现实漫游。

一、室内虚拟现实漫游关键技术

(一)虚拟现实系统开发流程

室内虚拟现实漫游系统的实现流程依次是项目分析、设计、开发、测试、修改等若干个步骤。项目制作流程主要分为三部分:(1)创建室内场景3D 模型(2)将模型导入到Unity3D 中进行材质和灯光调整(3)通过编写C#脚本,实现用户与虚拟环境间的互动。第一部分的主要工作是利用3DMAX 软件进行模型创建,同时将模型的UV 拆开,尽可能的节省UV 空间。第二部分的主要工作是在Unity3D 中将模型导入进行材质调整以及灯光的调整。第三部分利用脚本将模型与Unity3D 链接起来,能够完成用户和系统之间的交互。虚拟现实系统的开发流程主要包含以下几个方面:3DMAX 模型制作,UV 展开,模型贴图绘制,导入模型,材质和灯光调整,编写互动脚本,交互测试等几个部分。

(二)关键技术要点

在室内虚拟现实漫游系统开发中3DAMX 模型制作要控制面的数量以及面的布线,在建模中不允许出现大于四边面的面,UV 展开在绘制贴图时贴图最好用一整张。Unity3D中光照贴图的计算利用进而采用PowerVR Ray Tracing 和Enlighten 的结合进行光照贴图计算,两者无缝的拼接起来,最终保证在画面上面不会有任何的走样效果。在Unity3D 中实现交互,利用C#进行脚本编写,然后将脚本链接到相机上或者链接到角色上。

1.相机运动控制方法

用户可以利用“W”、“S”、“A”、“DT”键控制相机在场景中向前、向后、向左、向右运动来实现相机的虚拟漫游,同时也可以鼠标的旋转来控制摄影机的观察角度。我们编写相机控制脚本,然后将脚本链接到相应的摄影机,以下是相机运动的代码片段。

2.碰撞检测

在Unity3D 中,通常利用碰撞器来检测对象间是否发生碰撞。Unity3D 中内建的碰撞器有多种类型,我们可以为物体添加碰撞器进行测试物体间的碰撞效果,我们在测试中要注意碰撞发生的条件及因素,在Unity3D 中能够检测碰撞发生的方式主要有两种,一种是利用碰撞器,另一种是利用触发器。完成物体碰撞实现的步骤如下:(1)为需要进行碰撞检测的对象添加规则的长方体碰撞或球体碰撞;修改碰撞体的相应属性,确保能够将检测对象完全包围住;将长方体碰撞或球体碰撞的触发属性设置为开,这样表示要检测的对象碰撞有效。(2)编写碰撞脚本,然后将其指定给待检测对象,代码片段如下。

3.灯光烘焙

灯光烘焙技术利用Light Mapping(光照贴图技术)来烘焙物体,这是一种增强场景光照效果的技术,当我们把物体放进场景中,引擎就会计算光线,光线照到物体表面形成反光和阴影,一般有两种情况:当不烘焙物体时,游戏运行时,反光和阴影都是由显卡和CPU 计算出来的;当烘焙物体时,反光和阴影都会记录到模型中,变成新的贴图,游戏运行时,显卡和CPU 不需要对环境光进行运算,正好大大节约了CPU 的资源。灯光烘焙具体操作如下:(1)首先创建一个天空盒,将天空盒赋予材质(2)创建反射探头,将反射属性调整为环境帧,环境就可以跟随物体而产生运动,然后再调整灯光探头组将灯光效果也跟随到物体的运动。灯光烘焙代码片段如下:

二、室内漫游系统的实现

(一)模型及贴图细节控制

在虚拟现实系统实现的过程中,模型要还原真实场景,建模中我们采用1:1 的建模流程。同时注重模型的整体布线结构以及平滑原理及方法,将场景中交叉看不到的模型删除。建模中合理优化面的数量,在场景中需要特写的部分我们需要比较高数量的面来完成。不需要特写的部分例如:窗户上的格子,以及衣柜上的雕花,还有电视背景墙上的花纹细节都可以用贴图来实现。贴图中按照UV 展开的方法进行贴图,这样可以节省贴图数量同时方便灯光烘焙,贴图在绘制过程中注意光影和明暗关系的处理,不要出现过多色块的部分,在烘焙中会影响到灯光效果。

(二)界面及功能设计

在Unity3d 中对整体界面进行设计,我们可以采用UGUI组件进行页面布局,UGUI 中区域浏览能让用户直接到达指定的浏览区包括游戏窗口、文本窗口、输入框、按钮、贴图框等。整体的技术要点是绘制一个Canvas 画布,将所有需要排列的按钮及内容呈现在画布上,按钮触发事件方式有多种,例如:依靠属性面板绑定物体然后找到物体脚本上的方法触发,还有是用纯代码的方式进行触发事件发生。UGUI 优点是高效、快速、同时可视化效果好。

(三)交互性设计

Unity3D 利用脚本添加来实现用户与环境间的互动,在开发中主要用C#来编写脚本,将编写好的脚本链接到要控制的对象上。在Unity3D 中内置了物理引擎,可以利用实现自然现象的模拟,也可以利用刚体来模拟对象之间的碰撞。环境漫游通过利用键盘和鼠标控制相机的运动来完成。用户可以通过第一人称视角对环境的漫游、浏览,如果在开发中想让相机自由的漫游可以通过加载CameraPath 插件来完成,相机可以沿着指定的路径进行场景漫游,在漫游中可以通过触发器来触发灯光和声音效果。

三、结束语

本文以3Dmax 为建模工具,利用Unity3D 游戏引擎,结合C#脚本语言开发了室内虚拟现实漫游系统,在系统开发过程中严格按照流程化的方式进行,前期建模阶段按照建模标准进行,后期材质的烘焙,脚本的编写及链接到对象都是难点,是我们重点把握的部分。本系统的开发流程不仅仅使用于室内虚拟现实漫游系统,也适合其他的系统。例如:建筑漫游系统,景观漫游系统等都可以借鉴本文的方法。

猜你喜欢

脚本漫游灯光
今晚的灯光亮了天
霹雳漫游堂
自动推送与网站匹配的脚本
霹雳漫游堂
友谊的小船说翻就翻
举一反三新编
边走边看:漫游海底 梦想成真
愚公移山
万家灯火之百变灯光