0

この問題についてしばらく調べていますが、解決策が見つかりません。現在、カメラはプレイヤーの位置を正しく追跡していますが、カメラの回転がうまくいきません。x 軸に沿ってのみ回転すると、正常に動作します。しかし、別の回転を追加すると、「y」がうまくいかず、カメラが間違った方向を見始めます。

現在、私のカメラには位置と回転しかありません。

ここにいくつかのコードがあります。

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 を使用していることも知っています。

4

1 に答える 1

3

シンプルな動作が必要な場合は、使用する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 tutorialsのこのサイトから取得したとおりです。

于 2012-11-16T13:41:37.083 に答える