本来是不想在Linux上搞VR的,因为我有VirtualDesktop,在Windows上的体验非常好。我尝试使用Wine去跑VirtualDesktop,失败了,尝试安装了.Net框架,没有起作用,网上好像也没有相关的文档。没有VD,就感觉Money白花了。但重启电脑玩VR,玩完再切回来是一件更痛苦的事情,所以还是下定决心配好VR环境。
ALVR
我使用的设备是Meta Quest 2, 需要经过串流到电脑上才能正常使用。ALVR是一个开源的VR串流软件,据说效果比VD差不少,但鉴于我的Wifi速度很慢,我使用VD的时候也是通过USB共享网络,间接使用有线进行串流的,所以ALVR在速度方面应该不会差太多。 首先自然是要把项目下载下来。ALVR提供了一个Launcher,貌似可以做到自动更新,但国内的情况来看,用Launcher还不如我自己手动下载来得快,所以我手动下载了Streamer,这个是用来进行串流的工具,把它放在合适的地方,我放在了这里:
1 $HOME/.local/alvr_streamer
下载完ALVR后,Quest2上也需要下载ALVR的客户端,这个在Quest2的应用商店里就可以下载的到,是免费的。 下载完之后,还不能着急连接,因为仍然需要一些东西进行配置。 ALVR会拉起SteamVR,但需要额外给SteamVR添加一个命令行参数,否则头显会黑屏,这个参数在ALVR启动SteamVR的时候会又提示,即:
1 2 Make sure you have put the following line in your SteamVR launch options and restart it: /home/jackmyth/.local/share/Steam/steamapps/common/SteamVR/bin/vrmonitor.sh %command%
当然,上述路径要根据实际情况进行修改,直接复制ALVR的提示就好。 然后启动SteamVR,就可以正常看见VR画面了。
OpenXR Runtime
我要玩的游戏是BeatSaber,但这个游戏在打开之后会一直卡住,仿佛是没有找到VR环境,无法进入VR状态,也没有和手柄头显建立连接。头显里也不显示任何游戏内容。 我并没有在网上找到什么解决方案,但有老哥说自己已经在Linux上玩上BeatSaber了,所以我觉得这套流程应该是可以跑通的。 在我鼓捣的时候,我发现SteamVR提示:SteamVR不是默认的OpenXR Runtime ,我就在想,大概是BeatSaber想要调用OpenXR,但是找不到默认的,于是无法进入VR状态。听起来很合理,我准备把它设置为默认的Runtime,但是却报了错误: 看到这个,我不仅没沮丧,反而感到了兴奋,这不就是问题吗?没有应用Handle这个协议,自然是不能进入VR状态的。 在网上找了一圈,找到了一个手动设置的命令:
1 $HOME/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/../vrmonitor.sh vrmonitor://openxr/makedefault
看了一下命令,很显然是手动调用脚本来执行这个makedefault的行为。在执行之后,SteamVR认出了自己是默认的OpenXR Runtime,打开BeatSaber,游戏成功进入了VR状态。 之后就不是问题了,微调一下ALVR Streamer的配置,就可以开玩了。