基于Unity3D 的样板房虚拟现实漫游

2019-10-15 07:17米丹王琴王春洁
现代计算机 2019年24期
关键词:漫游手柄列表

米丹,王琴,王春洁

(四川大学锦城学院,成都611731)

0 引言

近年来,科技的飞速发展同时也使得虚拟现实技术不断发展,其科技性、艺术性以及真实性引起了全球的关注,如今其应用的范围已经极其广泛。在房地产方面,虚拟现实技术也是将其作用与优势发挥得淋漓尽致,通过虚拟现实技术进行样板房的近似真实地漫游,使用户切实地感受与体验,并且虚拟现实技术模拟天气、昼夜等特殊环境与情景,使场景更加真实。

本项目主要实现的有:

(1)第一人称的漫游。在近乎真实的三维场景中,通过手柄控制进行瞬移,达到前进、转身、后退等效果;同时头戴式设备根据体验者转身等,改变视角观看内容;

(2)人机交互设计。用户在三维虚拟场景中通过瞬移进行漫游,当靠近交互对象,使用手柄扳机按下即可对物体进行抓取查看;提供交互界面,通过手柄射线检测显示选中的logo,开启地板材质切换功能,选择材质进行切换;为场景添加粒子系统与昼夜系统,模拟现实世界的下雪场景,以及体验昼夜变化。

(3)高清渲染导出。使用Lumion3D 可视化工具,将3DS Max 中的模型打包导入其中,通过使用快如闪电的GPU 渲染技术,实时编辑3D 场景,并且最终使用内置的视频剪辑器创建视频导出。

1 硬件与软件工具介绍

(1)沉浸式虚拟现实头戴设备HTC VIVE

HTC VIVE 是由HTC 与Valve 两家公司联合研发出的虚拟现实产品,分为三个部分达到给用户沉浸式的体验:1 个头戴显示器,2 个激光传感定位器,2 个手柄控制器;其中头戴显示器通过左右眼观看不同显示屏蔽达到双目3D 叠加后的视觉效果,采用OLED 液晶屏作为头盔显示器的屏幕,该屏幕双眼合并的有效分辨率高达2100×1600 像素,其清晰的分辨率有效地降低了画面的颗粒感,即使近视400 度左右的用户在没有佩戴眼镜的情况下,也可以清楚地看到画面中的细节;2 个手柄有多个功能按钮,通过判断是否按下的状态信息来实现丰富的交互功能;2 个定位系统采用的是Value 公司的Lighthouse 作为产品的特有定位系统控制器,Lighthouse 由两个基站构成,其主要原理是通过发射的激光和光敏传感器之间的相互交互来确定物体的运动轨迹和位置,从而得到六自由度信息[1]。

(2)Unity3D 开发引擎

本项目的实现是基于Unity3D 平台完成的,Unity3D 是由Unity Technologies 开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎;其官方资源商店中的可用资源,包括插件以及粒子效果等都使开发者能够更好地对Unity3D 项目的制作进行深刻的理解。

2 虚拟现实漫游设计与实现

2.1 三维虚拟场景搭建

前期根据实际情况,确立场景的面积大小,建筑风格,交互功能设计想法以及视频制作方法等,在收集相关样板间资料以及学习制作模型后,创建岛屿以及透明落地窗式两层小型建筑,丰富室内家具以及摆件。建模常见软件有多种,例如3DS Max、Maya 等,每个软件有各自的优点和缺点,3DS Max 在建筑效果行业使用更加广泛,操作流程相对熟练,所以在该项目中使用3DS Max 进行建模。主要按照实际大小比例进行模型创建,样板间以简洁大方风格呈现,材质主要以浅色木材、弱反光金属以及乳胶漆等清新材质为主。导出fbx格式文件效果如图1 所示。

图1 样板间整体框架

2.2 HTC VIVE与Unity3D结合

HTC VIVE 手柄和头戴显示器将数据传递回电脑,结合HTC VIVE 基站定位技术,使游戏中的场景和物体的运动轨迹和现实世界保持一致[2]。下载SteamVR与VRTK 插件资源包,将资源导入Unity3D 中,在PC端上安装Steam 平台,连接配置软硬件。HTC VIVE 中定位器将根据用户设置的碰撞边界,当用户在现实世界中太靠近时,对用户进行提示。最后,利用SteamVR与VRTK 提供的C#接口以及逻辑控制脚本即可实现部分基础功能。

2.3 功能实现

用户体验在三维虚拟场景中的移动旋转,并且走进对象进行抓取查看。实现瞬移通过SteamVR 与VRTK 的集成:创建空物体命名为VRTK_SDKManager,用来管理任何进行设置的VRTK_SDKSetup,VRTK_SDKManager 对象下创建两个子物体命名为Leftcontroller 和RightController,利用VRTK_Controller Events、VRTK_Pointer 以及VRTK_Straight Pointer Renderer 脚本对左右手柄进行配置,最后空对象PlayArea通过VRTK_Basic_Teleport 实现瞬移区域的设置。

对物体的抓取在瞬移的功能基础上实现,在Left-Controller 和RightController 对象上添加VRTK_Interact Grab、VRTK_Interact Touch 以 及VRTK_Interact Use,表示此控制器可以进行抓取、触碰、使用。

(1)场景跳转

该功能通过视线碰撞检测实现。用户进入碰撞范围内,并且当视线看向凝视图标时,开始加载进度条,若成功将进行场景的切换。代码思路流程图如图2所示。

图2 凝视功能流程图

(2)控制电视的播放,通过手柄发出射线,碰撞检测电视屏幕上的“开始播放”按钮,进行视频播放,同样可以进行暂停以及继续播放。利用C#脚本进行控制,脚本中包含一系列的逻辑代码以及调用操作。

借助Unity 的shader 中的Unlit/Texture,将ogv 格式的视频绑定到此类shader 的材质球上,通过脚本控制交互,再利用canvas 新建pannel 作为视频的播放介质,将绑定了目标视频的材质球绑定到image 属性里,并且为了控制交互,再为其添加button 组件,当button按钮被触发时,绑定脚本中的自定义函数,实现视频的播放。

在自定义函数中,声明了image 属性的moviePanel视频播放面板以及MovieTexture 格式的视频,通过(MovieTexture)moviePanel.material.mianTexture 方 法,获取材质中绑定的目的视频,存入变量,如果视频正在播放,则将其暂停,如果处于暂停,则恢复播放。

(3)地板材质切换,通过被选择的按钮进行触发,手柄发出的射线点击按钮,出现材质列表,用户选择材质,地板将切换到相应的材质,脚本的控制和UI 界面同时设计实现该功能的效果。脚本主要代码如下:

//创建材质容器列表,材质按钮原型

public FloorMatData[]MatdataList;//材质数据

private bool isOpen=false;//材质列表是否打开

public Transform matUIContainer;//材质列表容器

public GameObject matButtonPrefab;//材质按钮原型

//初始化函数:遍历生成材质列表容器中的材质,保证八种材质都被生成且不重复;

//设置logo 的动态动画,使用户能够更容易看到,提升体验感。在设置按钮的动画功能中,泳道了DOTween 插件,其中Append 方法使按钮在调用一次后产生补充动画,参数t1,t2 的scale 不同,然后使用SetLoops(-1)进行无线循环,这样使得Append(t1)和Append(t2)不断循环,按钮大小交替,产生动态跳动效果;

Sequence seq=DOTween.Sequence();

Tween t1=matListButton.transform.DOScale(Vector.one*1.2f,0.5f);

Tween t2=matListButton.transform.DOScale(Vector.one,0.5f);

seq.Append(t1);

seq.Append(t2);

seq.SetLoops(-1);

//当用户点击材质列表中的材质对地板进行材质切换时,如果用户所选是列表中的材质并且当前地板不是该材质,那么将该材质通过获取地板的Renderer 组件中的material 方法赋予地板;

private void onMatButtonClick(GameObject button)//材质按钮点击处理函数

最后为logo 按钮绑定Onclick 事件。

(4)昼夜系统

昼夜系统使用lens flare 组件调节太阳光的颜色以及光晕,模拟现实世界太阳光的变化。通过太阳围绕场景旋转一周进行日落日出的实现。核心代码如下:

(5)粒子系统表示三维计算机图形学中模拟一些特定的模糊现象的技术,在三维空间渲染出来二维图像,由粒子发射器、动画器以及渲染器三个独立部分构成。在本项目中使用粒子系统模拟雪景,产生真实而又带有随机性的效果。

(6)动画视频渲染导出

最后,利用一款Lumion 渲染软件将Unity 中整体场景导入其中,Lumion 是ACT-3D 公司推出可视化三维软件,可用来制作影视动画和建筑效果图。通过导入主流3D 制作软件所创建的模型和材质后,结合软件自带的场景模块,创建立体逼真的自然景观。优秀的图像质量,高效的运算渲染速度,实时3D 场景编辑功能,短时间内就能创造出惊人的可视化3D 景观效果,Lumion 现已成为影视后期制作的一大利器[3]。

选择渲染风格以及放置小摆件等,对场景进行丰富,保证后期制作的美观性。利用Lumion 导出视频。

3 结语

本次项目通过对虚拟现实样板间漫游的研究和实现,利用3DS Max 进行建模场景搭建,并在Unity3D 中结合虚拟现实技术实现样板间的漫游以及一系列人机交互设计。构建出的交互系统逼真,且在日后房地产以及虚拟现实技术的发展中比较具有意义。在本次设计中,系统交互功能不够完善和丰富,在今后的研究中将丰富交互逻辑以及数据库连接实现动态存取等内容。

图3 Lumion渲染效果

猜你喜欢
漫游手柄列表
九连环玩法大解密
扩列吧
霹雳漫游堂
霹雳漫游堂
微软发布两款全新Xbox One手柄
列表法解分式方程问题探索
列表画树状图各有所长
为什么厨具的手柄不是金属的?
银行家
2011年《小说月刊》转载列表