OpenVR:从姿势变换矩阵获取方向向量

时间:2019-01-11 05:23:16

标签: oculus openvr

我试图找到我的oculus触摸控制器指向OpenVR中任何给定时间点的方向。 (从控制器渲染光线指示器的方向) 我正在使用以下功能

GetControllerStateWithPose(     TrackingUniverseStanding,deviceId,&controllerState,     sizeof(controllerState),&trackedDevicePose);

在下图中,我了解到x,y和z的位置由m12 m13和M14来描述。但是,如何使用m0到m10的值来找到控制器在任何给定时间指向的方向向量。

由于我的新帐户而无法发布图片,但可以在此处找到 https://camo.githubusercontent.com/d83363a745afeeb1ac7265d10ad55544e15a8fe9/687474703a2f2f7777772e736f6e67686f2e63612f6f70656e676c2f66696c65732f676c5f616e676c6573746f6178657330312e706e67

我将这个矩阵简单地乘以[1,1,1,0] ^ T吗?或者也许[0,0,1,0] ^ T,因为Z轴被描述为前进方向

谢谢

1 个答案:

答案 0 :(得分:0)

我也有这个问题(OpenVR Teleportation Problem (Forward direction calculation))。我知道这是一个非常古老的问题,但为了完整起见,我也想在这里给出答案。

这里的方法是正确的,但 OpenVR 将其控制器的前向向量定义为 vec4(0,0,-1,0)。您应该能够将姿势矩阵乘以这个向量来获得方向。请记住,这与 HMD 相关,并相应地进行转换。