VR基础开发
按照前面所描述的安装后软硬件环境.并在Oculus Configuration Utility运行Demo Scene场景确保DK2的连接和配置正确.
创建第一个VR项目
我们现在开始创建一个VR测试项目,在场景中放置立方体便于查看运行效果,可以从资源商店里下载更精美的示例场景(https://www.assetstore.unity3d.com/#!/content/51519).
第一步: 打开Unity,新建个空项目.
第二步: 确保选择的PC, Mac & Linux Standalone 平台,在File > Build Settings设置.
第三步: 创建一个立方体(Game Object > 3D Object > Cube)并用移动工具把它放在默认主相机的前方.
第四步:保存场景 (File > Save Scene).
第五步:到Edit > Project Settings > Player下选”Virtual Reality Supported”复选框.
第六步,点击Play按钮进入播放模式
现在可以在DK2中看到你的场景.同样的你可以在Unity的Game视图看到相同的画面.
故障排除: 如果在DK2中看不到场景,可以试试下面的方法:
- 在打开Unity项目之前确保DK2连接好电脑并且开启电源.
- 在Oculus Configuration Utility查看Demo场景是否正常运行.
- 更新你的显卡驱动.
- 确保安装了Oculus Runtime 0.8(https://developer.oculus.com/downloads/)或更新版本.
如果仍旧没有解决需要在VR开发需要援助请查看Unity的VR论坛:forum.unity3d.com/forums/virtual-reality.80/
VR开发中一些重要信息
VR的开发与常规Unity开发非常相似,但还是有一些差异的.
编辑器中的帧率
如果在编辑器中运行VR项目,可能会遇到一些延迟和抖动,由于电脑要渲染两次相同的内容,Unity编辑器界面绘制也会消耗一定资源,所以最好要偶尔把项目编译出来直接运行它来检查效率.
相机的运动
在Unity中不能直接移动VR相机,如果你想改变它的位置和朝向,要确保相机有一个父物体,并去移动或旋转这个父物体.
可以查看VR示例项目中的Flyer和Maze场景我们操作移动相机的方法.
相机节点
Unity中是不需要创建左右眼相机的.如果你想活的左右眼相机的位置,你只能用InputTracking(docs.unity3d.com/ScriptReference/VR.InputTracking.html)类.如果你想在场景中获得左右眼相机的位置或者用来测试之类,可以用下面的脚本附加到相机上来查看.
using UnityEngine; using UnityEngine.VR; public class UpdateEyeAnchors : MonoBehaviour { GameObject[] eyes = new GameObject[2]; string[] eyeAnchorNames ={ "LeftEyeAnchor", "RightEyeAnchor" };void Update() { for (int i = 0; i < 2; ++i) { //如果左右眼对象没有父物体,就不能用它 if (eyes[i] != null && eyes[i].transform.parent != transform) { eyes[i] = null; } // If we don't have an eye anchor, try to find one or create one if (eyes[i] == null) { Transform t = transform.Find(eyeAnchorNames[i]); if (t) eyes[i] = t.gameObject; if (eyes[i] == null) { eyes[i] = new GameObject(eyeAnchorNames[i]); eyes[i].transform.parent = gameObject.transform; } } // 更新眼睛位置 eyes[i].transform.localPosition = InputTracking.GetLocalPosition((VRNode)i); eyes[i].transform.localRotation = InputTracking.GetLocalRotation((VRNode)i); } } }
VR的图像效果
在VR项目中很多图像效果都是很耗费性能的相当于同样的场景渲染两次,因为每只眼睛都要渲染一次,用图像效果(image effects)越多对帧率影响越大.
由于VR是虚拟现实中用户眼睛看到的景象,所以一些图像效果在VR中一般是没有意义的,例如景深,模糊,镜头眩光等等.因为现实中人眼是看不到它们的.如果未来VR设备支持眼球跟踪,那么可以用景深效果提高真实感.
一些图像效果是可以用的,如抗锯齿(特别是低分辨率的VR眼镜),Color Grading(blogs.unity3d.com/2015/05/12/color-grading-with-unity-and-the-asset-store/)和Bloom在一些游戏中可以用的,可以试着用用它们调整出更好的效果.
Unity提供了很多图像效果供你使用(Assets > Import Package > Effects),在资源商店中也有很多不错的图像效果,如Colorful(https://www.assetstore.unity3d.com/en/#!/content/44845), Chromatica(https://www.assetstore.unity3d.com/en/#!/content/20743), Amplify Color(https://www.assetstore.unity3d.com/en/#!/content/20743), 其它等等(https://www.assetstore.unity3d.com/en/#!/search/page=1/sortby=popularity/query=category:148).
渲染比例
根据VR场景和使用的VR硬件,我们可能要改变渲染比例,控制镜头中图像与像素的比例.这意味着图像表现锐度会被改变.
这必须要通过代码,具体看这里: http://docs.unity3d.com/ScriptReference/VR.VRSettings-renderScale.html. 可以用下面这个脚本很容易的实现:
using UnityEngine; using System.Collections; using UnityEngine.VR; namespace VRStandardAssets.Examples { public class ExampleRenderScale : MonoBehaviour { [SerializeField] private float m_RenderScale = 1f; //这个渲染比,数值越高画质越好但是性能越低 void Start () { VRSettings.renderScale = m_RenderScale; } } }
可以在VR示例的Scenes/Examples/RenderScale中看到相关基本例子,它同样可以用在主菜单场景.
更改渲染比例的例子:Unity中默认渲染比是1.0:
如果我们增加到1.5,可以看到画面更清晰.
最后,我们降低渲染比例到0.5,我们会看到画面损失了:
根据实际运行测试,我们或降低渲染比例以提高性能,或提高渲染比例增加视觉清晰度.
原文:http://unity3d.com/learn/tutorials/topics/virtual-reality
由 四角钱 (XK) 翻译,转载请注明来自 http://blog.1vr.cn