Одна операция, которую матрица вида выполняет для графического конвейера, заключается в том, что она преобразует трехмерную точку из мирового пространства (x, y, z, мы все знаем и любим) в пространство просмотра (или камеры), пространство, в котором камера считается центром мира (0,0,0) и все точки / объекты относительно него. Таким образом, хотя точка может быть на 1,1,1 относительно мира, каковы ее точки относительно местоположения камеры? Ну, как выясняется, чтобы выяснить, вы можете преобразовать эту точку с помощью обратной матрицы, представляющей положение / вращение камеры в мировом пространстве.
Это имеет смысл, если вы подумаете об этом ... скажем, положение камеры составляет 2,2,2. Произвольная точка находится на 3,3,3. Мы знаем, что точка находится на расстоянии 1,1,1 от камеры, верно? Итак, какое преобразование вы бы применили к точке 3,3,3, чтобы она стала 1,1,1 (это расположение относительно камеры)? вы бы преобразовали 3,3,3 на -2, -2, -2, чтобы получить 1,1,1. -2, -2, -2 также инвертированное положение камеры. Этот пример был для перевода, потому что это относительно легко найти, но в основном то же самое происходит для вращения. Но не надейтесь, что сможете просто свести на нет все базисные векторы, чтобы инвертировать матрицу ... с вращением происходит немного больше.
Метод Matrix.CreateLookAt () автоматически возвращает инвертированную матрицу, поэтому вы не заметите, что это происходит, если не отразите ее код.
Сделав еще один шаг вперед, матрица проекции затем берет эту точку зрения в пространстве и проецирует ее на плоскую поверхность, а та точка, которая начиналась в трехмерном пространстве, теперь находится в 2d пространстве.