Я знаю, что деление на перспективу выполняется путем деления x, y и z на w, чтобы получить нормализованные координаты устройства. Но я не могу понять цель этого. Кроме того, имеет ли он какое-либо отношение к обрезанию?Зачем нам перспективное разделение?
ответ
Я имею в виду, зачем это нужно?
В условиях неспециалиста: сделать работу с искажением перспективы. В перспективной матрице проекции координата Z становится «смешанной» в выходной компонент W. Таким образом, чем меньше значение координаты Z, т. Е. Чем ближе к началу координат, тем больше вещей увеличивается, то есть больше на экране.
Чтобы действительно перевести его на основную концепцию, и почему op является делением (вместо, например, квадратного корня или некоторых таких), считайте, что объект должен в два раза больше, чем размеры, равные половине половины. Получите 1/2 из 2 от ... деления.
Существует множество геометрических способов прийти к такому же выводу. На самом деле диаграмма служит наглядным доказательством этого.
Некоторые детали, которые дополняют общие ответы:
Идея заключается в том, чтобы спроектировать точку (х, у, г) на экране, чтобы иметь (хз, YS, d). На следующем рисунке показано это для координаты y.
Мы знаем из школы, что
тангенс (альфа) = YS/д = у/г
Это означает, что проекция вычисляется как
YS = d * y/z = y/w
w = z/d
Этого достаточно, чтобы применить проекцию. Однако в OpenGL вы хотите, чтобы (xs, ys, zs) были нормированы координаты устройства в [-1,1], и да, это как-то связано с отсечением.
Значения экстремумов для (xs, ys, zs) представляют единичный куб, а все вне его будет обрезано. Таким образом, матрица проецирования обычно принимает во внимание пределы отсечения (Frustum), чтобы сделать одно преобразование, которое при делении перспективы одновременно применяет проекцию и преобразует проецируемые координаты вместе с z в нормализованные координаты устройства.
Возможно, вам будет лучше с этим на Maths.se, чем здесь :) (IOW OpenGL полностью не связан) –
http://scratchapixel.com/lessons/3d-advanced-lessons/things-to-know- about-the-cg-lighting-pipe/ – user18490
Возможный дубликат [Понимание матрицы проекции] (https://stackoverflow.com/questions/6111721/understanding-the-projection-matrix) –