Как рассчитать позицию смещения из 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?


person SSteve    schedule 15.02.2018    source источник


Ответы (1)


Эквивалент trackedObject.transform.forward:

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