Чтобы понять это полностью, вам нужно понять, как работает алгебра, лежащая в основе 3D-преобразований. SO на самом деле не помогает (или я не знаю, как его использовать) выполнять математику, так что это должно быть без причудливых формул. Вот несколько объяснений высокого уровня:
Если вы присмотритесь, вы заметите, что все преобразования, которые происходят с положением вершины (от модели к миру для просмотра координат отсечения), используют 4D-векторы. Вот так. 4D. Почему, когда мы живем в трехмерном мире? Потому что в этом 4D-представлении все преобразования, которые мы обычно хотим сделать для вершин, можно выразить как умножение матриц. Это не в случае, если мы остаемся в 3D представлении. А умножение матриц - это то, в чем хорош графический процессор.
Что соответствует вершине в 3D в 4D? Вот где это становится интересным. Точка (x, y, z)
соответствует линии (a.x, a.y, a.z, a)
. Мы можем взять любую точку в этой строке, чтобы выполнить математику, которая нам нужна, и мы обычно выбираем самую простую, a=1
(таким образом, нам не нужно выполнять умножение, просто установите w=1
).
Так что это в значительной степени отвечает на всю математику, на которую вы смотрите. Чтобы спроецировать трехмерную точку в 4D, мы устанавливаем w = 1, чтобы вернуть компонент из вектора 4D, который мы хотим сравнить с нашими стандартными размерами в 3D, мы должны разделить этот компонент на w.
Эта система координат, если вы хотите погрузиться глубже, называется homogeneous coordinates
.