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

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


 スクリーン座標系

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

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


 ワールド座標系

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

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


 ローカル座標系

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


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

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


スポンサーリンク


スポンサーリンク

この階層の目次
お知らせ

Vnanoのソースコードと開発リポジトリをGitHubで公開
2018年09月30日 - 現在開発中の、ソフトウェア上でのスクリプト処理用途に向けた小型・軽量スクリプトエンジン「 Vnano 」のソースコード&リポジトリを公開しました。ビルド・使用方法や、現状の段階と今後などを解説します。

リニアングラフ3D&2D Ver.5.6 リリース! Java言語のプログラムからも制御可能に
2018年08月19日 - 約5年ぶりの大きなバージョンアップを迎えた、新しいリニアングラフ Ver.5.6の特徴をご紹介します。UIがリファインされ、Java言語でグラフ描画ライブラリとして使う事も可能になりました。

ライセンスの緩和方向への改訂を実施、条件を満たす場合のソフトの再配布などが可能に
2018年07月16日 - RINEARNでは2018年7月に、ソフトウェアライセンスの緩和方向への改訂を実施しました。新ライセンスでは、いくつかの条件を満たす場合において、ソフトの再配布などが無申請で可能になりました。

コードアーカイブ新着
配列を3Dグラフにアニメーションプロットする(点/線グラフ)

座標値配列の内容を、3次元の点/線グラフに連続でプロットし、アニメーションさせるサンプルプログラムです。
2018年11月14日
配列を2Dグラフにアニメーションプロットする

座標値配列の内容を、2次元グラフに連続でプロットし、アニメーションさせるサンプルプログラムです。
2018年11月13日
配列を3Dグラフにプロットする(曲面/メッシュグラフ)

座標値配列の内容を、3次元の曲面/メッシュグラフにプロットするサンプルプログラムです。
2018年11月12日
ファイルを3Dグラフにプロットする(曲面/メッシュグラフ)

座標値ファイルの内容を、3次元の曲面/メッシュグラフにプロットするサンプルプログラムです。
2018年11月11日
連番画像をアニメーション再生する簡易ツール

フォルダ内の連番画像ファイルを、動画への変換不要で、そのままアニメーションとして再生できる簡易ツールです。
2018年09月04日
公式Twitterアカウント

スポンサーリンク