2013-03-11 1 views
0

Как конвертировать (x,y,z) координаты изнутри перспективной пирамиды, до (x',y',z') координат внутри куба перспективы? (в правой системе координат)Как управлять преобразованием перспективы?

Я попытался умножить эту перспективную матрицу на вектор (x,y,z), но результат не тот, который я ожидал.

projection matrix

Я попробовал его с: FOV = 70 °, аспект = 4/3, рядом с = 100, далеко = 100; x = 100, y = 100, z = -300;

Результат был (158.28, 211.05, -344.44)

Все, что я хочу это:

plan

Спасибо заранее,

+0

Если у вас были близкие и далекие оба значения одинаковы, вы получите разделитель на ноль. Это опечатка? –

ответ

2

Хотя в перспективе матрица обычно трансформирует пространство таким образом, что желаемый вид усеченного сопоставляется канонический том (может быть единичным кубом, но не все графические конвейеры одинаковы - например, D3D отличается от OpenGL), этот том описывается в однородном (проект ive). Это связано с тем, что фактическая проекция является нелинейным преобразованием, но использование проективной системы координат позволяет использовать линейные преобразования для основной части трубопровода.

Так что вам все равно нужно выполнить проекцию, если вам нужна точка в 3D (или 2D) пространстве.

Это просто разрыв.

При умножении точки (x, y, z, 1) на перспективную матрицу вы получаете вектор-4 (x ', y', z ', w'). Затем вам нужно разделить x ', y' и z 'на w' для выполнения проекции.