基本的な座標系
< 前へ [ トップへ ] 次へ >

 実は、プログラマが特に座標系を宣言しなくても、システム側で勝手に用意され、使用されている座標系が2つだけあります。それはスクリーン座標系ワールド座標系という特別な座標系で、3Dコンピュータグラフィックスを描画する上で最低限必要な座標系です。ここではそれらを含め、基本的な座標系について簡単に述べておきましょう。


 スクリーン座標系

 スクリーン座標系は、パソコンの画面に張り付いた形で存在する特別な座標系です。3Dコンピュータグラフィックス映像は、仮想世界の全ての立体を、スクリーン座標系のX-Y平面に投射したものです。言い換えれば、スクリーン座標系のX-Y平面はパソコンの画面に等しいのです。現実世界と仮想世界を繋ぐ座標系と言えるでしょう。

  
 スクリーン座標系が、他の座標系と決定的に異なる点がもう一つあります。それは、RINEARN-X 3Dのスクリーン座標系は、スクリーン上に3Dコンピュータグラフィックスを描画する機能を持っているという点です。つまりスクリーン座標系は、仮想世界を自身のX-Y平面に投射した様子を、画像として出力することができるのです。まさにスクリーン(画面)そのものと見なせるわけです。
 このようにスクリーン座標系は、3Dコンピュータグラフィックスに必要不可欠な存在であり、どんな時でも必ず存在しなければなりません。実は、これまで第1章で用いてきたRealtime3DFrameクラスも、起動時にスクリーン座標系を用意しており、そのスクリーン座標系に投射された映像を自身のウィンドウに表示していたのです。


 ワールド座標系

 スクリーン座標系に加えて、もう一つだけ必要不可欠な座標系が存在します。それがワールド座標系です。
 ワールド座標系はスクリーン座標系上に配置されています。そして、立体モデルは通常、スクリーン座標系ではなくワールド座標系上に配置されるのです。
   
 このようにワールド座標系を用いる利点は、まず第一にカメラ視点の変更を容易にできる事があげられます。仮に多数の立体を直接スクリーン座標に配置してしまうと、視点を変更した際、全ての立体を構成する無数の頂点座標の位置関係を複雑に計算しなおさなければなりません。そこで全立体に共通の座標系、つまりワールド座標系を一枚噛ませて配置しておけば、視点変更の際はワールド座標系だけを動かせばよいので、非常に単純な作業ですみます。
 加えて、ワールド座標系がもたらす第二の利点として、仮想空間上においてカメラ視点に左右されない絶対的な座標が定義できるという点が挙げられます。例えば3Dシューティングゲームなど、広大な舞台において複雑に運動する物体を多数制御しなければならないような場合には、地面に固定された絶対的な座標系を基準として処理を記述するのが好ましい事がよくあります。

 なお、ここではスクリーン座標系にワールド座標系を配置する前提で解説しましたが、抽象化された3Dシステムの中には、ワールド座標系上にスクリーン座標系を配置する操作が可能な場合もあります(変換行列が順変換か逆変換かの違いだけで、処理に本質的な違いはありません)。そういった場合はスクリーン座標系をカメラ座標系と呼ぶ場合もあります。RINEARN-X 3Dでも、近い将来にこういったカメラ座標系的な配置機能が導入される予定です。


 ローカル座標系

 さて、スクリーン座標系でもワールド座標系でも無い、プログラマが自由な用途で使用する座標系は、一般にローカル座標系と呼ばれます。ローカル座標系は必須では無いので、プログラマが必要に応じて必要な数だけ宣言し、用意します。
 例えば 「 動く街 」 を表現したいなら、まず野原や山などの動かない立体はワールド座標系上に配置し、電車やバス・飛行機などの動く立体にはローカル座標系をそれぞれに用意して、その上に配置します。


もし飛行機のプロペラを回したいなら、飛行機座標系(ローカル)の上にプロペラ座標系(ローカル)を配置し、そこにプロペラを配置して回します。また人物キャラクターなどのように複雑な動きをする立体モデルには、腕座標系や足座標系、頭座標系なども必要になるでしょう。

< 前へ [ トップへ ] 次へ >


スポンサーリンク



スポンサーリンク

この階層の目次
新しいお知らせ

次回のVCSSL 3.4.10において、関数1個の挙動に非互換な修正が適用されます
2019年02月12日 - VCSSLの次回の正式リリース版3.4.10において、これまでドキュメントと実際の挙動が異なっていた描画系の関数1個に、非互換な修正が適用されます。その詳細と、使用コードでの対応方法について解説します。

RINEARNのソフトウェア向けにOpenJDKで生成したJava実行環境(JRE)の提供を開始
2019年02月06日 - Javaのリリースモデル変更への対応として、OpenJDKのjlinkツールを用いて、RINEARNのソフトウェア実行用に生成したJava実行環境(JRE)の提供を開始しました。その詳細と、今後の方針について解説します。

シンプル&コンパクトなプログラム関数電卓! 「 リニアンプロセッサー nano 」の概要
2019年01月26日 - RINEARNでは現在、プログラム関数電卓ソフト「 リニアンプロセッサー 」の派生版として、シンプル&コンパクトな方向性を目指した「 リニアンプロセッサー nano 」を開発中です。その概要をご紹介します。

コードアーカイブ新着
入力された数式を積分して値とグラフを表示するツール

画面上で数式を入力すると、それを数値的に積分し、値とグラフを表示してくれるGUIツールです。
2019年01月20日
z = f(x,y,t) の形の数式を3Dグラフとしてアニメーション描画するツール

入力欄に z = f(x,y,t) の形の数式を入力すると、それを3次元のグラフにアニメーション描画してくれる簡易ツールです。
2018年11月26日
y = f(x,t) の形の数式を2Dグラフとしてアニメーション描画するツール

入力欄に y = f(x,t) の形の数式を入力すると、それを2次元のグラフにアニメーション描画してくれる簡易ツールです。
2018年11月25日
t を媒介変数とする x(t), y(t), z(t) の数式を3Dグラフに描画し、アニメーションもできるツール

入力欄に x(t), y(t), z(t) の形の数式を入力すると、それを t を媒介変数として3次元のグラフに描画し、アニメーションもできる簡易ツールです。
2018年11月20日
t を媒介変数とする x(t), y(t) の数式を2Dグラフに描画し、アニメーションもできるツール

入力欄に x(t), y(t) の形の数式を入力すると、それを t を媒介変数として2次元のグラフに描画し、アニメーションもできる簡易ツールです。
2018年11月19日
公式Twitterアカウント

スポンサーリンク