OpenGLマルチプラットホームへの準備――Xファイルからのデータ変換

3DCGプログラミングで案外高い壁となるのは、プログラミング技術でもなく、数学の技術でもなく、実はリソース(物体形状やテクスチャ)の準備・管理ではないでしょうか?少なくとも自分にとってはそう感じます。


自分自身、専門的な絵の心得がある人間では無いので、基本的には三面図が存在する立体以外は、ポリゴンに起こすことがほとんど出来ないレベルです。となると、誰かに頼むか、それなりに高機能なモデラーを用いて、腕利きの方が開いているCG講座のページ等を参考にしながらコツコツ作っていくことになります。が、そういったモデラーで出力されるのは、3ds、xsi、lwo/lws(lw2)、mqo(貧乏人の味方)、dxf(!)、x等のファイルフォーマットです。


OpenGLが、プログラミングのしやすさと裏腹に普及しないのは、こういったファイル群をデフォルトでは一切扱うようになっていない所だと思います。つまり、ファイルの読み込み→データのセット・管理までを自前で記述しなければいけないのです。さらに、シーングラフ全体を構築して、動的なカリングなどを実装するとなると、データの扱いに関する手間は膨大なものになります。


私は、この手間を少しでも減らす対策として、DirectXXファイルローダーを利用して、OpenGL用のデータに変換し、使用しています。ファイルロードする再に、リファレンスラスタライザで一度だけDirect3DXDeviceを呼び出し、D3DXライブラリを使用してテクスチャも含めたXファイルのロードを行います。まだシーングラフに対応しておらず、未完成ではありますが、個人レベルでプログラムを組める最低限の環境は揃っています。


これをザウルスに移植する場合、DirectXは呼び出せないため、当然Xファイルをそのままで扱うわけには行かなくなります。となると、OpenGL側で使っている独自のクラスのオブジェクトを、ベタにファイルへ書き出すことになりそうですが、Windows←→LinuxZaurus間でのファイル互換性がやや不安です。バイナリなので改行コードは問題にならないものの、おそらくエンディアンはあわせる必要があると予測されます。x86とARM系のエンディアンって、同じだったかな?(^^;;


#環境は出来ても、結局中身を作るのは自分。ひとまず色々完成させるためにも、最低限の労力で進めたい所です。