本文已参与「新人创作礼」活动,一起开启掘金创作之路。

本文地址: 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运行时的概念

SteamVR中OpenXR运行时设置画面

Oculus App中设置OpenXR运行时的界面

本人CSDN地址,说明一下,以免有人认为我是搬运工

分类:
前端
标签: