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オブジェクトのモデルの制作である.物体(ペンチ)をコンピュー
タ内部に数値化した幾何情報(形状モデル)として定義しなければならない.いく
つかの可能性が考えられる.
- 直方体や円柱,球などの単純なプリミティブを組み合わせて物体を作
成する.多くのテキストの例題はこの方式である. しかしある程度複雑
になると手に負えなくなるのは明らかである.3Dオブジェクトをテキストエディターで編
集するのは原理的に無理がある.
- ファイルから幾何学データを読み込んで3Dオブジェクトを作成する.
この方式を採用しているテキストもある.しかし,ファイルに書き込ま
れたデータをどのように作成したかが問題である.
そもそもOpenGL はDirectX と違って,決まったファイルフォーマットが
無い. これによりプログラム側でデータ形式や描画ルーチンを自由に設計できる.
その代償として汎用性は失われる. この欠点は避けられない.
- ある程度複雑な3Dオブジェクトは対話型モデリングツールを利用して作成
する.これが王道である. OpenGL のソースコードを吐き出すモデリン
グツールはあるのか?
3D図形の表現に広く使われているCAD系の標準フォーマットDXF形式をほとんどの
モデリングツールがサポートしているので,テキストファイルであるDXFファイ
ルをOpenGLのファイルに変換するプログラムを書けば目的は達成される.しかし
DXF形式にもバージョンの違いによる互換性の問題があり,目的に応じて仕様を
決めなければならない.いずれにしてもコンバータが必要である.
- 新藤・安部[10]はPiasGL4 という3DCGエンジンを開発している.
PiasGL4 は高水準ライブラリで,OpenGL の上位に位置している.またモ
デリングツールPiasArtist2000もこのエンジンと同等のものを内蔵して
動作している. 複雑な形状のモデリングは PiasAtist2000で作成したデー
タファイルをプログラムに読み込んでアニメーションを動かしている.
Windows2000環境で動作するので,マルチプラットホーム環境を指向する
我々の目的に沿わない点もあるが,今のところ最も優れた現実的な解決策を提供している.
図2.6はPiasArtist2000で作成したペンチの3Dオブジェクトである.ペン
チはそれほど複雑でないが,この程度の複雑な物体でもモデリングツールなしで
は作成は難しい.PiasArtist2000は市販のCADソフトに比べると機能が落ちるとはいえ,OpenGLでプログラミングする際のツールとしては十分な機能を持ってい
る.
図 2.6:
PiasArtist2000で作成したペンチ
|
Kawabata Shigetoku
平成15年4月28日