2

Direct3D アプリケーションを作成するために SlimDX/C# を使用しています。テキストボックスの方法に従ってカメラを構成しました:

private float cameraZ = 5.0f;
camera = new Camera();
camera.FieldOfView =(float)(Math.PI/2);
camera.NearPlane = 0.5f;
camera.FarPlane = 1000.0f;
camera.Location = new Vector3(0.0f, 0.0f, cameraZ);
camera.Target = Vector3.Zero;
camera.AspectRatio = (float)InitialWidth / InitialHeight;

Matrix.RotationYawPitchRoll描画と回転方法はすべてまともmesh.DrawSubset(0)です。他のすべては正常に見えます。

私の問題は、私の 3D メッシュ (薄い正方形のボックス) を横から見て、垂直に立てたときに、水平のときよりも厚く見えることです。を 1 に変更しようとしましたが、AspectRatioもっと悪いです。で、試行錯誤してみたところ、AspectRatioが2.6くらいで普通に見えることがわかりました。それはなぜですか、何が間違っている可能性がありますか?

4

1 に答える 1

1

私はすでに問題と答えを理解しました。

どうやら私はメッシュをスケーリングし、アスペクト比を一致させ、Matrix.RotationYawPitchRoll の後に Matrix.Scaling を適用しました。メッシュを前に向けて回転させると、垂直方向または水平方向に関係なく同じように見えることに気付きます。どのように回転させても、スケーリングによって横に引き伸ばされます。2つのマトリックスを交換すると、問題が解決します。とにかくありがとう

于 2008-10-06T07:18:16.430 に答える