Посмотреть усеченную визуализацию

Учитывая трехмерное положение камеры, трехмерное целевое положение камеры (точка, на которую указывает камера), расстояние в дальней плоскости от камеры, поле зрения и соотношение сторон, как я могу рассчитать четыре трехмерные точки в дальней плоскости? Это должно быть возможно с базовой тригонометрией, но я не получаю точных результатов.


person bittersoon    schedule 24.03.2011    source источник


Ответы (1)


Это может быть простой триггер в 2D, но в 3D проблема несколько сложнее. У меня нет конкретного ответа для вас, но это может дать вам некоторые пути для изучения.

Грубо говоря, шаги следующие:

  1. Найдите уравнение плоскости изображения
  2. Найдите радиус поля зрения
  3. Найдите уравнение круга FOV
  4. Найдите четыре точки, лежащие на этом круге, которые соответствуют вашему соотношению сторон.

Плоскость, на которой находится этот круг, может быть получена с помощью точки и вектора нормали, что позволит вам определить уравнение этого круга в 3D (точка — это местоположение камеры, а вектор — это линия между камерой и целью).

Радиус круга можно определить по соотношению r = d tan(theta / 2), где d — расстояние между камерой и целью, а тета — угол обзора в градусах.

Уравнение этого окружности в 3D может быть определено в соответствии с радиусом и вектором нормали. .

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

Вам также необходимо учитывать, может ли камера быть наклонена или выровнена. Это изменит точки, но они по-прежнему будут лежать на одной окружности/плоскости.

В зависимости от вашей цели может помочь упростить задачу, если камера всегда находится в точке (0,0,0) и выровнена по одной из осей (т. е. цель находится на одной из осей).

person Benjamin    schedule 24.03.2011