Для каких целей мы используем матрицу проекции вида модели? Почему шейдерам требуется матрица проекции вида модели?
Для каких целей мы используем матрицу проекции вида модели? Почему шейдерам требуется матрица проекции вида модели?
Ответы:
Матрицы модели, вида и проекции - это три отдельные матрицы. Модель отображает из локального координатного пространства объекта в мировое пространство, вид из мирового пространства в пространство камеры, проекция с камеры на экран.
Если вы составите все три, вы можете использовать один результат для отображения всего пути от пространства объекта к пространству экрана, что позволит вам решить, что вам нужно передать на следующий этап программируемого конвейера из позиций входящих вершин.
В старых конвейерах с фиксированной функциональностью вы применяли модель и вид вместе, а затем разрабатывали освещение, используя другой результат, полученный из них (с некоторыми исправлениями, так что, например, нормали все еще имеют единичную длину, даже если вы применили некоторое масштабирование к объекту ), затем примените проекцию. Вы можете видеть, что это отражено в OpenGL, который никогда не разделяет матрицы модели и представления, сохраняя их как единый стек матриц представления модели. Поэтому иногда это также отражается в шейдерах.
Итак: составная матрица проекции вида модели часто используется шейдерами для сопоставления вершин, загруженных для каждой модели, на экран. Это не обязательно, есть много способов добиться того же, это обычное дело, потому что допускает все возможные линейные преобразования. Из-за этого его менее составная версия также была нормой в мире старых фиксированных конвейеров.
Потому что матрицы удобны. Матрицы помогают преобразовывать местоположения / направления относительно различных пространств (пространство может быть определено 3 перпендикулярными осями и началом координат).
Вот пример из книги, указанной @ legends2k в комментариях.
Жители Картезии используют карту своего города, где начало координат довольно разумно сосредоточено в центре города, а оси направлены по сторонам света. Жители Дислексии используют карту своего города с координатами, центрированными в произвольной точке, и осями, ведущими в произвольных направлениях, что, вероятно, казалось хорошей идеей в то время. Жители обоих городов вполне довольны своими картами, но государственный инженер транспорта поставил задачу увеличить бюджет для первого шоссе между Картезией и Дислексией, ему нужна карта, показывающая детали обоих городов, поэтому вводится третья координата. система, которая превосходит его, хотя и не обязательно кого-либо другого.
Вот еще один пример,
Предположим, что вы создали объект автомобиля в игре с его положениями вершин, используя мировые координаты. Предположим, вам нужно использовать эту же машину в какой-то другой игре в совершенно другом мире, вам нужно снова определить позиции, и вычисления будут сложными. Это потому, что вам снова нужно рассчитать положение окна, капота, фар, колес и т. Д. В машине по отношению к новому миру.
Посмотрите это видео, чтобы понять концепции модели, вида и проекции. (настоятельно рекомендуется)
Затем посмотрите на это, чтобы понять, как вершины в мире представлены как матрицы и как они преобразуются.