DirectXが左手座標系を使用するのはなぜですか?


52

Stack Overflowに投稿することを検討しましたが、この問題に関するMicrosoftの選択に対する合理的な技術的説明を考えることができないため、質問はあまりにも主観的であると思います。しかし、この質問は非常に長い間私を悩ませており、私のプロジェクトの1つで問題が発生し続けており、実際にこれを説明する試みを見たことはありません。

OpenGLは、右手座標系を使用します。世界座標系の+ Z部分は、視聴者に向かって伸びます。

DirectXは、世界の+ Z部分は座標左手系が延び使用見る人から離れて、スクリーン。

私はGlide APIを使用したことがないため、どのように機能したのかわかりませんが、収集できるものから、左利きのシステムも使用しています。

これには技術的な理由がありますか?そうでない場合、座標系の特定の利き手に概念的な利点はありますか?なぜ一方が他方を選択するのでしょうか?


5
これは、アラビア語とヘブライ語が右から左に書かれているのに、他のすべての言語は左から右に書かれている理由を尋ねているようです。
ゲイブ

17
私は、数学の強固な基盤を共有するグラフィックスAPIの間に、あからさまな矛盾がある理由を理解しようとしています。セム文字の方向は、明らかに不変の規則には基づいていません。
greyfade

3
この質問は、なぜ.NETプログラマーを雇わないのか(2011-03-25)で参照されました。
ピーターモーテンセン

2
OpenGLもDirect3Dも、右利きまたは左利きではありません。後の画面スペースが右利きである一方、D3Dの画面スペースではクリップスペースで左利きに変更されていたため、+ Z側から見たときのXからYへの回転は反時計回りです。また、両方のシステムにより、開発者はいずれかのキラリティのスペースを使用できます。
legends2k

1
@。彼らがおそらく言及しているのは、フレームワークであるASP.NET Webformsです。.NETは、基本クラスライブラリおよびCLRとして記述できます。
マフィンマン

回答:


64

私はこれが古い投稿であることを知っていますが、この投稿が参照されており、選択した回答のトーンが嫌いだと思いました。

だから私は少し調査をしました!

  1. DirectXは古い。1995年に最初にリリースされたとき、世界にはNvidiaATI、DirectX対OpenGL よりもはるかに多くのものがありました。それは15年以上です、人々。
  2. 3dfx Interactiveの Glide(当時のDirectXの競合他社の1つ。OpenGLは当時のゲーム用ではありませんでした)は、左手座標系を使用していました。
  3. POV-RayおよびRenderMan(Pixarのレンダリングソフトウェア)も、左手座標系を使用します。
  4. DirectX 9+は両方の座標系で機能します。
  5. WPFXNA(シーンでDirectXで動作する)はどちらも右手座標系を使用します。

これから、いくつかのことを推測できます。

  • 業界標準は、人々が好むほど標準ではありません。
  • Direct3Dは、誰もが独自の方法で作業を行ったときに開発されたものであり、開発者はおそらくそれをよく知らなかったでしょう。
  • 左利きはオプションですが、DirectXの世界では慣習的です。
  • 慣習は完全に消滅するため、DirectXは左利きでしか機能しないと誰もが考えています。
  • マイクロソフトは最終的に学習し、作成した新しいAPIの標準に従いました。

したがって、私の結論は次のようになります。

彼らが選択しなければならなかったとき、彼らは標準を知らず、「他の」システムを選択しました、そして、他のみんなはただ乗りに行きました。 怪しげなビジネスはありません。下位互換性がMicrosoftのゲームの名前であるため、運が悪かっただけの設計上の決定です。


11
DirectXは、3Dコンピューターグラフィックスと比較して衣服を包む幼児であり、複数の3D座標系を管理し、それらの間で変換する必要があるコンピュータープログラムと比較すると、比較的若いです。グラフィックスクラスを初めて受講したのは1970年代半ばで、インストラクター(フランククロウ)でさえも、右手座標系のみを使用するように非常に強く推し進めていました。1983年、私はグラフィックスを使用しない仕事をしていましたが、座標変換が進行していました。必須の右手規則は、最初に発行されたプロジェクトメモでした。(そして、私はそれを発行しませんでした!)
ジョンR.ストローム

7
年齢と関係があるのか​​どうかはわかりません。ほとんどの物理科学は右手系の座標系を使用しておらず、コンピューターが登場してから何年も経っていますか?これは、Glide、次にDXが続いているものよりもはるかに古い規則です。
トーマスオーエンズ

3
学界で標準が使用されているからといって、それが産業/その他のアプリケーションで同じになるわけではありません。結局のところ、人々は自分の分野で使用されているものは何でもフォローします。そうしないと、グラフィックシステムの原点が左上ではなく画面の左下隅になります。さらに、年齢に関するポイントは、「デスクトップ用の3Dレンダリング」の全体がまだ新しく、「標準」と「ベストプラクティス」がまだ完全に打ち出されていないときにDXが生まれたということです。
-Kyte

1
a)だから、あなたは私の答えを呼び出します。これは、証明可能な事実の単純なリストであり、私自身の個人的な推測である「迷信的」および「事実に根拠のない」と明示的に呼んでいるものです。裏付けは何ですか?b)私の答えが嫌いなら、いつでも自分の答えを出せます。私がこの答えを出したとき、受け入れられた答えはすでに一歳でした。何か貢献できると感じたら、自由に知識を追加できます。c)市場での足場が不安定な場合、独占を作るのは難しい。これは現代の多国籍MSではありません。
Kyte

2
@Kyte 3Dfxには、特定の理由で独自のAPIがあり、ユーザーをハードウェアにロックします。開発者は3Dfxでしか動作しないゲームを書くために「賄bri」を払っていたため、エンドユーザーにハードウェアの購入を強制しました。Microsoftは、開発者がWindows用のゲームのみを作成できるように、APIにロックすることを望んでいました。これにより、最終的に3Dfxが殺されました。単純で単純なビジネス上の決定であり、不正行為ではありません。これは今日も続いています。Nvidaは、CUDAを使用してカードにロックすることを望んでいます。AMDはOpenCLを使用することを望んでいます。これは歴史であり、私は当時の業界にいました。

37

誰も言及していないことに驚いています:OpenGLは左手座標系でも動作します。少なくとも、シェーダーを使用していて、デフォルトの深度範囲を使用している場合はそうなります。

固定機能パイプラインを破棄すると、「クリップスペース」を直接処理します。OpenGL仕様は、クリップ空間を4D同次座標系として定義しています。正規化されたデバイス座標を介してウィンドウスペースまで変換を実行すると、これがわかります。

ウィンドウスペースは、ウィンドウのピクセルのスペースにあります。原点は左下隅にあり、+ Yが上がり、+ Xが右になります。これは、右手座標系に非常によく似ています。しかし、Zはどうですか?

デフォルトの深度範囲(glDepthRange)は、ニアZ値を0に設定し、ファーZ値を1に設定します。したがって、+ Zはビューアーから遠ざかります。

それは左利きの座標系です。はい、深度テストをGL_LESSからGL_GREATERに変更し、glDepthRangeを[0、1]から[1、0]に変更できます。ただし、OpenGL のデフォルトの状態は、左手座標系で動作することです。そして、クリップスペースからウィンドウスペースに到達するために必要な変換はどれもZを無効にしません。したがって、クリップスペース、頂点(またはジオメトリ)シェーダーの出力は左手スペース(ちょっと。4D同次空間です。利き手を特定するのは難しいです)。

固定機能パイプラインでは、(glOrtho、glFrustum等製)標準射影行列は、すべてに右利きの空間から変換左利き 1。Zの意味を反転させます。生成する行列を確認するだけです。目の空間では、+ Zは視聴者に向かって移動します。投影後の空間では、移動します。

Microsoft(およびGLide)は、単に投影行列で否定を実行することに煩わされていなかったと思われます。


4
本当に興味深い。私はそれをよく見たことがありません。私の質問は特に世界空間に関するものですが、あなたの答えは私に思考の糧を与えてくれます。
greyfade

深度範囲または深度テストのいずれかを変更すると右利きになりますが、両方を使用するとお互いがキャンセルされ、左利きのシステムになります。
hultqvist

1
おもしろい。ビューポート深度変換を見てください:z_wiewport = z_clip *(far-near)/ 2 +(near + far)/ 2。これにより、クリップスペースの-1が近くに、+ 1が遠くにマッピングされます。したがって、後でビューポートにマップされた方法を逆にすることはできますが、クリップスペース自体は左利きと見なすことができます。
コス

1
@NicolBolas:画面スペースが右利きであるため、Direct3Dでさえ純粋に左利きではないことに気付きましたか?Xは左から右、Yは上から下、Zはビューアから離れています。つまり、XからYは、Z軸の反対側から見て反時計回りの回転です。
legends2k

1
@bobobobo gluLookAt によって生成されたビューマトリックスは利き手も変更できることに注意しました」 -いいえ、変更しません。それがまさに前方ベクトルの計算方法ですが、この行列はそれでも右手空間での通常の剛体変換です(そして実際、+ zは実際に右手空間で「後方」です)。フォワードベクトルを否定することは、座標空間の利き手を変更することとは関係ありません。
クリスは、モニカの復職を

11

それは純粋な歴史です。古代の洞窟グラフィックプログラマーは、モニター(テレタイプ?ストーンタイプ?)の表面を2次元のグラフ用紙と見なしていました。数学と工学では、グラフ用紙にデータポイントをプロットするための通常の規則は、x = right、y = upです。ある日、シリコンホイールの発明から約1週間後、誰かが3Dグラフィックスについて考えました。このアイデアのろうそく球が頭の上で点滅したとき、何らかの理由で、彼らは視聴者から離れてZ =を追加することを選択します。(痛い、それを想像するだけで右手が痛い。)

彼らはいつか彼らの子孫がエンジニア、科学者、素晴らしい芸術家、商業芸術家、アニメーター、製品デザイナーなどになり、3Dグラフィックスが役に立つとは思いもしませんでした。これらの優れた現代人はすべて、右手座標系を使用して、相互に一貫性を持たせ、より確立された数学のテキストと物理学の慣習に従っています。

表示面に基づいて3D座標系を作成するのは愚かです。重要なのはモデルです-家、椅子、太りすぎの緑の鬼または銀河を表す三角形と多角形と平面。今日、私たちは皆、右手系XYZシステムですべてのものを設計およびモデル化し、モデルの世界の観点からそうします。カメラはある時点で追加され、おそらく狂ったように飛び回るように作られており、モデルをピクセルに変換する目に見えないインフラストラクチャであり、腸内で調整されたシステム変換で動き回る必要があります。

混乱を助長するために、一部のグラフィックライブラリは、CRTが画像を上から下にスキャンすることを認識しているため、Y = downになっています。X11、fvwm、gtk +、Win31 APIなど、すべてのウィンドウシステムおよびウィンドウマネージャーで現在でも使用されています。ClutterやBerylなどの新しい3D GUIシステムがZをどのように処理するかは、3Dグラフィックスモデリングとは別の問題です。これが必要なのは、アプリケーションプログラマーとGUIデザイナーのみです。


1
すべて非常に興味深いものであり、SGIのGLの背後にある理論的根拠を確かに説明しています。...しかし、これは左利きのDirectXをどのように説明しますか?
greyfade

いくつかの2Dおよび3Dシステムはすべて、共通の歴史から慣習を導き出しました。
-DarenW

10

どちらも簡単に変換できるため、どちらも本質的に同等です。左利きのシステムで私が見つけることができる唯一の利点は、オブジェクトが観測者から遠ざかるにつれて、あらゆる方向(x、y、またはz)で、距離がより高い値になることです。しかし、これがMicrosoftが他を選択した理由であるかどうかはわかりません。

POV-Rayは左利きのコリドーシステムも使用します。


5
はい、多くのグラフィック初心者は、画面の深さとともにzがより自然に増加することを感じています。しかし、彼らはまた、xを右に、yを上に向かって「グラフ軸」スタイルに増やしたいと考えています。これにより、左手座標系が取得されます。後になって、より複雑なことを行おうとすると、科学/数学/工学の右利きの世界とは無縁であることに気づきます。
ティムデイ

6
@Timday、初心者に秘密の3Dグラフィックの非ハンドシェイクを教える必要があります。親指、人差し指、および中指をすべて互いに直角に伸ばした状態で、右手を差し出します。親指はX、人差し指はY、中指はZです。次に、手を動かして、必要な座標に合わせて、動きが変換にどのように影響するかをすぐに理解します。
ジョンR.ストローム

3
@ジョン:ねえ、物理学者も同じ秘密の握手をしている!
ティムデイ

1
@John右利きのシステムの利点には完全に同意しますが、左利きのシステムではハンドシェイクルール(誰もが学校で学ばなければならない)も左手で使用できることを知っています。
クリスは、モニカを復活させる

@ChristianRau、使用する手は、右手または左手で記述しようとしている座標系の種類によって異なります。
ジョンR.ストローム14年

10

DirectX(およびDirect3D)Alex St. John主任開発者は、最近コメントしました。彼はDirect3Dの歴史に関する記事で次のように書いています。

私[...]は、Direct3D APIの利き手を選択するように求められました。個人的な好みから、左手座標系を選びました。[...]それはarbitrary的な選択でした。

ソース:http : //www.alexstjohn.com/WP/2013/07/22/the-evolution-of-direct3d/


他の世界が何をしているのかわからない場合にのみ、任意の選択です。世界の残りの地域は、グラフィックスの右手座標系で事実上標準化されています。
ジョンR.ストローム

1
@ JohnR.Strohm-リンクされている記事を読んでもらえましたか?
マキシマスミニマス

リンク腐敗はそのページを食べました。ここでは、最新の作業のスナップショットです:web.archive.org/web/20161101112002/http://www.alexstjohn.com/WP/...
マックスBarraclough

5

理解すべきことは、左手系と右手系の座標系の変換に膨大な量のプログラマー時間が浪費されており、特定の瞬間にどのシステムが必要かを思い出してさらに多くのプログラマー時間が浪費されていることです。

これらはすべて、右手座標系が業界標準になったときになくなりました。

利き手問題を導入して数を倍にすることなく、すでに一般的に使用されている十分な座標系があります。Minkler&Minkler、 "Aerospace Coordinate Systems and Transformations"を参照してください。航空宇宙座標ビジネスに携わっている場合、たとえばフライトシミュレーションを行う場合は、その本が必要です。

私の推測では、MicrosoftはDirectXプロジェクトに業界標準について何も知らず、業界標準があることを認識せず、それが重要ではないと考えていたのではないでしょう。

もう1つの可能性は、右利きのシステムが業界標準であることを知っていて、DirectXを代わりにOpenGLを使用するようにコードを変換することを人々が困難にするように、意図的にDirectXを左利きにしたことです。これが実際に事実であることを発見した場合、レドモンドのx殺人者としての、おそらく短命の新しいキャリアに着手する必要があると思います。


私の質問では、Microsoftをバッシングするつもりはありませんでしたので、彼らが念頭に置いていたOpenGLとの非互換性である可能性については言及しませんでした。
greyfade

3
@greyfade:OK、それならこのようにしましょう。右手座標より左手座標を好む、またはその逆を好む技術的な理由はまったくありません。しかし、今日では、右手座標を好み、左手座標を使用して何かを実装することのヒントをささやく人でさえ、タール、フェザー、および鉄道で町を出て行く非常に非常に良い理由があります。それで簡単になりますか?
ジョンR.ストローム

私はそれに対してどんな量の正しいinりを集めることができるのか知りません。私は仕事の一部としてPostScriptをかなり定期的に使用しています(座標は左下隅が[0、0]で始まり、右上が最大です)。このため、座標変換はまさにこのあたりの事実です。
イナイマティ

2
ええと、これは100%の推測ですか?なぜ答えとしてマークされているのですか?
ミスティックファクター

3
私を打って、それはただ無意味な暴言であり、皮肉なことに、左利きの座標系のように、多くの人々が何らかの理由でそれと一緒に行きました。
クイックジョースミス

5

右利きにも左利きにも利点がないと思う人にとって、あなたは絶対に間違っています。デカルト座標系の右利きは、ベクトル外積の定義に由来します。XYZ基底ベクトルのためにuvそしてww = u X v

この定義は、ベクトル数学、ベクトル計算、および多くの物理学の基本です。電磁相互作用をシミュレートしようとしているとします。磁場ベクトル、Mおよびその場を速度で移動する荷電粒子がありますv。充電はどちらの方法で加速しますか?簡単-の方向にM X v。一部のばかがディスプレイシステムを左利きにするのが楽しいと思ったのを除いて、の方向に加速し-M X vます。

基本的に、2つのベクトル量の間の物理的な相互作用は右利きとして定義されているため、その相互作用をシミュレートする必要があるときはいつでも、グラフィックシステムが右利きであるか、すべての数学。


クロス積が生じるのは電磁場だけではありません。また、空気力学と軌道力学にも現れます。フライトシミュレーションはそれに対処する必要があり、これは物理座標系とグラフィックス座標系が衝突する場所です。上記の私の回答で引用されたミンクラーとミンクラーを参照してください。
ジョンR.ストローム

@Tom:これが本当かどうかわかりません。(1、0、0)、(0、1、0)および(0、0、1)と言う3つのベクトルを取ります。外積の式は明確であり、数字はキラリティ/利き手; 何らかの利き手で3つのベクトルを解釈するのは人間だけです。その場合でも、両手でそれを解釈することを選択できます。 kはに向かっています。気をつけてください、私も右利きの人ですが、それでも事実です。
legends2k

@ legends2k:はい、数字に何も意味を与えたくない限り、それは真実だと思います。物理的な相互作用、ディスプレイシステムの座標、または実際には何でも数値で表現したい場合は、非常に重要です。
トム

@Tom数字に意味を持たなければならないのは正しい。それは本当に重要です。しかし、それでも左手が右手の上にあると言う理由ではありません。私はに意味を与える可能性があり0,0,1、今後のように、それがある左側のように、1,0,0 X 0,1,0メイク0,0,1左手である
Thaina

@Tom実際、左手座標系で物理演算を行う場合、式はまだですM X vが、磁場Mは疑似ベクトルであるため、反対方向を指していると見なされます。どちらのシステムでも同じ方程式を使用できます。変化するのは、疑似ベクトルが「指す」方法の解釈だけです。加速のような適切なベクトルは、どちらの座標系でも常に同じように機能します。en.wikipedia.org/wiki/Pseudovector#The_right-hand_rule
オスカーベンジャミン

5

Direct3Dの初期の左利きに対する本当の答えは、一部の人が推測しているよりも不吉ではありません。DirectXは、Microsoftが1995年にRenderMorphicsを購入したときに始まりました。

当時、RenderMorphicsオフィスで使用されていた標準のグラフィックテキストは、NewmannとSproulによる「Principles of Interactive Computer Graphics」であり、左手座標を使用してすべてを実行していました。大学で使ったのと同じ本です。D3Dコードを見ると、本の方程式と一致する変数名を使用してそれらを見ることができます。

マイクロソフトの陰謀ではありません。この決定は、Microsoftが登場する前に行われました。


私はコメントに同意し、ここで都市伝説のようなこの音でなく、それはあなたの個人的な視点を得るためにうれしいです。
ジョサイアヨーダー

3

最終的にどちらも他のものより優れているわけではありません-3D座標を2Dサーフェスにマッピングしているので、3Dディメンション(実際に3Dを実現)を任意に選択して、ビューアーまたは画面に向けることができます。とにかく4x4マトリックスを使用するので、どちらかを選択する技術的な理由はありません。機能的には、次のように主張できます:

  • X軸を左から右に実行するためのコンピューティングおよびその他のフィールドには、かなり広いコンセンサスがあります(航空は明らかに注目すべき例外です)。
  • 数学では、Y軸は上を向いています。(また、泡はどこへ行くのか)。
  • コンピューターのディスプレイでは、Y軸が下を向いています(これがCRT画面の動作方法であり、また、ほとんどの人間のスクリプトが行を並べる順序でもあるためです)。
  • X / Y平面で表面の「見える」側を見るとき、法線は視聴者の方を向く必要があります(衛星映像を見るときなど、「海抜の高さ」は衛星ではなく、地球の中心)。X / Y平面の法線はZ軸ベクトルであるため、Z軸もビューアの方向を向く必要があります。
  • コンピューター画面で3D画像を見るとき、ビューアーから遠いポイントはより大きなZコンポーネントを持つ必要があります。したがって、Z軸は画面を指す必要があります。

結論:X軸についてはある程度のコンセンサスがありますが、他の2つについては、両方向について議論することができ、2つの右利きの構成と2つの左利きの構成が得られ、それらはすべて理にかなっています。


3

興味深い事実。

Direct3D(DirectX ではなく、DirectXも入力、サウンドなどをカバーします)に、実際に左手座標系がありません

RHシステムとLHシステムの両方を完全にサポートできます。SDKドキュメントを見る、D3DXMatrixPerspectiveFovLH D3DXMatrixPerspectiveFovRH などの関数が表示されます。両方とも機能し、選択した座標系で正常に使用できる投影行列を生成します。地獄、あなたが望むならDirect3Dで列メジャーを使用することさえできます。これは単なるソフトウェアマトリックスライブラリであり、使用する必要はありません。一方、OpenGLで使用したい場合は、OpenGLでも完全に機能することがわかります(おそらく、Direct3D自体からのマトリックスライブラリの独立性の決定的な証拠です)。

したがって、プログラムでRHシステムを使用する場合は、-RHバージョンの関数を使用するだけです。LHシステムを使用する場合は、-LHバージョンを使用します。Direct3Dは気にしません。同様に、OpenGLでLHシステムを使用する場合は、glLoadMatrixとLH射影行列だけを使用します。このようなものはどれも重要ではありませんし、時にはそれが判明している巨大な問題の近くにはありません。


0

どちらの利き手に技術的な利点はありません、それは完全に任意です。一貫している限り、両方とも正常に機能します。

一貫性の利点のため、理想的には「他の人が使用しているものを使用する」べきですが、実際には圧倒的に「好ましい」慣習がないため、多くの場合、それは非常に困難です。せいぜい、特定のコミュニティ(OpenGLなど)内には一貫性があります。

ですから、この質問に対する基本的な答えは、彼らは自分が選んだものを選んだのは、それが正しいと感じたからだと思います(間違いなく、その利き手についての以前の経験があったのです)。

最終的にはほとんど違いはありません。他のシステム/コミュニティと真剣にアセット/コードを交換したい人は、3Dグラフィックスの現実であるため、とにかく利き手変換に対処する準備をしなければなりません。


0

これを以前の回答の補足資料としてここに提供します。1990年代の古いOpenGL仕様から:

OpenGLは、どの座標系でも左利きまたは右利きを強制しません。

(ソース:http : //www.opengl.org/documentation/specs/version1.2/opengl1.2.1.pdf)。

それで、D3DもOpenGLも利き手を強制しないので、本当の質問は次のとおりです。


1
なぜ別の回答で投稿したのですか?以前の回答を編集して、これを追加できませんでしたか?
-gnat

-1

私は言って嫌いですが、座標セットの「手」は実際には主観的です-それはあなたが物を見ていると想像する方法に依存します。OpenGLキューブマップ仕様の例:キューブの内側が外を見ると想像すると、座標系は左利きで、外側から見ると右利きだと思います。この単純な事実は無限の悲嘆を引き起こします。数値的に正しい答えを得るためには、ローカルで実際にどの仮定を行うかは関係ありませんが、すべての仮定が一貫している必要があります。

OpenGLの仕様は公式には「利き手に中立」であり、この問題を回避するために、つまりプログラマーにそれを先送りにするために、かなりの長さをしています。ただし、目の座標とクリップの座標との間には「手の変化」があります。モデルと目の空間では、クリップとデバイスの空間では外を見ています。私はこの偶然の偶然の合併症の結果に常に苦労しています。

クロス積は、一対のベクトルから確実に右利きまたは左利きの3D座標系を生成できるため、私たちの友です。しかし、どちらのハンドかは、これらのベクトルのどれを「X」と呼ぶかに依存します。


3
クロス積は反可換です。A x B ==-B x A.このように、外積は、非共線の第1ベクトルと第2ベクトルをこの順序で取り、第1ベクトルと第2ベクトルを含む平面に垂直な第3ベクトルを生成するように定義されます。 、およびベクトルが順序(最初、2番目、結果)で列挙されたときに右手座標系を作成するのに適した方向です。これを歪曲することを選択した場合、お気軽に、しかし注意してください:私の周りでそれをするなら、あなたは町から出て行く鉄道の尻からタール、羽、そして破片を楽しむ方が良いでしょう。
ジョンR.ストローム

まったく正しい、ジョン。しかし、あなたはまだそのような倒錯が可能であるという事実に直面しなければなりません。つまり、「絶対的な右利き」のようなものはありません。
トーマス・シャープレス

-3

そもそも業界標準は間違っていると言える

座標の業界標準は、実際に人々がすべてを水平面である机の上に描くときの机座標から来ました。Xは左/右、Yは前/後なので、Zを上向きにし、右手座標系が生まれました。

しかし、ご存知のように、モニター画面で使用しているのは垂直面です。Xはまだ左/右ですが、Yは代わりに上下です。

それでは、右手座標系は何を引き起こすでしょうか?これにより、+ Zが後方に、-Zが前方になります。これは一体何ですか?上が+、下が-右が+、左が-しかし前方は-、後方は+ ??? キャラクターが3Dの世界で走っているゲームを作るのはとても愚かですが、進むためにzをマイナスする必要があります。だからこそ、ゲームプログラマーはDirectXを最も高く評価しています。

机から来た標準をつかんでモニターで使用することは、最初から多くのレベルで非常に間違っています。そして、OpenGLとIndustryが間違っていることを認めるべきです。彼らはそれが彼らを快適にするだろうと思うものだけを使用しますが、彼らは間違っています。


2
無知の場合は-1。右側の慣例は、物理学と数学、特に電磁場理論と力学の基礎となるベクトル外積演算に由来しています。コンピューティングは、コンピューターの元々の用途が数字を処理するためだったため、それを採用しました。
ジョンR.ストローム

代わりにあなたの無知のために-1をすべきです。私はあなたが横の机の上に物理学と数学を計算するため、「机の座標」と呼んだので、監視していない、机の上に常に仕事古い時間で物理学と数学を「机の座標」言ったように
Thaina
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.