Как рассчитать позицию смещения из TrackedDevicePose_t OpenVR?
Я работаю над оцифровкой 3D с использованием контроллера Vive. Я использую OpenVR, чтобы поговорить с оборудованием и PollNextEventWithPose
чтобы получить позу контроллера в то время, когда пользователь нажал кнопку. Из позы я хочу вычислить точку, которая находится на расстоянии 177 мм вдоль оси Z, где находится наша точка оцифровки.
Работая под Unity, я сделал что-то вроде этого:
var digitizerPosition = trackedObject.transform.position - trackedObject.transform.forward * 0.177f;
Теперь под OpenVR, PollNextEventWithPose
дает мне TrackedDevicePose_t
который содержит поле mDeviceToAbsoluteTracking
который имеет тип Valve.VR.HmdMatrix34_t
, Учитывая эту матрицу, как я могу вычислить точку вдоль оси Z?
1 ответ
Решение
Эквивалент trackedObject.transform.forward
является:
public static Vector3D Forward(HmdMatrix34_t matrix)
{
return new Vector3D(matrix.m2, matrix.m6, matrix.m10);
}