Проблема с осью Z в ортогональной проекции

У меня возникли проблемы с пониманием того, почему преобразование координаты Z в ортогональной проекции происходит так, как в правосторонней системе координат.

«Функция» для Z с использованием матрицы, которую все используют:

f(z) = -2*z/(far-near) - (far+near)/(far-near)

Насколько я знаю, орфографическая проекция работает так, что она должна отображать левые/правые, верхние/нижние, ближние/дальние координаты в 1/-1.

Но если мы подставим ближнюю и дальнюю координаты, то получим:

f(far) = -2*far/(far-near) - (far+near)/(far-near) = (-3*far - near)/(far - near)
f(near) = -2*near/(far-near) - (far+near)/(far-near) = (-far - 3*near)/(far-near)

Что в большинстве случаев не вернет -1 и +1.

По сути, я предполагаю, что вся функция должна быть инвертирована (по сравнению с тем, как вычисляются координаты X и Y), но вместо этого часть «перевода» остается прежней.


person Botond Máté    schedule 15.02.2017    source источник


Ответы (1)


Значения near и far на самом деле являются расстояниями до соответствующих плоскостей отсечения глубины и, таким образом, являются положительными значениями. Система координат, которую следует учитывать, — это (e_x, e_y, e_z), где e_x указывает вправо, e_y указывает вверх, а e_z указывает на камеру/глаз. В этой системе координат координаты z плоскостей отсечения глубины в конечном итоге равны -near и -far, что делает математическую проверку, как вы заметили.

person user3146587    schedule 15.02.2017
comment
Хорошо, чего я не понимал, так это того, что мне действительно нужно было нанести на карту негативы. Я переделал математику на бумаге, и это дало правильные результаты. Спасибо. - person Botond Máté; 16.02.2017