为了准备好学习使用Unity开发VR应用,我们首先要检查下自己的电脑硬件和软件配置是否满足要求。简单来说,显卡要NVIDIAGTX970或AMD290以上,CPU要Inteli5-459以上,内存8GB以上,要有两个USB3.0接口,一个USB2.0接口,一个HDMI1.3接口。
操作系统比较坑爹,不支持Mac,也不支持Linux。支持Win7,Win8,Win10。
当然,还要把自己的显卡驱动升级到最新版本。
Oculus官方的检测地址:
一旦完成了这种烧钱的工作,就该安装Unity了。注意在打开Unity前要把DK2连接好并开启。在继续之前,打开OculusConfigurationUtility应用,并检查DemoScene可以正常运行。注意在运行DemoScene之前看可能需要在OculusConfigurationUtility中设置一个新用户。
创建第一个VR项目
Step1
打开Unity,创建一个新的空项目。
说明一下,我当前用的Unity版本是5.3.1f1,可能你看到这篇教程的时候又已经升级换代了。
Step2
在Unity的菜单中选择Fiel-BuildSettings,并选中PC,Mac&LinuxStandalone。
Step3
在场景中创建一个新的立方体,从菜单中选择GameObject–3DObject-Cube,通过Translate工具把立方体放到默认的MainCamera前面,类似下面。
Step4
保存界面(File-SaveScene,或是使用快捷键)。
Step5
在菜单中选择Edit-ProjectSettings–Player,在”OtherSettings“部分勾选”VirtualRealitySupported”
Step6
点击Unity界面上的Play按钮进入Play模式。
如果之前的设置没有问题,现在你应该可以通过DK2看到这个场景,四处看看,Unity中的摄像机将自动根据DK2的位置和旋转变化反应。
出错了怎么办?
如果你没有在DK2中看到期望的场景,那么检查以下的事项:
1、确保你在打开Unity项目前就已经把DK2接好并且开启了;
2、打开Oculus自带的OculusConfigurationUtility,看看DemoScene是不是可以正常运作;
3、更新你的显卡驱动到最新版本;
4、确保你在电脑上装了最新的OculusRuntime0.8,或更高版本;
关于VR开发的一些有用信息:
虽然VR应用开发和标准Unity应用开发很相似,不过还是有些区别需要注意的。
1、编辑器中显示的帧速(Framerate)
当你通过编辑器查看项目时,注意体验上可能有些延迟,因为电脑需要将同样的内容渲染两次。所以在实际测试项目的时候,最好创建一个可执行版本,在测试设备上实际体验。
2、摄像机的移动
注意,我们不能在Unity中直接移动VR摄像机。如果你希望调整摄像机的位置和旋转,需要确保将它设置为其它游戏物体GameObject的子物体,然后通过所依附的物体进行移动。
3、相机节点
左眼和右眼的摄像机并不是由Unity创建的。如果你在开发中需要获取这些节点的位置,则必须使用InputTracking类。
如果你想要获取场景中眼睛的不同位置(比如测试时),请使用下面的示例脚本,并将其attach到摄像机上。
C#脚本
usingUnityEngine;
usingUnityEngine.VR;
publicclassUpdateEyeAnchors:MonoBehaviour
{
GameObject[]eyes=newGameObject[2];
string[]eyeAnchorNames={“LeftEyeAnchor”,“RightEyeAnchor”};voidUpdate()
for(inti=0;i<2;++i)
//Iftheeyeanchorisnolongerachildofus,don’tuseit
if(eyes[i]!=null&&eyes[i]。transform.parent!=transform)
eyes[i]=null;
}
//Ifwedon’thaveaneyeanchor,trytofindoneorcreateone
if(eyes[i]==null)
Transformt=transform.Find(eyeAnchorNames[i]);
if(t)
eyes[i]=t.gameObject;
eyes[i]=newGameObject(eyeAnchorNames[i]);
eyes[i]。transform.parent=gameObject.transform;
//Updatetheeyetransform
eyes[i]。transform.localPosition=InputTracking.GetLocalPosition((VRNode)i);
eyes[i]。transform.localRotation=InputTracking.GetLocalRotation((VRNode)i);
4、VR中的图像效果(ImageEffect)
在VR项目中使用众多图像效果是很奢侈的事情。考虑到你需要两次渲染同一个场景(每只眼睛一次),因此很多当前经常使用的图像效果对VR应用来说会很浪费,会严重影响游戏的运行帧速。
因为VR将用户的眼睛置入一个虚拟的空间,因此部分图像效果对VR来说没有任何意义。举例来说,深度视角、模糊效应和镜头光晕效果对VR来说没有任何意义,因为在现实世界中我们是看不到这些效果的。不过如果以后VR头戴设备可以支持眼动跟踪,那么深度视角可能会有意义。
Unity自身提供了很多图像效果(Assets-ImportPackage-Effects),此外AssetStore里面也提供了很多效果,比如Colorful,Chromatica,AmplifyColor,还有更多。
5、RenderScale
根据VR互动应用场景的复杂度和所运行的硬件环境,你可能需要更改renderscale设置。通过此项设置可以调整镜头校正前texel:pixel的比率,这样可以牺牲游戏性能来换取画面的清晰度。
这项设置应该通过代码进行,可以参考这里:
通过使用以下代码可以改变renderscale的设置:
usingSystem.Collections;
namespaceVRStandardAssets.Examples
publicclassExampleRenderScale:MonoBehaviour
[SerializeField]privatefloatm_RenderScale=1f;
//Therenderscale。Highernumbers=betterquality,buttradesperformance
voidStart()
VRSettings.renderScale=m_RenderScale;
关于这项设置,可以参考我们的VRSamples,具体示例是Scenes/Examples/RenderScale场景。此外在MainMenu场景中也有该项设置的应用。
更改renderscale的效果示例如下:
Unity的默认renderscale是1.0,效果如下:
根据游戏场景的不同,可以考虑降低renderscale来提升游戏运行性能,或者通过增加renderscale的数值让画面效果更锐利,但会以牺牲游戏运行性能作为代价。
好了,看到这里,你应该知道如何在Unity项目中整合VR,如何设置游戏中摄像机的移动,以及和非VR游戏相比应该如何使用图像效果。
from:游戏陀螺
0
在刚刚结束的MWC展会上,VR抢走了不少风头,除了众多VR产品问世外,很多公司的发布会上都采用了VR直播的方式,尤其是FacebookCE...
近日,针对该项目,WadeArcade正式在Kickstarter众筹网启动了一项目标为50000美元的集体融资活动。事实上,将过去一些经典的老游...
中国网络游戏排行榜(ChinaGameWeightRank)是由新浪游戏推出的目前国内最全面、最专业、最公正的最新网络游戏评测排行榜,涵盖2010至今内所有新游戏,力图为中国游戏玩家打造最值得信赖的新网游推荐平台。