2012-04-19 27 views
0

私は駆動されたX/Y座標を保存して、座標をメートルに変換し、各点に1280を加えて(2560x2560の画像にうまく収まるように)関数を使用して、いくつかの種類のレースラインが得られます。しかし、いったんポリゴンを生成してイメージとして保存すると、それは何とか垂直に反転します。画像を垂直方向に反転すると、トラックのビットマップに完全に一致します。私はこれがDirectXの内部でY軸が反転しているためだと言われました。 DirectXで反転したY軸を使用するのはなぜですか?DirectXで反転されたY軸を使用するのはなぜですか?

答えて

5

質問:DirectXはY軸を反転しているのでしょうか、それとも画像ですか?

DirectXは、変換が適用されていない場合、X軸が右を指し、Y軸が上を指す3D/4D座標系を使用します。これは、画面(Y軸が下を指す)が画像を処理しなければならない最後のインスタンスであるためです。それ以前のすべてのステップは、上向きのY軸を持つ座標系を使用します。 Direct3Dは3D世界のために設計されているので、世界のように位置合わせされ、数学の座標系のような座標系は、プログラマや設計者にとってはるかに便利です。 3Dモデルを作成するとします。 Y軸が下向きになるようにデザインすれば、それは奇妙なことではないでしょうか?

パースペクティブなどが可能な変換がない場合、同じ座標系を使用します。 Z軸を無視すると、左上の角は(-1 | 1)、右下の角は(1、-1)です。これは、例えば、数学最後に、この座標系は、左上隅が(0 | 0)になり、右下隅が(ResolutionX | ResolutionY)になるビューポートで変換されます。

したがって、Y軸が上を向く理由は、Direct3Dの主な目的は画面の物理的属性とは独立した便利な方法で世界を記述することである。

+0

ありがとうございました。 –

+0

デフォルトの規約としてはこのようなものはありません。軸があなたが最も好きなところに向くようにします。 D3DXのヘルパー関数は、行列を作成するのに役立つ「右手式のorhtorgonal投影行列」のようにあります。行列はあなたの座標系を "暗示しています"。そして、頂点シェーダで行うのはあなた次第です。 –

+0

従来のDirectX9固定機能パイプラインでは、すべてのビュー座標が左利きの行主要座標用に設定されていると仮定しました。プログラマブルなパイプラインでは、必要なコンベンションを設定するのはあなた次第ですが、コンテンツ、コード、シェーダーと一貫していなければなりません。歴史的に、DirectXはDXUTが使用する左手の行優先座標を使用します。 [DirectX Tool Kit](http://go.microsoft.com/fwlink/?LinkId=248929)のXNA Game StudioおよびSimpleMathは、右手の行優先座標を使用します。 OpenGLは歴史的に、右利きの列主体を使います。 –

関連する問題