如何从OpenVR的TrackedDevicePose_t计算偏移位置?

时间:2018-02-15 00:13:50

标签: c# unity3d openvr

我正在使用Vive控制器进行3D数字化。我使用OpenVR与硬件通信,PollNextEventWithPose在用户按下按钮时获取控制器的姿势。从姿势来看,我想计算一个沿着我们的数字化点所在的Z轴177mm的点。

在Unity下运行,我做了类似的事情:

var digitizerPosition = trackedObject.transform.position - trackedObject.transform.forward * 0.177f;

现在在OpenVR下,PollNextEventWithPose为我提供了一个TrackedDevicePose_t,其中包含mDeviceToAbsoluteTracking类型的字段Valve.VR.HmdMatrix34_t。给定该矩阵,如何计算沿Z轴的点?

1 个答案:

答案 0 :(得分:0)

相当于trackedObject.transform.forward

    public static Vector3D Forward(HmdMatrix34_t matrix)
    {
        return new Vector3D(matrix.m2, matrix.m6, matrix.m10);
    }