Камера следующего игрока OpenGL

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

Прямо сейчас моя камера имеет только положение и поворот.

Вот код

glm::vec4 cameraPosition;

//This gives the camera the distance it keaps from the player.
cameraPosition.x = 0.0;
cameraPosition.y = 0.0;
cameraPosition.z = 20.0;
cameraPosition.w = 0.0;

// mStartingModel is the rotation matrix of the player.
glm::vec4 result = mStartingModel * cameraPosition;

//here I set the camera's position and rotation. The z rotation is given a extra 180 degrees so the camera is behind the player.
CameraHandler::getSingleton().getDefaultCamera()->setPosition(Vector3f(-player->mPosition.x + result.x, -player->mPosition.y + result.y, -player->mPosition.z + result.z), Vector3f(-(player->mRotation.x + 180), -player->mRotation.y, -player->mRotation.z) );

Также знаю, что я использую opengl, c ++ и glm.

0

Решение

Если вы хотите простое поведение, используя gluLookAt это, наверное, самый простой вариант! Больше информации Вот.

Видя, что вы используете glmрассмотреть что-то вроде

glm::mat4 CameraMatrix = glm::LookAt(
cameraPosition, // the position of your camera, in world space
cameraTarget,   // where you want to look at, in world space
upVector        // probably glm::vec3(0,1,0), but (0,-1,0) would make you looking upside-down, which can be great too
);

Как взято с этого сайта на OpenGL учебники.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]