用于 HTC Vive 的 Python(已弃用)

注意:

针对 VRED 2020.1 及更高版本编写新 Python 脚本时,请改为使用用于 VR 的 Python API v2

使用 VRED 获取专门用于 HTC Vive 的 Python 函数

使用 HTC Vive 时,只有一个显示模式选项,即 OpenVR HMD。

地板标高和初始位置(“站立”/“房间比例”模式)

在“站立”或“房间比例”模式下,摄影机的 Z 轴平移值定义了地板标高。这意味着,场景中的 Z 值对应于跟踪空间中的物理地板。

由于对于 HTC Vive 来说,如何在 VRED 中设置摄影机以使场景中的虚拟地板与真实地板匹配都是相同的,因此请参见*如何通过更改摄影机平移设置地板标高*。

另一种可能的方案是使用 Python 函数 setOpenVRTrackingOrigin(Pnt3f(x,y,z)) 调整跟踪值(如果场景中的地板不在 Z = 0)。

在下图中,使用 Python 函数 setOpenVRTrackingOrigin 修改了跟踪值:

跟踪原点

如何设置地板标高

如果要使用 Python 函数设置地板标高,请查看以下示例:

  1. 加载 Automotive_Genesis 示例(“文件”>“打开示例”,查找 Automotive_Genesis,然后单击“打开”)。
  2. 在“终端”对话框(“视图”>“终端”)中,输入 setOpenVRTrackingOrigin(Pnt3f(0.0, 337.0, 0.0))
  3. 按 Enter 键。
  4. 激活 OpenVR。

Python 函数 setOpenVRTrackingOrigin 指定偏移矢量。这会从 OpenVR 的位置跟踪值中减去。在激活 OpenVR 之前或者当 OpenVR 运行时,可以执行此函数。请注意,此函数期望位置处于特殊坐标系中。

如果 VRED 场景中的跟踪原点应位于 pos = (x\_scene, y\_scene, z_scene),则调用 Python 函数 setOpenVRTrackingOrigin(Pnt3f(-x\_scene, -z\_scene, y_scene))

激活 OpenVR 和视点的快捷方式

启用 OpenVR HMD 显示模式后,激活视点。将以下 Python 函数粘贴到“终端”中以创建一个快捷方式,该快捷方式将激活 OpenVR 或脚本编辑器,然后设置一个名为 VR\_initial\_view 的视点。有关如何设置 VR 视点的信息,请参见 *视点*。

def activateOpenVR():
    setDisplayMode(VR_DISPLAY_OPEN_VR)
    jumpViewPoint('VR_initial_view')

keyA = vrKey(Key_A)
keyA.connect(activateOpenVR)

终端 Vive 激活

现在,每当您按 A 键时,VRED 将进入 OpenVR 模式并激活该视点。

注意:

在“终端”中执行的脚本不会保存在场景文件中。 要在场景中保存此脚本化快捷方式以备将来使用,请在脚本编辑器中输入 Python 代码。下次保存场景时,脚本将保存在 vpb 文件中。

如何查找当前 HMD 位置

如果要在 VRED 场景中查询被跟踪 HMD 的当前绝对位置,请使用:

matrix = getActiveCameraNode().getWorldTransform()

位置是:

x=matrix[3], y=matrix[7], z=matrix[11]

函数 getWorldTransform() 包括与活动摄影机节点结合使用时的跟踪变换。

“就坐”模式

可以使用以下 Python 函数(其中模式 0 表示“就坐”,模式 1 表示“站立”/“房间比例”)启用“就坐”模式:

setOpenVRTrackingOriginType(0)
注意:

默认模式是“房间比例”。

启用就坐跟踪原点类型时,跟踪原点不再是游戏区域的中心,而是位于游戏者的头部。这意味着,VRED 摄影机应位于 VR 场景中用户头部所在的位置。

将设置期间用户定义的特定姿势假定为默认头部姿势或“就坐零姿势”。跟踪值相对于该姿势传递。在 VRED 中运行 OpenVR 时,可以使用 Python 函数 resetOpenVRHMDPose() 重置“就坐零姿势”。

重要信息 每次启用 OpenVR 模式时,VRED 都会重置零姿势。

下面是使用 OpenVR 设置“就坐”模式的步骤。正确的顺序非常重要!

  1. 激活 OpenVR。
  2. 打开“终端”,输入 setOpenVRTrackingOriginType(0) 以激活“就坐”模式。
  3. (可选)要重置“就坐零姿势”,请在“终端”中输入 resetOpenVRHMDPose()。它在激活 OpenVR 时已重置;但是,如果用户当时在正确的位置未佩戴 HMD,则需要进行重置。
  4. 例如,通过在摄影机编辑器中激活合适的视点,将摄影机定位在场景中用户头部所处的位置。