准备工作:
Unity 4.6或以上免费版本即可:http://unity3d.com/unity/download
安卓SDK、JDK 1.7
VR 随便找一个Unity的Demo,SDK里面也有:https://developer.oculus.com/downloads/#sdk=mobile
VR设备一台,需要拿设备ID去换取一个文件:无此文件无法打包:https://developer.oculus.com/osig/ 并且按照官方的说法,将此文件放到以下目录
- For Unity apps, place the signature file in:
Project/Assets/Plugins/Android/assets/
Unity项目名称、公司设置 搞好; Unity菜单: File→Build Settings. 选择Android and GLES 3.0 textures.
以上准备完成,自选一个场景即可打包进行测试。场景中都自带了摄像机旋转的脚本。
深入解析:
一般情况下,把你的主摄像机改成OVRCameraRig 这个Prefab,代码上稍微处理一下不难架接。
这里主要是讲讲里Gear VR 设备上的几个键位的调用,随便建一个脚本:(本用的Unity 4.7版本,直接把SDK Source下载了下来,然后在里面的3个UnityDemo任选了一个进行研究)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
void Start() { OVRTouchpad.TouchHandler += LocalTouchEventCallback; } private void LocalTouchEventCallback(object sender, System.EventArgs args) { var touchArgs = (OVRTouchpad.TouchArgs)args; OVRTouchpad.TouchEvent touchEvent = touchArgs.TouchType; switch (touchEvent) { case OVRTouchpad.TouchEvent.SingleTap: Debug.Log("SINGLE CLICK \n"); break; case OVRTouchpad.TouchEvent.Left: Debug.Log("LEFT SWIPE\n"); break; case OVRTouchpad.TouchEvent.Right: Debug.Log("RIGHT SWIPE\n"); break; case OVRTouchpad.TouchEvent.Up: Debug.Log("UP SWIPE\n"); break; case OVRTouchpad.TouchEvent.Down: Debug.Log("DOWN SWIPE\n"); break; } } |
OVRTouchpad 是自带的脚本,以上的按键对应着VR设备边上的几个按钮,可以在里面写事件。在这里值得一说的是NGUI不能直接使用。
这脚本的实现方法其实挺2B的,如果你是一个追根溯源的人,可以去看看源代码。在这里的评论只代表我自己的使用感受。
VR左右两个摄像头带来的渲染成本也是加倍的,并且我没找到可以在PC的Unity 连Gear VR直接测试的方法,所以我每次都得单独打包到设备上进行测试。
打包出来的效果还是很好,这应该是硬件的原因。
综上,对GearVR几个不好的地方:
- 第三方UI(如NGUI)不兼容
- 用户输入的接口只有当用户手指松开时响应,效率并不是太高
- 没有USB测试的方法
- 没有设备相当于无法打包
后话:
VR行业路途漫漫,本人在一次开发者大会(忘记是哪个大会了)的NVIDA 的展台里面体验VR,里面那台主机设备比电脑主机还大,游戏是以星球大战为背景,个人玩的感觉还是不错,毕竟画面画质比起低端产品相差甚远,这么一个高端设备,在你10分钟的体验之后,也会觉得眼睛胀痛。
插一张GMIC会议一位日本人的PPT:
个人认为:VR的发展方向应该是成人领域;像游戏、电影等都不会适合它,我对VR未来5年的形势并不看好