0

最近、私は DirectX 9 でうまく動作するカメラを作ろうとしてきましたが、問題がありました。それでは、私のコードの一部をお見せしましょう。

D3DXMatrixLookAtLHカメラも回転させたいので使っていません。

D3DXMATRIX matView,
           matVTranslate,
           matVYaw,
           matVPitch,
           matVRoll;

D3DXTranslation(&matVTranslate, x, y, z);
D3DXRotationY(&matVYaw, yaw);
D3DXRotationX(&matVPitch, pitch);
D3DXRotationZ(&matVRoll, roll);

matView = matVTranslate * (matVPitch * matVYaw * matVRoll);

d3ddev->SetTransform(D3DTS_VIEW, &matView);

それは非常に奇妙な効果を生み出します。fps カメラを作成するより良い方法はありますか? プログラムを実行したい場合は、ここにexeがあります。コードが必要な場合は、Exeをお知らせください。ありがとうございました。

4

1 に答える 1

3

fps でもD3DXMatrixLookAtLH( doc )を簡単に使用できます。キャラクターの目の位置は pEye です。ビューの回転のために、ビュー方向の正規化されたベクトルを含むベクトルを保持できます。これは、rotationmatrix で変換でき、pAt の pEye に追加できます。

D3DXMATRIX matView,
           matLook;

D3DXMatrixRotationYawPitchRoll(&matLook,pitch,yaw,roll);

D3DXVector3 lookdir;
// yaw,pitch,roll are assumed to be absolute, for deltas you must save the lookdir
lookdir = D3DXVector3(0.0,0.0,1.0);
D3DXVec3TransformCoord(&lookdir,&lookdir,&matLook);

D3DXVector3 at;
at = camerapos + lookdir;

D3DXMatrixLookAtLH(&matView,&camerapos,&at,&up);

d3ddev->SetTransform(D3DTS_VIEW, &matView);
于 2012-12-10T10:38:17.370 に答える