Как рассчитать позицию смещения из 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);
    }
Другие вопросы по тегам