Q100455:在 Linux 系统上为 Nuke 和 CaraVR 启用 VR 头显

概括

本文提供在 Linux 系统上启用 VR 头显的指南。内容包括如何配置较新的 Nvidia 驱动程序以与NukeCaraVR配合使用,以及如何配置头显以使其无需以 sudo/root 身份运行Nuke即可工作。

更多信息

在 Linux 系统上使用 HTC Vive 和 Oculus Rift CV1 等头显设备需要 OpenHMD 等第三方驱动程序,这些驱动程序会随Nuke / CaraVR安装过程一起安装。但是,由于 Nvidia 驱动程序的默认设置,需要调整 Nvidia 的配置文件,才能将头显用作显示器输出设备。

注意: CaraVR插件现已包含在NukeX 12.0 及更高版本中。

在启用VR头显之前,请确保Nvidia GPU驱动程序已更新至最新版本。要更新驱动程序,请访问以下Nvidia网站链接:

https://www.nvidia.com/Download/index.aspx?lang=en-in

在《洛奇9》中启用VR头显

要在NukeCaraVR中启用您的 VR 头显,您需要安装EPEL 存储库,以及一些额外的库和udev规则,请按照以下说明进行操作:

1)打开终端窗口

2) 运行以下命令安装EPEL 软件仓库sudo dnf install epel-release

3) 安装hidapi以允许Nuke与您的设备进行交互,运行以下命令:
sudo dnf install hidapi hidapi-devel

4) 通过运行以下命令安装cmakesudo dnf install cmake

5) 接下来,在终端窗口中浏览到下载文件夹并运行以下命令来安装OpenHMD
sudo git clone --recursive https://github.com/thaytan/OpenHMD.git

6) 从下载文件夹中,输入cd OpenHMD打开OpenHMD文件夹,然后运行以下命令来编译和安装OpenHMD:

注意:您可以使用特定驱动程序编译 OpenHMD,有关可用驱动程序的更多信息可以在官方GitHub上找到;您也可以在cmake命令后使用“..”来安装检测到的设备。

a. mkdir build
b. cd build
c. cmake..
d. make
例如, sudo make install

7) 如果您的 VR 头显配有控制器,您可以通过安装xr-hardware来设置启用控制器所需的udev规则。您可以通过在终端会话中浏览到下载文件夹并运行以下命令来安装它:
sudo git clone --recursive https://gitlab.freedesktop.org/monado/utilities/xr-hardware.git

8) 然后输入cd xr-hardware xr-hardware打开 xr-hardware 文件夹,并运行以下命令来构建和安装xr-hardware

a. make
b. sudo make install

运行上述命令后, Nuke应该会在“查看器监视器输出属性”的“设备”下拉菜单中显示 HMD 设备。但是,要通过头戴式显示器查看输出,您可能仍然需要在xorg.conf文件中启用 HMD,具体操作请参见下文 CentOS 7 部分。

在 CentOS 7 上启用 VR 头显

配置 NVIDIA 驱动程序

以下是调整配置文件所需的步骤:

1)以 sudo 或 root 用户身份,在文本编辑器中打开以下文件:

/etc/X11/xorg.conf

注意:如果 xorg.conf 文件不存在,则可以使用以下命令创建它:

sudo nvidia-xconfig

2)找到配置文件中名为“设备”的部分

3)将以下代码行添加到该部分,如下示例图片所示:

Option "AllowHMD" "yes"


4)保存更新后的文件并连接耳机设备。

5)重启机器。

现在Nvidia配置文件已调整完毕,您可以通过启动NukeCaraVR来测试VR头显是否正常工作。请注意, Nuke必须以sudo或root权限运行,并且使用头显的选项现在应该会出现在“监视器输出”高级设置的“设备”选项卡中。

要打开“查看器监视器输出”面板,请右键单击任意窗格,然后选择“窗口”>“查看器监视器输出”将其添加。然后单击齿轮图标点击“查看器监视器输出”面板左侧的图标,即可在“属性”面板中显示高级设置如下图所示:

viewerMonitorOut.png

mceclip0.png


注意:
您还可以通过以下链接查看我们的文档,了解更多关于将头戴式显示器与CaraVR配合使用的信息:
 审阅你的作品

不使用 root 权限或 sudo 运行NUKE来使用耳机

如果未使用 sudo/root 权限启动Nuke ,并尝试在 Viewer 节点中启用头戴式显示器,则头戴式显示器可能无法工作,并显示以下消息:



这个问题是由于 Linux 系统对插入系统的 USB 设备的权限管理方式造成的。最简单的解决方法是以 root/sudo 用户身份运行Nuke ,因为这样所有权限都会被授予。但是,以 root/sudo 用户身份运行Nuke可能会干扰现有的流程。

无需以 sudo 或 root 身份启动Nuke即可使用耳机,但这需要额外的设置,详情如下:

使用 Oculus Rift CV1 时无需 rootsudo

以下步骤应将 Oculus Rift CV1 添加到83-hmd.rules udev 文件中,这样应该可以防止出现“Rift (CV1) 已被使用”的消息:

注意:在执行这些步骤之前,请勿插入 CV1 耳机或启动Nuke


1) 请确保要使用耳机的用户 ID 属于plugdev组,如有必要,请创建一个名为 plugdev 的权限组。有关如何创建权限组以及如何将用户 ID 添加到组中的信息,请参阅 Linux 发行版文档。

2) 以 sudo 或 root 用户身份,在文本编辑器中打开或创建并打开 /etc/udev/rules.d/83-hmd.rules

3)在文件中添加以下行:

SUBSYSTEM=="usb", ATTR{idVendor}=="2833", MODE="0666", GROUP="plugdev"

4)保存文件

5) 以 sudo 或 Root 权限运行以下命令:

sudo udevadm control --reload-rules

6)重新启动机器。

7) 插入 CV1 耳机并启动Nuke

注意在 Linux 系统上使用 CV1 耳机时,请注意,在“监视器输出”高级设置中的“设备”旋钮启用 CV1 之前,CV1 将显示黑色。

无需root权限或sudo权限即可使用HTC VIVE

以下步骤应将 HTC Vive 添加到83-hmd.rules udev 文件中,这样应该可以防止出现“HTC Vive 已被使用”的消息:

1) 请确保用户 ID 属于plugdev组,如有必要,请创建名为 plugdev 的组。有关如何创建组以及如何将用户 ID 添加到组的信息,请参阅 Linux 发行版的文档。

2) 以 sudo 或 root 用户身份,打开或创建并使用文本编辑器打开/etc/udev/rules.d/83-hmd.rules 文件。

3) 将以下代码添加到文件中,这些代码来自 SteamVR GitHub 页面: https://github.com/ValveSoftware/SteamVR-for-Linux#usb-device-requirements

# HTC Vive HID Sensor naming and permissioning

KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="2c87", MODE="0666", GROUP="plugdev"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2101", MODE="0666", GROUP="plugdev"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2000", MODE="0666", GROUP="plugdev"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="1043", MODE="0666", GROUP="plugdev"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2050", MODE="0666", GROUP="plugdev"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2011", MODE="0666", GROUP="plugdev"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2012", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="2c87", MODE="0666", GROUP="plugdev"

# HTC Camera USB Node

SUBSYSTEM=="usb", ATTRS{idVendor}=="114d", ATTRS{idProduct}=="8328", MODE="0666", GROUP="plugdev"

# HTC Mass Storage Node

SUBSYSTEM=="usb", ATTRS{idVendor}=="114d", ATTRS{idProduct}=="8200", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="114d", ATTRS{idProduct}=="8a12", MODE="0666", GROUP="plugdev"

4)保存文件

5) 以 sudo 或 Root 权限运行以下命令:

sudo udevadm control --reload-rules

6)重新启动机器。

7) 插入耳机,如果耳机已经插入,则可能需要重新插入,以便您可以在耳机上看到桌面背景。

8) 启动Nuke并测试头显是否可以正常使用,而不会出现“HTC Vive 已被使用”的消息。

如果您持续收到“HTC Vive”已被使用的消息,则可能是头显的设备/供应商 ID 不同,因此需要为这些 ID 在83-hmd.rules文件中添加自定义规则。您可以按照以下步骤操作:

1)打开终端并运行:

lsusb

2)这将得到如下结果:

 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 0bda:0181 Realtek Semiconductor Corp.
Bus 002 Device 055: ID 0bb4 : 2744 HTC (High Tech Computer Corp.)
Bus 002 Device 003: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 002 Device 056: ID 0bb4 : 0306 HTC (High Tech Computer Corp.)
Bus 002 Device 057: ID 0424:274d Standard Microsystems Corp.
Bus 002 Device 058: ID 0bb4 : 2134 HTC (High Tech Computer Corp.)
Bus 002 Device 007: ID 0d3d:0040 Tangtop Technology Co., Ltd PS/2 Adapter
Bus 002 Device 059: ID 0bb4:2c87 HTC (High Tech Computer Corp.)
Bus 002 Device 060: ID 28de:2101  
Bus 002 Device 061: ID 28de:2101  
Bus 002 Device 062: ID 28de:2000  
Bus 002 Device 063: ID 0bb4:2c87 HTC (High Tech Computer Corp.)

Bus 002 Device 036: ID 0c45:6340 Microdia Camera

ID 部分可以理解为idVendor:idProduct ,使用这些值可以为/etc/udev/rules.d/83-hmd.rules文件创建其他规则。

3) 以 sudo 或 root 用户身份,在文本编辑器中打开/etc/udev/rules.d/83-hmd.rules文件。

4) 添加以下行,将 <missingVendor> 和 <missingProduct> 替换为lsusb结果中列出的、尚未存在于83-hmd.rules文件中的任何设备:

SUBSYSTEM=="usb", ATTRS{idVendor}=="<missingVendor>", ATTRS{idProduct}=="<missingProduct>", MODE="0666", GROUP="plugdev"

在这个例子中,添加了以下三行代码以授予NukeCaraVR权限:

 # Extra rules

SUBSYSTEM=="usb", ATTRS{idVendor}=="
0bb4 ", ATTRS{idProduct}==" 0306 ", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}==" 0bb4 ", ATTRS{idProduct}==" 2134 ", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}==" 0bb4 ", ATTRS{idProduct}==" 2744 ", MODE="0666", GROUP="plugdev"

5)保存文件

6) 以 sudo 或 Root 权限运行以下命令:

sudo udevadm control --reload-rules

7)重新启动机器。

8) 将耳机插入耳机,如果耳机已经插入,则可能需要重新插入,以便您可以在耳机上看到桌面背景。

9) 启动Nuke ,然后在 Viewer Monitor Out 高级设置设备旋钮中启用耳机后,耳机现在应该可以使用了。

其他故障排除

1) 安装其他版本的 OpenHMD 可能会与CaraVR自带的版本冲突。如果您在使用头显时遇到问题,请尝试卸载计算机上已安装的任何其他版本的 OpenHMD 或其他头显驱动程序。

2) 有时, AllowHMD进程不会自动运行。在这种情况下,要解决Nuke无法检测到头显的问题,请打开 NVIDIA 设置,找到头显被识别为第二显示器但已禁用的选项,然后启用它。这应该可以解决此问题,重新启动Nuke后,头显应该会出现在“查看器监视器输出”高级设置的“设备”选项中。

关于 Oculus Rift CV1 的补充说明

  • Oculus CV1 在打开电源之前屏幕会显示黑色。 Nuke的查看器设置。
  • CV1 不会出现在 Gnome/Kde 的可用屏幕列表中,它会显示在查看器监视器输出设备旋钮的支持设备列表中。
  • 首次启用查看器监视器输出时,所有可用监视器都会显示黑屏几秒钟,因为操作系统需要调整以适应新的配置。
  • CV1 指示灯会一直亮着,直到您关闭它。 Nuke会导致所有可用显示器在几秒钟内显示黑屏,以便操作系统适应新的配置。

延伸阅读

在 Linux 系统上,也可以使用 SteamVR 作为头显驱动程序,而不是 OpenHMD。但是,Valve 对 CentOS 7 上的 SteamVR 支持有限。此外,运行该软件还需要特定的驱动程序版本,具体信息如下:

英伟达:

AMD:

    • SteamVR 最低要求是使用 Vulkan 支持编译的 Mesa 17.3 和 Linux 内核 4.13。

有关驱动程序的更多信息,请参阅SteamVR for Linux 文档

如果您能够在 Centos 7 以外的 Linux 发行版上安装CaraVRNuke和 Steam VR,那么按照以下步骤操作可能会使头戴式显示器正常工作。

  1. 请确保已安装并更新 SteamVR,并在 SteamVR 中执行所有必要的配置步骤,直到任何 SteamVR 应用程序都能成功运行。
    - Steam 安装文件可以在这里找到。
  2. 关闭 SteamVR,但保持 Steam 运行。
  3. 打开终端,在同一会话中运行以下两行命令,并根据系统的具体安装情况进行相应调整:

/home/username/.steam/steam/ubuntu20_04/steam-runtime/run.sh

/usr/local/ Nuke 16.0v4/ Nuke 16.0

注意:由于目前没有哪个 Linux 发行版同时获得Nuke / CaraVR和 SteamVR 的官方支持,因此将Nuke与 SteamVR 结合使用尚未经过全面测试,可能无法达到预期效果。但是,对于支持 SteamVR 的头显,在帧率、畸变校正和视野设置方面,Nuke 的性能可能优于 OpenHMD。

    我们很遗憾听到

    请告诉我们