本文已参与「新人创作礼」活动,一起开启掘金创作之路。
本文地址: juejin.cn/post/708857…
最近在把项目从Unity2018升级到Unity2021,程序问题都好处理,但是唯独在VR上困惑了很久。
本身VR相关的概念就比较多,同时Unity还自己弄了一套XR的插件,做了也就做了,结果还没做全。然后Steam和Oculus在AssetStore上还有专门支持的插件。这么几个问题绕在一起,就直接乱成一团了。
查了一些资料,花了几天的时间,终于稍微清晰一些了,记录在下面
使用Unity开发VR就绕不过这么几个概念
广泛的概念
OpenVR :Steam提出来的概念,即将被OpenXR取代,不过Unity上还是要使用OpenVR来支持HTC等设备的开发
OpenXR :广大VR厂商提出来的一个新的接口概念,代表着未来
SteamVR :Steam提供的一个支持VR的App
OculusApp :Oculus推出的VR应用的App,需要翻墙使用
OculusDeveloHub :开发Oculus应用的一个工具集
Unity独有的概念
XR Plugin Management :Unity自己开发的VR开发框架
XR Interaction Toolkit :一个基于组件的高级交互系统
OpenXR Plugin :基于Unity的XRPlugin体系对OpenXR的支持插件
厂商推出的插件
SteamVR Plugin :Value推出的Untiy插件,使用Unity开发HTC 设备需要引入的SDK框架
VIVE Input Utility :HTC自己开发的一个工具,底层还是基于SteamVR来的
Oculus Integration :Oculus开发的一个方便开发VR应用的工具插件
开发PC程序如何选择
Unity使用OpenVR模式支持HTC Vive
开发的程序需要跑在PC上同时要支持HTC vive,Oculus,Value Index等设备,只需要在Unity的PackageManager中添加XR Plugin Management,同时导入SteamVR Plugin即可。
PackageManager界面如下截图
OpenVR XR Plugin是SteamVRPlugin引入的包
看过一篇帖子SteamVR在Unity上并没有完整支持OpenXR,所以只能继续使用OpenVR的方式来支持VR开发
Project Settings中的XR Plugin-in Management中选中
这样的话,Oculus也可以通过SteamVR的方式来使用,而不需要引入Unity原生的Oculus来增加项目的复杂度了。 SteamVR Plugin这个插件是个工具集合,如果只想让Unity能成功对接,只需要引入com.valvesoftware.unity.openvr-1.1.4.tgz这个package包就可以了
使用Unity的OpenXR插件支持HtcVive
Unity最新的XRPluginManagement配合OpenXR Plugin插件已经可以正常驱动Oculus 和 HtcVive了,结合XR Interaction Tookit就可以用更符合Unity标准的方式来驱动VR设备
PackageManager界面如下截图
虽然通过OpenXRPlugin插件,貌似依然需要SteamVR这个程序
当前版本(1.3.1)的OpenXRPlugin可以很好的对接Oculus Quest2/Htc vive pro,但还不支持HTC的Tracker,不支持的原因有后面几个
1.首先是OpenXR这个 标准 对HtcTracker的支持是在2021年9月份才定稿, 2. SDK库 是2021-10-04才发布, 3.SteamVR则是需要1.21.1(2021-11-10)版本才支持了对HtcTracker的支持
想要Unity支持应该就更晚一些了,毕竟OpenXR(v1.3.1)插件中附带的库才是1.0.17
设置界面截图如下
通过OpenXR的方式已经跑通的Oculus Quest和HtcVive Pro两个硬件
想要测试的VR的话,建议大家用官方的一个 VR例子
OpenXR运行时
如果电脑上既装了SteamVR又装了OculusHub,那么会引入一个OpenXR运行时的概念