基础
开始用unity进行基础VR开发之前,先配置好并且安装好unity以后,在打开unity之前,保证DK2已经连接好,并且已经启动。在进行接下来的操作之前,先检查一下Oculus的 配置工具是否正常工作。可能需要先设置一个新用户来运行Demo场景。
创建你的第一个VR项目
先创建一个测试项目,然后创建一个能在VR中观察的立方体作为开始。如果你打算研究更详细的现成的VR示例,可以下载在概述中提到的VR示例项目
步骤1:在Unity启动时跳出的对话框中,创建一个空工程。
步骤2:平台选择里,选择PC, Mac & Linux Standalone。在最上面的菜单栏里选 File > Build Settings。
步骤3:在新建的空场景中,创建一个立方体(Game Object > 3D Object > Cube) 然后用移动工具把它的位置调整到默认的住摄像机前。
步骤4:保存当前场景(File > Save Scene).
步骤5:Edit > Project Settings >Player 打开Player 设置面板,检查是否已经勾选了“Virtual Reality Supported" 。
步骤6:点击界面上方的Play按钮,进入Play模式
现在应该可以在DK2上看到这个场景了,同时电脑屏幕的Game窗口里有摄像机的镜像。在DK2中向周围看一下,在Unity中会改变同样的位置或者旋转。
解决故障:如果你不能在DK2中看到场景, 一下的几个提示可能会有帮助:
·确认DK2在打开Unity 项目之前,已经正确的介入,并且已经打开。
·检查Occulus Configuration Utility(Occulus 配置程序)中的Demo Scene(示例场景) 是不是能够正常查看。
·升级显卡驱动
·确认已经安装了Oculus Runtime 0.8或者更高。
更多VR方面的援助,请到Unity VR Forum(Unity VR 官方论坛)
VR开发的实用信息
VR开发和标准Unity开发时很相似的,但是有一些需要注意的区别。
Editor中的(Frame Rate)帧数
在editor中查看项目时,需要注意因为渲染了两次同样的内容,可能觉得有一些延迟和抖动。渲染Unity IDE 同样会有一些复旦,所以最好是时常build一下项目,然后直接运行,来测试项目在设备上的性能。
摄像机移动
你不能直接在Unity中移动VR摄像机。如果希望移动或者旋转摄像机,需要把摄像机放到另一个GameObject下面成为子对象,然后对父对象进行进行操作。
比方说这个例子,VR Samples 项目中的Flayer and Maze。如果你希望获取这些节点的位置,需要使用InputTracking 类。
摄像机节点
左眼右眼并不是在Unity中创建的,如果需要获取场景中各个眼睛所在的位置,使用以下的脚本,然后添加到摄像机上。
VR中的滤镜特效
VR项目中,很多图像滤镜效果都很消耗资源。由于渲染了两次场景,每只眼一次,大多数滤镜都会对帧数和性能有很大影响而没有使用。
由于VR是 把眼睛放在虚拟场景中来展示画面的,一些图像滤镜并没有什么意义。举例说明,景深,模糊,镜头光晕,基本上没有什么用,因为他们也不会在真实世界中看到。如果VR 头戴设备最终支持了眼球追踪,那景深就有道理了。
有一些可以使用的滤镜:抗锯齿会很有用(特别是在低画质的时候),颜色分级 也是当然需要的(查看实用的Unity 博客获取更多信息),然后Bloom滤镜在某些游戏里会有效果,所以比较好的想法是去试验看看具体什么滤镜在游戏中有用。
Unity提供了一些合适的图像滤镜来给你使用(Assets > Import Package > Effects),Asset Store 中也有很多很棒的图像滤镜,例如Colorful,Chromatica,Amplify Color 和 其他。
渲染比例(render scale)
根据正在运行的VR场景的复杂度,可能需要调整渲染尺寸。这会影响纹理:镜头前的像素比例修正,意味着我们会牺牲更多的性能和锐度。
这个只能通过代码来设置, 参考文档:http://docs.Unity3D.com/ScriptReference/VR.VRSettings.html,按照如下的代码设置比较容易:
我们的VR演示项目里有个基础的例子,在Scenes/Examples/RenderScale 场景中。在MainMenu场景中也用到了。
修改渲染比例示例:Unity中默认的渲染比例是1.0:
如果把渲染比例调整到1.5,模型看起来更清晰:
最后,如果把渲染比例调整到0.5,图像看起来更像素化:
根据场景的运行状况,有可能需要降低渲染尺寸来增进显示性能,或者增加渲染比例来提高显示的锐利度。
现在你已经对Unity中的基础VR集成更熟悉了。下一篇文章,VR中的交互,会学习如何在VR中与物体交互。