APP下载

基于HTC Vive 的车间虚拟漫游系统设计与研究

2019-03-05宋世坤

现代计算机 2019年3期
关键词:漫游手柄车间

宋世坤

(四川大学计算机学院,成都610065)

0 引言

虚拟现实是一种结合多媒体技术、图形学和人机交互技术等科技发展的最新技术,综合应用光学、数学、力学等学科,在计算机上生成可交互的三维环境,并利用多源信息融合的交互仿真使用户达到沉浸式的效果,随着信息技术和互联网技术的飞速发展,虚拟现实已渐渐渗透到生活中的各个方面,并在这些领域大放异彩,由于它具有基于虚拟现实技术的交互性、体验性和沉浸性,使比起文字描述、全景图片等形式的展示方式更具有优势,本项目基于HTC Vive 头盔手柄设备作为交互方式,以Unity3D 为主要开发工具,以车间为背景,真实还原生产车间中设备与房间,使用户达到身临其境的观感。

本项目实现功能有:

(1)第一人称与第三人称漫游。支持真实三维场景浏览,支持多视角浏览、多视距浏览,第一人称视角漫游:提供第一人称视角漫游,通过交互手柄控制视点位置前进、后退、旋转,改变视角观看内容。第三人称自由视角:提供第三人称自由视角,通过交互手柄控制视点位置,自由旋转、拖曳、放大、缩小,改变视角观看内容。

(2)人机交互与设计,文字、箭头等展示效果的显示与隐藏。提供交互界面,用户可以浏览厂房的介绍信息,介绍内容以文字方式表现,能够通过交互操作隐藏和显示文字信息。

(3)虚拟仪表和监控界面设计和开发。系统通过虚拟仪表和监控界面显示车间内部的工作状态,虚拟仪表及监控提供数据输入接口,供其他系统或软件将获取到的传感器数据实时传入。

1 硬件与软件工具简介

1.1 浸入式虚拟现实硬件设备HTC Vive

HTC Vive 在2015 年巴萨罗那世界移动通信大会上首次公开面世,由HTC 与Valve 两家公司联合研发出的VR 虚拟现实产品,主要包含1 个头戴式显示器,2 个激光传感定位器,2 个单手控制器,其中头戴式显示器通过左右眼观看不同显示屏蔽达到实现双目立体视觉,采用OLED 液晶屏来作为头盔显示器的屏幕,该屏幕双眼合并的有效分辨率高达2100×1600 像素,其较高的分辨率可以有效降低画面的颗粒感,从而达到不错的用户体验,2 个手柄有多个功能按钮,通过判断是否按下的状态信息实现丰富的交互功能,2 个定位系统采用的是Value 公司研发的Lighthouse 来作为产品的特有定位系统控制器,Lighthouse 由两个基站构成,其主要原理是通过发射的激光和光敏传感器之间的相互交互来确定物体的运动轨迹和位置,从而得到六自由度信息。

1.2 Unity3D三维引擎

本项目的仿真系统是基于Unity3D 平台实现的,Unity3D 是由Unity Technologies 开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型开发工具。它是能够将开发的产品发布到Windows、Linux、Mac、iOS、Android 等平台上的轻量级引擎,具有操作简单、跨平台、所见即所得的模型实时渲染效果。同时由于社区的活跃,用户许多丰富实用的插件资源,脚本是Unity3D 逻辑功能实现的核心,Unity 脚本支持三种语言,C#、JavaScript 和Boo 脚本,其中Boo 脚本用的较少,C#和JavaScript 为主流,将脚本拖到对应的游戏对象上,设置好初始参数和对象,点击程序运行就能实现相应的功能了。

2 虚拟现实车间漫游系统开发流程

2.1 三维虚拟场景的创建

前期根据需求分析得到需要创建的场景,进行车间实地测试及现场调研,搜集对应的数据和材料,确立平面图,建筑风格,场景面积大小,交互功能设计,动画制作等方便后期制作。对于场景模型的建立,有多种方法,一种是利用Unity 引擎本身的建模功能创立物体,另外一种是利用专门建模软件进行制作,常见的建模软件有3DMax、Maya 等,每个软件有各自的优势,3DMax 适用于工程建模、室内外场景等方面的指针而Maya 偏向于三维动画、电影的制作,因此,本项目选择3DMax 更加合适。充分利用3DMax 的可视化特点,从现场拍摄的图片中,根据三维视图和相关的数学摄像原理,得到车间中各个设备的大小,完成三维虚拟建模,建模过程中要遵循以下原则:①为了达到场景的流畅运行,要尽可能地控制模型的面数;②对于看不见的部分,合理的删除面片数据;③UV 拆分中UV 点均匀分布,防止后期贴图出现画面变形失真。三维模型优化有很多的技巧,主流的有LOD 技术,这种技术是根据视点的远近选择不同性能的模型,对于在远处的场景,选择面数少的,不仅保全了模型的视觉效果不影响整体感官,而且提高了模型的绘制速度,使系统加载响应更快。建立完模型后,保存后将其导出为.fbx 的文件,存入到Unity 项目Project 文件夹中。其中导入有物体的位置信息、材质、贴图、动画等。最终参考效果间图1。

图1 车间内部模型

2.2 HTC Vive与Unity的结合

按照官网的教程下载相应的驱动,之后安放2 个激光定位传感器,将头盔和手柄控制器放在定位器可见的范围内,然后就是定位,即需要设置一个原点的位置,构造一个虚拟的坐标系统,一起设置好之后,便可以准备开发了,虽然官方提供的SteamVR 插件提供了一个C#接口,让开发人员可以与Vive 设备进行交互,但获取控制器输入状态或设备姿势会导致大量冗余代码,主要为以下两点:①您必须连续获取正确的设备索引(2 个手柄控制器的哪一个),该索引由Steam-VR_ControllerManager 在连接控制器时确定;②定位SteamVR_ControllerManager 也会带来更多的开销,所以这里我们采用的是ViveInputUtility 插件,封装了底层细节,让我们开发更加简单,ViveInputUtility 有以下一些特点,使用静态函数获取设备输入按钮事件跟踪姿势,使用ViveRaycaster 组件发送射线,可以实现多种碰撞检测,包含2D、3D、UI 等。下面是一些C#脚本示例:

配置ViveInputUtility 插件的具体步骤如下:①打开Steam 平台下载SteamVR 这是由Value 提供的官方库,可以简化Vive 开发;②在Unity 的AssestStore 中下载ViveInputUtility 插件;③导入到工程中,选择默认的推荐设置;④将ViveInputUtility 中的预设体拖到项目中,根据功能的需要,给相应的物体加上可拖拽,可瞬移的脚本。

2.3 功能的开发与发布

(1)视角的切换

通过在场景中放置多个摄像机,当获取到手柄控制器按下扳机的指令时,进行视角的切换,即隐藏第一人称相机,将其状态设置为GameObject.SetActive(false),同时打开第三人称相机进行人物移动的跟随,保持一定的距离。主要代码如下:

(2)交互组件开发

HTC Vive 设备通过控制手柄来实现输入信息,可以使用瞬移、点击、拖拽等功能。实现瞬移功能时,要预先设置好可瞬移的区域,避免造成画面的丢失。因为不能够让用户可以走出到场景之外的区域或者穿越到不透明物体的内部,这里采用虚拟碰撞器的原理,当到达边界时,由于存在碰撞检测算法,控制器便不能继续往边界之外移动了,瞬移地点的选择方式为贝塞尔曲线,生成选择地点的远近由用户使用控制器手柄的方式,越高则可选择的范围越大,如果用户将手柄举起角度大于45 度,系统会锁定这个距离的交点,从而实现瞬时移动。使用瞬移的好处是减少不适感,由于要达到流畅的VR 体验对硬件设备要求比较高,所以采用瞬移的方式具有普遍性,减少用户的疲惫感和眩晕感。

3D 拾取技术,在漫游过程中,用户可以通过发射射线与场景中的物体交互,其主要原理是由摄像机和屏幕上的位置确定一条射线,射线指向3D 世界,最先第一个可碰撞的物体与此射线相交的物体就是被选中的物体,通过捕获这个消息,可以实现材质的更改或者动画的播放,从而达到交互的目的。

(3)打包发布

完成所有的场景创建和功能开发后,选择要运行的平台操作系统,即可将整个平台发布为可执行.exe文件,连上HTC Vive 设备后,点击运行该应用程序即可实现漫游效果。

3 结语

本项目通过对虚拟现实车间漫游的研究与实现,利用建模软件3DMax 进行车间实体场景的真实还原,通过HTC Vive 作为交互设备和Unity 作为开发工具实现了车间的交互式漫游体验,实现了多种视角的漫游体验,通过其交互功能更加生动了模拟真实生产中的过程,证明了虚拟现实技术用于展示与生产教学的有效性,同时这些技术也可以应用于其他相关领域的仿真,具有一定的借鉴性。

猜你喜欢

漫游手柄车间
九连环玩法大解密
100MW光伏车间自动化改造方案设计
招工啦
霹雳漫游堂
霹雳漫游堂
“扶贫车间”拔穷根
微软发布两款全新Xbox One手柄
为什么厨具的手柄不是金属的?
银行家
边走边看:漫游海底 梦想成真