2013-06-24 1 views
7

Я знаю, что деление на перспективу выполняется путем деления x, y и z на w, чтобы получить нормализованные координаты устройства. Но я не могу понять цель этого. Кроме того, имеет ли он какое-либо отношение к обрезанию?Зачем нам перспективное разделение?

+1

Возможно, вам будет лучше с этим на Maths.se, чем здесь :) (IOW OpenGL полностью не связан) –

+0

http://scratchapixel.com/lessons/3d-advanced-lessons/things-to-know- about-the-cg-lighting-pipe/ – user18490

+1

Возможный дубликат [Понимание матрицы проекции] (https://stackoverflow.com/questions/6111721/understanding-the-projection-matrix) –

ответ

3

Я имею в виду, зачем это нужно?

В условиях неспециалиста: сделать работу с искажением перспективы. В перспективной матрице проекции координата Z становится «смешанной» в выходной компонент W. Таким образом, чем меньше значение координаты Z, т. Е. Чем ближе к началу координат, тем больше вещей увеличивается, то есть больше на экране.

0

Чтобы действительно перевести его на основную концепцию, и почему op является делением (вместо, например, квадратного корня или некоторых таких), считайте, что объект должен в два раза больше, чем размеры, равные половине половины. Получите 1/2 из 2 от ... деления.

Существует множество геометрических способов прийти к такому же выводу. На самом деле диаграмма служит наглядным доказательством этого.

6

Некоторые детали, которые дополняют общие ответы:

Идея заключается в том, чтобы спроектировать точку (х, у, г) на экране, чтобы иметь (хз, YS, d). На следующем рисунке показано это для координаты y.

enter image description here

Мы знаем из школы, что

тангенс (альфа) = YS/д = у/г

Это означает, что проекция вычисляется как

YS = d * y/z = y/w

w = z/d

Этого достаточно, чтобы применить проекцию. Однако в OpenGL вы хотите, чтобы (xs, ys, zs) были нормированы координаты устройства в [-1,1], и да, это как-то связано с отсечением.

Значения экстремумов для (xs, ys, zs) представляют единичный куб, а все вне его будет обрезано. Таким образом, матрица проецирования обычно принимает во внимание пределы отсечения (Frustum), чтобы сделать одно преобразование, которое при делении перспективы одновременно применяет проекцию и преобразует проецируемые координаты вместе с z в нормализованные координаты устройства.

 Смежные вопросы

  • Нет связанных вопросов^_^