如何从 OpenVR 的 TrackedDevicePose_t 计算偏移位置?
How do I calculate an offset position from OpenVR's TrackedDevicePose_t?
我正在使用 Vive 控制器进行 3D 数字化。我正在使用 OpenVR 与硬件对话,并使用 PollNextEventWithPose
在用户按下按钮时获取控制器的姿势。从姿势,我想计算一个点,它是我们的数字化点所在的 Z 轴上的 177mm。
运行 在 Unity 下,我做了这样的事情:
var digitizerPosition = trackedObject.transform.position - trackedObject.transform.forward * 0.177f;
现在在 OpenVR 下,PollNextEventWithPose
给了我一个 TrackedDevicePose_t
,其中包含类型为 Valve.VR.HmdMatrix34_t
的字段 mDeviceToAbsoluteTracking
。给定该矩阵,我如何计算沿 Z 轴的点?
等价于trackedObject.transform.forward
是:
public static Vector3D Forward(HmdMatrix34_t matrix)
{
return new Vector3D(matrix.m2, matrix.m6, matrix.m10);
}
我正在使用 Vive 控制器进行 3D 数字化。我正在使用 OpenVR 与硬件对话,并使用 PollNextEventWithPose
在用户按下按钮时获取控制器的姿势。从姿势,我想计算一个点,它是我们的数字化点所在的 Z 轴上的 177mm。
运行 在 Unity 下,我做了这样的事情:
var digitizerPosition = trackedObject.transform.position - trackedObject.transform.forward * 0.177f;
现在在 OpenVR 下,PollNextEventWithPose
给了我一个 TrackedDevicePose_t
,其中包含类型为 Valve.VR.HmdMatrix34_t
的字段 mDeviceToAbsoluteTracking
。给定该矩阵,我如何计算沿 Z 轴的点?
等价于trackedObject.transform.forward
是:
public static Vector3D Forward(HmdMatrix34_t matrix)
{
return new Vector3D(matrix.m2, matrix.m6, matrix.m10);
}