Матрица проекции, которая отображает 4 произвольные координаты глаза, чтобы заполнить область просмотра? - PullRequest
0 голосов
/ 24 мая 2018

Учитывая 4 точки в координатах глаза (назовите их ABCD), все из которых находятся перед камерой (Z <0), как я могу рассчитать матрицу проекции 4x4, которая будет проецировать точки ABCD точно на 4 углаviewport? </p>

Цель состоит в том, чтобы сделать ортогональный рендеринг прямоугольного четырехугольника, который существует где-то в сцене (с вершинами ABCD), как если бы он был просмотрен в квадрате, но где рендеринг также включает любые объекты, которые блокируютпрямой видимости к квадру от фактического местоположения камеры.

Я думаю, что ответ может включать гомографию, которая отображает координаты глаза в NDC, и я использовал OpenCV cv2.getPerspectiveTransform () для его вычисления.Но преобразование гомографии 3x3 в матрицу проекции 4x4 является сложной задачей.

Я могу правильно отобразить X и Y из координат глаза в NDC, используя эту матрицу, но только когда A, B, C, D имеют одинаковуюКоордината Z:

H[0,0]  H[0,1]  0  H[0,2]
H[1,0]  H[1,1]  0  H[1,2]
   0       0    0     0
H[2,0]  H[2,1]  0     1 

Я не могу понять, как вычислить Z, сохраняя при этом X и Y. Это удобное руководство для матриц проекции показывает, что для правильного отображения Z из [-near, -far] до [-1,1], нижние строки матрицы проекции должны быть:

0  0  -(f+n)/(f-n)  -2fn/(f-n)
0  0       -1            0

Мне кажется, что я держу все кусочки головоломки, но не могу сработатькак их собрать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...