Сравните экранные и реальные координаты OpenGL, чтобы получить результат

По сути, у нас есть матрица просмотра модели объекта OpenGL, которая дает нам векторы вращения и перемещения, используя их, мы получаем реальную позицию с некоторыми вычислениями:

-R*t, where R is [0 4 8; 1 5 9; 2 6 10] matrix and t is [12 13 14] column vector.

В OpenCV у нас есть экранные координаты x,y кончика пальца.

Теперь нам нужен какой-то метод для сравнения этих x,y экрана с реальными координатами OpenGL, чтобы увидеть, в какой объект попал палец. Мы попробовали gluUnProject, но он не вернул правильные координаты реального мира из x, y.

Какой метод попробовать здесь, это использовать ARToolKit и OpenCV вместе, поэтому матрицы просмотра модели изменяются на основе маркеров AR. Также мы используем модуль камеры ARToolkit.


person Sameer Bagga    schedule 12.11.2011    source источник


Ответы (1)


Что ж, позвольте мне посмотреть: у вас есть два известных для системы из трех линейных независимых уравнений. Таким образом, вы буквально упускаете некоторую информацию. У вас есть свободный параметр z, и если подумать, то это дает вам не положение в пространстве, а луч в него (из камеры в какое-то направление в бесконечность). Вы можете использовать gluUnProject для z=0 и z=1, что даст вам две точки на луче. Затем вы можете использовать этот луч, чтобы проверить, пересекает ли он некоторые из ваших объектов.

Или вы делаете это наоборот: вы проецируете ограничивающий объем каждого объекта на пространство экрана (x, y) и проверяете, как ваши координаты пальца соприкасаются с ним. Я бы сделал позже.

person datenwolf    schedule 12.11.2011