next up previous contents
Next: PiasArtist2000で作成した形状情報の読み込みとシミュレーション Up: プログラミングにおける問題点と対策 Previous: pgplotでグラフを書く

剛体の回転運動の可視化

ペンチが回転しながら上下反転することは分かった.今度は,シュミレーションを始めて, ペンチがどんな風に回転しながら傾いて,上下反転してゆくかを画面上で立体的に見 ることができなければならない.これには多くの選択肢がある.リアルタイム3D プログラミングでC++言語を使いたければMFC(Microsoft Fundation Class) と OpenGL の組み合わせが考えられる.しかし,この場合,学習曲線が急峻で卒業研究としては 難しい.一方,Visual Basic とOpenGL の組み合わせは
酒井幸市: OpenGL 3D プログラミング,CQ出版社(2000)
で詳しく解説されている.Visual C++ で作成したDLLをVisual Basic でコール する形のプログラムになる.この方法がより分かりやすい,と思う.しかし,我々の希望 はLinux と Windows 2000 で相互に移植性の高いプログラムである.Linux 環境 でアプリケーションを開発し,同じソースファイルをクロスコンパイルするだけ でWindows 2000でも走るプログラムを作りたい.この場合,選択肢は VTK(Visualization Toolkit)とFOX(free objects for X) の二つがある.VTK に はテキスト[9]がある.アニメーションはあまり得意でないよう だ.ローレベルAPI としてOpenGL をサポートしているので,手軽にOpenGLプログラ ムが書けるという. 一方,FOX には残念ながらよいドキュメントがない.  FOX ライブラリーを使ってかかれたプログラムはコンパイルするだけでさまざ まなプラットホームで動作する(Write once, Compile anywhere).したがって, Linux と Windows 2000 のクロスプラットホーム開発が可能である.また,FOX Library はOpenGL とMesa に対するWidget を提供しているので3D アプリケーショ ンをかくのに便利である.

次の問題は,3Dオブジェクトのモデルの制作である.物体(ペンチ)をコンピュー タ内部に数値化した幾何情報(形状モデル)として定義しなければならない.いく つかの可能性が考えられる.

  1.  直方体や円柱,球などの単純なプリミティブを組み合わせて物体を作 成する.多くのテキストの例題はこの方式である. しかしある程度複雑 になると手に負えなくなるのは明らかである.3Dオブジェクトをテキストエディターで編 集するのは原理的に無理がある.
  2. ファイルから幾何学データを読み込んで3Dオブジェクトを作成する. この方式を採用しているテキストもある.しかし,ファイルに書き込ま れたデータをどのように作成したかが問題である. そもそもOpenGL はDirectX と違って,決まったファイルフォーマットが 無い. これによりプログラム側でデータ形式や描画ルーチンを自由に設計できる. その代償として汎用性は失われる. この欠点は避けられない.
  3. ある程度複雑な3Dオブジェクトは対話型モデリングツールを利用して作成 する.これが王道である. OpenGL のソースコードを吐き出すモデリン グツールはあるのか?

       3D図形の表現に広く使われているCAD系の標準フォーマットDXF形式をほとんどの モデリングツールがサポートしているので,テキストファイルであるDXFファイ ルをOpenGLのファイルに変換するプログラムを書けば目的は達成される.しかし DXF形式にもバージョンの違いによる互換性の問題があり,目的に応じて仕様を 決めなければならない.いずれにしてもコンバータが必要である.

  4. 新藤・安部[10]はPiasGL4 という3DCGエンジンを開発している. PiasGL4 は高水準ライブラリで,OpenGL の上位に位置している.またモ デリングツールPiasArtist2000もこのエンジンと同等のものを内蔵して 動作している. 複雑な形状のモデリングは PiasAtist2000で作成したデー タファイルをプログラムに読み込んでアニメーションを動かしている. Windows2000環境で動作するので,マルチプラットホーム環境を指向する 我々の目的に沿わない点もあるが,今のところ最も優れた現実的な解決策を提供している. 
2.6はPiasArtist2000で作成したペンチの3Dオブジェクトである.ペン チはそれほど複雑でないが,この程度の複雑な物体でもモデリングツールなしで は作成は難しい.PiasArtist2000は市販のCADソフトに比べると機能が落ちるとはいえ,OpenGLでプログラミングする際のツールとしては十分な機能を持ってい る.
図 2.6: PiasArtist2000で作成したペンチ
\scalebox{0.5}{\includegraphics[clip,keepaspectratio]{pench.eps}}


Kawabata Shigetoku
平成15年4月28日