Камера в OpenGL ES
У меня есть сцена следующим образом:
3D-коробка с основанием по центру в начале координат и четырьмя прямоугольниками, окружающими основание коробки. Мы можем думать, что это здание с улицами со всех четырех сторон. Я хочу получить матрицу проекционного вида модели. Я подготовил матрицы проекции и просмотра на основе настроек камеры, но не уверен насчет матриц модели. Будет ли у каждого объекта в сцене другая матрица модели или только одна матрица модели для сцены в целом?
Какой будет матрица модели для куба и прямоугольников?
Я хочу перенести камеру на улицы со всех четырех сторон здания.
1 ответ
Это может быть сделано любым способом, но я рекомендую иметь отдельную матрицу модели для каждого здания (куба), которая, вероятно, состоит только из переводов. У каждого будет свой перевод от оригинала. Затем передайте каждую из этих модельных матриц по очереди в вершинный шейдер, прежде чем каждый будет нарисован с помощью glDrawArrays(). Положение вашей камеры должно входить в матрицу проекции вида, которая также передается в шейдер Vertex, но обновляется только тогда, когда камера фактически перемещается. Ваш шейдер Vertex должен затем умножить матрицы модели и проекции вида вместе. Это помещает необходимость работы в шейдер, где это должно быть.