ややこしい3次元座標系
2022年6月18日 (土) 投稿者: メディア技術コース
コンピュータ上で3次元を扱おうとする際に直面するハードルの一つが,3次元座標系です.
単純に「軸が3つある体系」,「2次元に比べ,軸がもう一つ増えている」など簡単に思うかも知れません.しかし,3次元座標系にはこの記述だけでは書き切れない複雑さが色々潜んでいます.あらゆる内容を全て書き下すと切りがないので,ここでは2つほど,困惑しがちな内容を挙げておきます.
(i) 3次元「回転」扱いの難しさ
3次元座標変換は,教科書的には4x4の行列で定義できるアフィン変換を用いて記述します.このアフィン変換を用いることで平行移動,回転,拡大縮小などが記述できます.その中で,最もややこしいのが回転変換です.一応,X,Y,Z軸に沿った回転角度の組み合わせで回転を記述するオイラー角という表記方法が最も直観的です.しかし,この表記方法には表記自体に曖昧性が存在します.また,回転順序によって結果が異なってきます.また,異なる表記でも同じ回転を表現したり,ジンバル・ロック現象と言った複雑な問題が起きます.こう言った問題がないように回転を記述する方法としては四元数というものがありますが,これの理論もかなり複雑なもので,容易に理解できるものではありません.
(ii) 異なる座標系間の「変換」
前述した回転の難しさはある意味よく知られている問題です.それに対して,こちらの内容はあまり広く知られていません.普段3次元座標系の必要なものを実装する際は,何かしら既存のライブラリを用いることが殆どです.しかし,ライブラリごとにこの3次元座標系の設定が異なっているのが悩みの種です.
3次元座標系における軸設定は3次元物体を記述するところ(モデル座標系)だけに用いられるのではなく,カメラにおける軸設定(カメラ座標系),描画ピクセルの並べ(スクリーン座標系)等における軸設定にも関わるものです.同じライブラリの中では,こういう変換に問題が起きないようになっている(はず)です.しかし,場合によっては軸設定の異なるライブラリの機能をそのまま使いたい場合がありますが,その変換の際に役立つデータの橋渡し方が用意されていない場合が多く,結局自前の試行錯誤で正しい変換のやり方を探すことが殆どです.なので,単純にあるライブラリAからライブラリBに繋げるのに,両者の変換を正しくさせるための変換を探すのに別途の時間を費やす必要があります.
今回は数式を極力用いず,具体例も挙げずに概略を説明したまでですが,今度からは実動するプログラムと数式と共にこの内容が説明できればなと思います.
「雑感」カテゴリの記事
- ランニングマシンもインタラクティブな時代に(2019.03.02)
- 映画鑑賞(2019.02.21)
- 転ばぬ先の....(2019.02.19)
- 論文を書くためのソフトウェア(2019.02.18)
- 3学年合同で最終発表してみた(2019.02.17)