質問

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

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メッシュ(薄い四角い箱)が、側面から見て垂直に立つと、水平よりも太く見えることです。 AspectRatio を1に変更しようとしましたが、もっと悪いです。そのため、試行錯誤を繰り返して、 AspectRatio が2.6付近である場合、それが非常に正常に見えることがわかりました。それはなぜで、何が間違っているのでしょうか?

役に立ちましたか?

解決

問題を把握し、すでに答えました。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top