Сравните экран и координаты реального мира OpenGL, чтобы получить хит - PullRequest
1 голос
/ 12 ноября 2011

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

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

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

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

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

1 Ответ

2 голосов
/ 12 ноября 2011

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

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

...