简单粗暴,一个插件让你无代码实现VR交互

开发环境steamVR2.0+unity2017.1.0f1
steamVR2.0下载地址一、总体目标
Unity+HTC VIVE 开发:
1、场景漫游+摄像机自动漫游
2、启动动画+滚动条
3、对墙壁、地板进行纹理修改
4、对场景中的某个家具进行旋转、移动、删除、添加功能
5、灯的开启和关闭
6、电视的开启和关闭
7、音乐的开启和关闭
8、实时获取当前系统时间
9、动态天空盒
10、有样板菜单,进入另一个场景,能够整体查看,样板房可以旋转,放大缩小和复位,高亮显示客厅

1、场景的主体模型如下图所示

unity 虚拟漫游 怎么用unity漫游交互_unity


实现过程

项目的前期准备工作

1、新建一个项目

2、将steamVR插件导入导目中

3、将项目所需要的模型以及材质导入场景中去

4.2 项目各功能详细介绍:

(1)在场景中加入steamVR的插件如下图所示:

unity 虚拟漫游 怎么用unity漫游交互_unity_02

SteamVR中的player预制体自身带有碰撞体和移动脚本等还有手柄、头盔识别等插件。

(2)场景漫游

给地板复制一层,略高于原来的地板,在Hierachy面板拖入Teleporting组件,地板加入

unity 虚拟漫游 怎么用unity漫游交互_steamVR2.0_03

即可实现场景漫游

(3)摄像机自动漫游,给另一个Camera自定义一个动画路径

unity 虚拟漫游 怎么用unity漫游交互_steamVR2.0_04

需要自动漫游的时候,点击按钮,开启camrea的自动漫游,隐藏Player下的camera,漫游结束再开启

unity 虚拟漫游 怎么用unity漫游交互_steamVR2.0_05


unity 虚拟漫游 怎么用unity漫游交互_unity_06

核心代码:

unity 虚拟漫游 怎么用unity漫游交互_unity_07


unity 虚拟漫游 怎么用unity漫游交互_VR_08

(4)启动动画

在Player setting设置一下:

unity 虚拟漫游 怎么用unity漫游交互_VR_09

运行打包好的exe文件,开始就是启动动画

unity 虚拟漫游 怎么用unity漫游交互_unity_10

进度条的实现,主要是利用异步加载多线程方法,

新建场景如下图设置:

unity 虚拟漫游 怎么用unity漫游交互_steamVR2.0_11

核心代码:

unity 虚拟漫游 怎么用unity漫游交互_unity 虚拟漫游_12

实现:

unity 虚拟漫游 怎么用unity漫游交互_unity 虚拟漫游_13

(5)对墙壁.地板进行纹理修改

利用Button点击事件,button添加UI Element和box collider组件,如上图设置即可

对墙纹理修改:

unity 虚拟漫游 怎么用unity漫游交互_unity_14


unity 虚拟漫游 怎么用unity漫游交互_VR_15

对地板纹理修改:

unity 虚拟漫游 怎么用unity漫游交互_室内漫游_16

(6)电视和音乐的开关

分别给电视和音响添加Video Player和Audio Source,然后添加视频和音乐

unity 虚拟漫游 怎么用unity漫游交互_VR_17


unity 虚拟漫游 怎么用unity漫游交互_steamVR2.0_18

默认不勾选,然后按钮开关控制电视和音乐的开启和关闭

unity 虚拟漫游 怎么用unity漫游交互_unity 虚拟漫游_19


unity 虚拟漫游 怎么用unity漫游交互_VR_20

当手柄触碰开关按钮即可控制电视和音乐的开启和关闭。

(7)灯的开关

关灯

unity 虚拟漫游 怎么用unity漫游交互_unity 虚拟漫游_21

开灯

unity 虚拟漫游 怎么用unity漫游交互_室内漫游_22

(8)1.可以控制物体的移动,比如拿起遥控器,在遥控器那里添加组件

unity 虚拟漫游 怎么用unity漫游交互_VR_23

2.花瓶的旋转

写一个脚本控制旋转,核心代码如下:

unity 虚拟漫游 怎么用unity漫游交互_unity 虚拟漫游_24

把脚本挂在物体上,用按钮控制,勾选事件即可

3.删除功能

删除场景中的花瓶,核心代码:

unity 虚拟漫游 怎么用unity漫游交互_室内漫游_25

添加功能

可以生成一本书,核心代码:

unity 虚拟漫游 怎么用unity漫游交互_unity_26

(8)动态天空盒的功能

可以实现让天空盒转动,具有比较真实的效果,写脚本实现,核心代码:

unity 虚拟漫游 怎么用unity漫游交互_VR_27

(9)实时获取当前系统时间

核心代码:

unity 虚拟漫游 怎么用unity漫游交互_unity 虚拟漫游_28


unity 虚拟漫游 怎么用unity漫游交互_unity 虚拟漫游_29


(10)样板菜单,进入另一个场景,整体查看

unity 虚拟漫游 怎么用unity漫游交互_室内漫游_30

1.有旋转功能,样板房添加之前写好的Rotate脚本,可控制x,y,z轴转动

2.有放大缩小功能,位置复位功能,核心代码:

unity 虚拟漫游 怎么用unity漫游交互_unity_31


unity 虚拟漫游 怎么用unity漫游交互_unity_32


unity 虚拟漫游 怎么用unity漫游交互_室内漫游_33

3.客厅高亮功能,核心代码

unity 虚拟漫游 怎么用unity漫游交互_unity 虚拟漫游_34

unity 虚拟漫游 怎么用unity漫游交互_unity_35


通过这次虚拟现实开发技术的实习,学习了很多新知识,知道怎么实时获取当前系统的时间,利用脚本可以实现天空盒的动态运行,特别掌握了如何异步加载进度条切换场景.最大的收获是加强了我的VR开发技能 ,对SteamVR插件又有了一些很深的认识。当然实现这个系统也遇到了不少的问题,如果用Throwable组件拾取物体的话,物体必须是非静态的才可以,在写判断动画播放方法的时间,写在了update函数外,后面问了老师才知道,判断动画播放结束必须是要放在update函数里的,这样它才能不断的监听动画播放结束。

这样的VR交互简直不要太简单了。