Как вывести поворот камеры из 2d точки - PullRequest
1 голос
/ 22 июля 2010

У меня есть камера, установленная на штативе, ее движение ограничено поворотом и поворотом. Он смотрит на точку, которая находится в известном месте прямо перед камерой. Если камера смотрит на точку и получает ее 2-мерную координату, можно ли определить вращение камеры, чтобы я мог наложить некоторые 3d-модели, правильно выровненные по сцене.

Я думал, что это можно решить, изменив формулу, которую вы использовали бы, чтобы построить 2-мерную точку. Вы можете получить формулу, чтобы взять 2-мерную точку и вернуть вращение камеры.

Я думаю, что 2-й сюжет будет что-то вроде Точка 3d мировое положение цели * Матрица положения камеры * Матрица вращения камеры * Матрица перспективы = 2d точка

Можно ли вывести вращение камеры из 2-й точки, учитывая, что положение камеры и точки известно так же, как и матрица перспективы (я предполагаю, что я должен быть в состоянии догадаться об этом и приблизиться, настроив поле значение зрения)?

Ответы [ 2 ]

1 голос
/ 23 июля 2010

Если под «поворотом наклона» вы подразумеваете, что камера наклоняется вверх или вниз от горизонта, то проблема довольно проста.Если вы правы в том, что 3D-> 2D - это простое преобразование матрицы, которое вы можете обработать, то инвертируйте матрицу, и все готово, в противном случае вам придется узнать больше о проекции сферы на плоскость камеры.

Но если «вращение наклона» означает вращение вокруг центральной оси поля зрения (можно сказать, «наклон в сторону»), то проблема имеет вырождения (более чем одна ситуация может датьто же самое изображение), и вы не сможете ее решить.

РЕДАКТИРОВАТЬ:

Эта новая информация о "телескоп" сильно меняет проблему.Решение не сложное, но вам придется лучше определять ваши системы координат .Расположение точки и камеры известно, у вас есть 2D-изображение, и вы хотите ориентацию камеры.

  1. Рассчитайте истинные углы луча от камеры к точке.(Я предлагаю вам сначала применить перевод как к точке, так и к камере, что приводит камеру к исходной точке. Это облегчает работу.)
  2. Инвертируйте «матрицу перспективы», чтобы получить измеренные углы точки, так каквидно по камере. Если вы не можете сделать это, то есть если вы не знаете оптических свойств камеры, то проблема не решаема.
  3. Вычитайте углы (измеренное панорамирование из истинного панорамирования, измеренный наклон из истинного наклона) чтобы получить ориентацию камеры
0 голосов
/ 22 июля 2010

Если ваша камера рендерит изображение шириной w пикселей и высотой h пикселей, вы можете определить дельта-расстояние (в пикселях, dw и dh) от точки до точки, в которой оно находится.должно быть.Поскольку вы предполагаете знать угол обзора, вы можете определить фактическую длину (в реальных измерениях) пикселя.Результирующее преобразование из dw и dh в реальные расстояния даст вам (например) x и y соответственно.

Вы знаете z, расстояние от камеры доточка.

Чтобы получить два рассматриваемых угла, рассмотрим две разные задачи тригонометрии с заданными длинами двух сторон прямоугольного треугольника (например, z и x).Если это поможет, нарисуйте вид сверху проблемы в двух измерениях, чтобы получить угол панорамирования.Повторите эти действия для угла наклона, используя вид сбоку.

...