0

私は次の視点を得ようとしています:ここに画像の説明を入力

本質的に、私はいくつかの 3D グラフィックスを使用して 2D ゲームを行っているのでMatrix.CreateOrthographicOffCenterMatrix.CreatePerspectiveOffCenter

プリミティブを描画しましたが、その z インデックスを小さくするとさらに遠くなりますが、常に (0, 0) (左上) の方向に消えますが、消失点は中心になるはずです。

私の変換設定は次のようになりました ((640, 360) は画面の中央です):

basicEffect.Projection = Matrix.CreatePerspectiveOffCenter(0, graphicsDevice.Viewport.Width, graphicsDevice.Viewport.Height, 0, 1, 10);
basicEffect.View = Matrix.Identity * Matrix.CreateLookAt(new Vector3(640, 360, 1), new Vector3(640, 360, 0), new Vector3(0, 1, 0));
basicEffect.World = Matrix.CreateTranslation(0, 0, 0);

消失点が画面中央に来ません。私は CreatePerspective ビューで何とかそれを行うことができましたが、通常のピクセル位置を 3D 空間に簡単に変換できるため、CreatePerspectiveOffCenter を引き続き使用したいと考えています。私は何が欠けていますか?

4

1 に答える 1

0

結局、以下を使用しました。「2D 感」のある 3D ビューを作成するソリューションを探している場合は、これが役立つかもしれません。これらの変換では、0 の z-index は画面の幅と高さと正確に一致し、消失点は画面の中央にあります。

basicEffect.Projection = Matrix.CreatePerspectiveFieldOfView((float)Math.PI / 2f, 1, 1f / 1000, 1000f);
basicEffect.View = Matrix.CreateLookAt(new Vector3(0, 0, 1f), new Vector3(0, 0, 0), new Vector3(0, 1, 0));
basicEffect.World = Matrix.CreateTranslation(0, 0, 0);
于 2013-03-04T13:09:23.373 に答える