C # XNA - у меня есть камера, которая смотрит на точку - так зачем мне матрица проекции?Логический Вопрос - PullRequest
1 голос
/ 26 марта 2011

Мне интересно, почему точно ничего не будет отображаться без проекционной матрицы и что именно делает проекционная матрица. Я просмотрел MSNDN безрезультатно, поэтому решил попробовать кого-нибудь с опытом в его использовании.

Я смотрю на точку:
viewMatrix = Matrix.CreateLookAt(camPos, trackPos, player.getMatrix().Up);

... Из моего понимания того, как это работает, мне не нужна дополнительная информация для работы камеры. Я могу заставить все отображаться нормально, используя проекционную матрицу, но я действительно просто не понимаю , почему это необходимо / что именно оно выполняет.

Возможно, если кто-то сможет передать ссылку или кратко объяснить ее, я смогу лучше манипулировать свойством и получить более плавную работу с камерой, но в целом мне не нравится использовать код, который я не понимаю полностью.

Cheers,
-Hochheimer

1 Ответ

3 голосов
/ 26 марта 2011

Матрица проекции преобразуется из пространства камеры в 2d.

  • Матрица мира = трансформация объекта
  • Матрица камеры = превращает мир в пространство камеры
  • Матрица проекции = Преобразует пространство камеры в 2d пространство

Без проекции вы застряли в 3d, а у нас нет 3D-мониторов (пока).

Простой пример: если у вас есть объект, центрированный в пространстве объектов, и вы примените вращение к мировой матрице, вы будете вращать объект вокруг его собственного центра.

Если вы позже поверните камеру, все объекты будут вращаться вокруг положения камеры.

Позже вам нужно будет увидеть, что вы сделали, затем вы примените проекцию. Он может использовать перспективу или нет. С перспективной проекцией вы в основном делите x, y на z, наиболее тривиальная перспективная проекция, вероятно, выглядит так:

x2d = x/z * screenwidth + screenwidth/2;
y2d = y/z * screenheight + screenheight/2;

Это дает нам «ощущение 3d» точками дальше в трехмерное пространство, находящееся ближе к середине экрана, подумайте о классическом звездном поле, и вы поймете. Для получения дополнительной информации вам необходимо понять основную линейную алгебру, и я предлагаю вам начать там, где вы заинтересованы!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...