Перемещение матрицы проекции в определенную точку X, Y, Z? OpenGLES 2.0 — iOS

Скажем, я использую приведенный ниже код для настройки проекционного вида:

float aspect = fabsf(self.view.bounds.size.width / self.view.bounds.size.height);
GLKMatrix4 projectionMatrix = GLKMatrix4MakePerspective(GLKMathDegreesToRadians(65.0f),     aspect, 4.0f, 10.0f);    
self.effect.transform.projectionMatrix = projectionMatrix;

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


person GuybrushThreepwood    schedule 28.10.2013    source источник
comment
Не то, чтобы на мой вопрос был дан ответ, но я думаю, что мы занимаемся похожими (или, по крайней мере, близкими) вещами? Проверьте это: stackoverflow.com /вопросы/19602190/   -  person rkh    schedule 29.10.2013


Ответы (1)


Как и любой хороший учебник по основам 3D-программирования (например, этот ) скажу тебе...

  • Матрица Model преобразует координаты вершин из пространства модели (координатное пространство, в котором указана ваша сетка, которое обычно не зависит от того, где вы хотите разместить модель в сцене) в мировое пространство (концептуальное пространство). вашей сцены).
  • Матрица View преобразует мировое пространство в пространство глаз (то есть систему координат относительно «камеры», которая смотрит на вашу сцену).
  • Матрица Projection преобразует пространство глаза в пространство отсечения (куб от -1,0 до 1,0, представляющий ваш экран, плюс некоторая глубина, которую графический процессор затем преобразует в пространство пикселей).

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

person rickster    schedule 28.10.2013