Хобрук: Ваш путь к мастерству в программировании

Почему матрицы режима просмотра и камеры используют ориентацию RUB

Обычно я нахожу библиотеки матриц, строящие матрицы как представления модели, так и матрицы камер из векторов RUB (справа вверх-вниз), как показано на этих страницах:

http://3dengine.org/Right-up-back_from_modelview http://3dengine.org/Modelview_matrix

Является ли кортеж RUB просто общим стандартом? В противном случае, есть ли причина, по которой векторы RUB предпочтительнее любой другой ориентации (например, вперед-вверх-вправо)?


Ответы:


1

В частности, если вы используете программируемый конвейер, у вас почти полная свобода выбора системы координат, в которой вы работаете, и способа преобразования геометрии. Но как только все ваши преобразования применены в вершинном шейдере (в результате чего вектор назначен gl_Position), в конвейере между вершинным шейдером и фрагментным шейдером все еще остается фиксированный функциональный блок. Этот фиксированный функциональный блок полагается на то, что преобразованные вершины находятся в четко определенной системе координат.

gl_Position находится в системе координат, называемой «координаты клипа», которая затем превращается в «нормализованные координаты устройства» (NDC) после деления на координату w вектора.

На основе вектора в NDC блок растеризации с фиксированной функцией генерирует пиксели. Он будет использовать первую координату для сопоставления с горизонтальным направлением окна, а вторую координату — для сопоставления с вертикальным направлением окна. Третья координата будет использоваться для расчета глубины, которую можно использовать для проверки глубины.

Это означает, что после применения всех преобразований первая координата должна быть влево-вправо, вторая координата должна быть направлена ​​снизу вверх, а третья координата должна быть направлена ​​вперед-назад (ну, это может быть задом наперед, если вы измените тест глубины).

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

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

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

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

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

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..