2014-08-31 1 views
1

У меня довольно простая настройка, модель на 0,0,0, с:FPS камеры в C++, может быть, с помощью GLM: LookAt

projection = glm::perspective(fov, aspectRatio, near, far); 
model = glm::mat4(1.0); 

Я хочу гибкую камеру, которая, от того, что я прочитал лучше всего описывается как камера FPS.

Теперь я имею:

glm::mat4 CameraMatrix = glm::lookAt(
     glm::vec3(cameraPosition.X,cameraPosition.Y,cameraPosition.Z), // camera, in world space 
     glm::vec3(cameraTarget.X,cameraTarget.Y,cameraTarget.Z), // direction vector eye + Dir 
     glm::vec3(upVector.X,upVector.Y,upVector.Z) 
     ); 

очень много, как описано здесь: http://www.opengl-tutorial.org/beginners-tutorials/tutorial-6-keyboard-and-mouse/

Это разработка отлично, за исключением одной вещи, мыши вверх и вниз делает, как задумано, но левый-правый поворот мышь делает модель вращением вокруг камеры, а не камерой, вращающейся вокруг модели? Я сделал что-то не так?

Мое впечатление, что для этого требуется по крайней мере некоторое дополнительное вращение и, возможно, перевод, чтобы он работал правильно. Если это так, я задаюсь вопросом, почему это нигде не упоминается. Существует множество обучающих программ, в которых используется lookat, если ссылаться на «камеру FPS», когда я использую Google. Меня это немного смущает.

Теперь примеры вокруг glm :: lookat довольно бедны, и я прочитал кое-что для gluLookAt, в котором слышал некоторые голоса, по крайней мере gluLookAt не является решением для такой задачи, то же самое относится к glm :: lookat? И если да, то каков правильный путь? Я действительно не привязан к glm: смотрю в любом случае, это просто, когда я наткнулся на него, я был как «Эй, просто то, что я искал», и это кажется простым и простым решением. Возможно, кто-то может пролить свет на это и направить меня в правильном направлении или в учебнике.

+0

AFAIK glm :: lookat - это то же самое, что и gluLookAt, только с типами glm, а не с стеком матрицы OpenGL. – Cubic

+0

Возможно, этот учебник - это то, что вы ищете: http://www.learnopengl.com/#!Getting-started/Camera. Описывает логику матрицы lookAt, создающую именно ту камеру FPS, которую вы ищете. –

+0

очень красивый, выглядит как учебник, который мне не хватало. Когда-нибудь я получу некоторую обратную связь. Благодаря! – Gnampf

ответ

1

оказалось, что одна из моих матриц перевернулась, что вызвало эту проблему. Упомянутое выше руководство было очень полезно узнать. Поэтому, если кто-то сталкивается с такой проблемой, это может быть простая математическая проблема и действительно glm :: lookAt делает все, что мне нужно.

 Смежные вопросы

  • Нет связанных вопросов^_^