最近将开发用操作系统升级到Win10,为了兼容Steam平台,同步发布htc Vive版本的游戏demo,将Unity也升级到5.4,突然发现之前一直正常的Oculus Rift DK2无法正常显示了。主要现象是:
1. Unity VR选项设置为OpenVR后,启动VR头盔只显示一个白色空场景,但是位置追踪设备是确正常的。
2. Unity VR选项设置为Oculus后,VR头盔没有任何响应。
怀疑是系统从win7升级到win10的原因,在各种折腾无果后,重新安装干净的win10系统,再安装Oculus runtime0.8.0,发现runtime自带的demo也没法启动了,提示错误“HMD powered off, check HDMI connection”。
到此,怀疑runtime的问题,在手动杀死OVRServer_x64和OVRServiceLauncher两个服务后,手动启动OVRServer_x64服务,发现启动报错信息,提示缺失OculusAppFramework.dll,而OculusAppFramework.dll在Oculus runtime0.8.0以后的版本才会有,而Oculus runtime0.8.0以后的版本都必须要求在线安装,以国内网络条件大部分人是无法实现的。
在查询相关资料后发现,其实上win10并不兼容Oculus runtime0.8.0,需要升级到最新oculus runtime 1.3才可以,而由于网络的原因,没有找到办法安装最新的Oculus Home,幸好国内有个公司弄出了一个ModuoVR,用于离线安装Oculus Home,在成功下载ModuoVR安装后,发现oculus用于验证的ip也被封了,修改host的方式也无效了,从而导致ModuoVR并不能正常安装最新的oculus runtime。不过ModuoVR倒是把OculusAppFramework.dll一同打包了,经过实验,发现将OculusAppFramework.dll拷贝到OVRServer_x64,执行如下批处理,可以正常启动OculusConfigUtil。
taskkill /f /im OculusConfigUtil.exe
taskkill /f /im OVRServer_x64.exe
net stop OVRService
"C:\program files (x86)\Oculus\Tools\DirectDisplayConfig.exe" on
sc delete OVRService
"C:\program files (x86)\Oculus\Service\OVRServiceLauncher.exe" -install -start
start "" "C:\program files (x86)\Oculus\Tools\OculusConfigUtil.exe"
至此,Oculus的runtime0 .8.0终于在win10上顺利启动,但是Unity的开发环境还是无法启动Oculus Rift DK2,在查询Unity 5各版本发行说明发现,从5.3.5开始,Unity已经升级了内置的Oculus runtime,不再兼容runtime0 .8.0,经过实验发现将Unity降至5.3.3和5.3.4均可以顺利启动头盔。
UNITY 5.3.5
- VR: Updated Oculus API and plugin to version 1.3.2. Downloading 1.3.2 OVRPlugin from Oculus is no longer necessary.
最终Oculus Rift DK2 开发环境配置为:
操作系统:Win10
Unity版本:Unity 5.3.4
Oculus runtime: 0.8.0 + OculusAppFramework.dll
整个过程走了不少弯路,希望能够帮到一起开发VR的同学们。