赞
踩
如果之前的设置没有问题,现在你应该可以通过DK2看到这个场景,四处看看,Unity中的摄像机将自动根据DK2的位置和旋转变化反应。
出错了怎么办?
如果你没有在DK2中看到期望的场景,那么检查以下的事项:
1.确保你在打开Unity项目前就已经把DK2接好并且开启了。
2.打开Oculus自带的Oculus Configuration Utility,看看Demo Scene是不是可以正常运作
3.更新你的显卡驱动到最新版本
4.确保你在电脑上装了最新的Oculus Runtime 0.8,或更高版本。
关于VR开发的一些有用信息:
虽然VR应用开发和标准Unity应用开发很相似,不过还是有些区别需要注意的。
1.编辑器中显示的帧速(Frame rate)
当你通过编辑器查看项目时,注意体验上可能有些延迟,因为电脑需要将同样的内容渲染两次。所以在实际测试项目的时候,最好创建一个可执行版本,在测试设备上实际体验。
2.摄像机的移动
注意,我们不能在Unity中直接移动VR摄像机。如果你希望调整摄像机的位置和旋转,需要确保将它设置为其它游戏物体GameObject的子物体,然后通过所依附的物体进行移动。
3.相机节点
左眼和右眼的摄像机并不是由Unity创建的。如果你在开发中需要获取这些节点的位置,则必须使用InputTracking类。
如果你想要获取场景中眼睛的不同位置(比如测试时),请使用下面的示例脚本,并将其attach到摄像机上。
- 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 the eye anchor is no longer a child of us, don't use it
- 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;
- }
- }
-
- // Update the eye transform
- eyes[i].transform.localPosition = InputTracking.GetLocalPosition((VRNode)i);
- eyes[i].transform.localRotation = InputTracking.GetLocalRotation((VRNode)i);
- }
- }
- }
4.VR中的图像效果(Image Effect)
在VR项目中使用众多图像效果是很奢侈的事情。考虑到你需要两次渲染同一个场景(每只眼睛一次),因此很多当前经常使用的图像效果对VR应用来说会很浪费,会严重影响游戏的运行帧速。
因为VR将用户的眼睛置入一个虚拟的空间,因此部分图像效果对VR来说没有任何意义。举例来说,深度视角、模糊效应和镜头光晕效果对VR来说没有任何意义,因为在现实世界中我们是看不到这些效果的。不过如果以后VR头戴设备可以支持眼动跟踪,那么深度视角可能会有意义。
不过有些效果还是可以考虑使用的:比如抗锯齿是有用的(特别是考虑到某些头戴设备的低分辨率),色彩分级也很有用(关于这一点可以查看这个链接:Color Grading with Unity and the Asset Store ),对有些游戏来说会有用。不过在使用任何效果之前,最好先在游戏中实际测试下有没有用。
Unity自身提供了很多图像效果(Assets-Import Package-Effects),此外Asset Store里面也提供了很多效果,比如Colorful,Chromatica,Amplify Color,还有更多。
5.Render Scale
根据VR互动应用场景的复杂度和所运行的硬件环境,你可能需要更改render scale设置。通过此项设置可以调整镜头校正前texel:pixel的比率,这样可以牺牲游戏性能来换取画面的清晰度。
- using UnityEngine;
- using System.Collections;
- using UnityEngine.VR;
-
- namespace VRStandardAssets.Examples
- {
- public class ExampleRenderScale : MonoBehaviour
- {
- [SerializeField] private float m_RenderScale = 1f; //The render scale. Higher numbers = better quality, but trades performance
-
- void Start ()
- {
- VRSettings.renderScale = m_RenderScale;
- }
- }
- }
更改render scale的效果示例如下:
Unity的默认render scale是1.0,效果如下:
接下来把renderscale设置成0.5,可以看到像素化很严重:
根据游戏场景的不同,可以考虑降低render scale来提升游戏运行性能,或者通过增加render scale的数值让画面效果更锐利,但会以牺牲游戏运行性能作为代价。
好了,看到这里,你应该知道如何在Unity项目中整合VR,如何设置游戏中摄像机的移动,以及和非VR游戏相比应该如何使用图像效果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。