OFLライブラリ
nate robinsさんの許可を得て、oflライブラリをソースごと、公開することにします。
概要
wavefront objファイルを読み込み・書き出しするライブラリです。
描画にどう使うかを示すサンプルを含んでいます。
目的
・C言語環境で容易に使えるジオメトリ管理・操作ライブラリ
・日本語で書かれたグラフィックスプログラミングの導入
グラフィックストレンドには西川善司さんの記事、基礎理論にはCGエンジニア検定の教科書がわかりやすい。
ダウンロード
OpenGLで使うためのサンプルを含んでいます。
[ダウンロード 1.0.1]
動機
・日本語で書かれた、グラフィックスに関する、技術的・実用的なドキュメント・プログラムが極端に少ない。
自分自身が勉強に苦労した。
DirectXなどでよく使うMicrosoftのxフォーマットを使えばすぐにオブジェクトを読み込むことができるが、OpenGLなどより原理的な部分で、なかなか構造を理解することができなかった。
まとまった時間がなく、こういったソース・ライブラリがあればどれだけうれしいかと切望していた。
学生や社会人になりたてのグラフィックス技術者、専門外の研究者に向けてこういうプログラムがあるとだいぶ楽になるのではないかと感じている。
nateさんのプログラムはわかりやすく明快だが、説明が乏しい。
また英語で書かれているため日本人向けのに導入としては厳しい。
・単純かつ明快
COLLADA, XSI, MAYA, FBXとさまざまなフォーマットがありできることも違ってくるが、一番基本的な位置・法線・テクスチャ座標・カラーが理解できる単純なフォーマットとして、wavefront objフォーマットは優秀だった。
MAYA,XSI,Poser,MAX,Blender,MetasequioaなどのほとんどのDCCツールで対応できている、wavefront objフォーマットは優秀と思う。
・基礎
一度構造を把握することで応用が利く。
リアルタイムアプリケーションでは読み込みが早くなるよう、バイナリで最適化したデータ構造を使ったりするため、基礎構造を知っていると独自に拡張もできるし、不要なものは削ることができる。
環境
・windows, linux, mac機種は問わない。
・サンプルについてはwindows + cygwin + opengl で動作確認している。
linux, macでも特に問題はないはずである。
(wavefront objはasciiであるため)
プログラムの流れ
A)読み込み oflReadObj
1. wavefrontファイルからサイズ読み込み
2. wavefrontファイルからデータ読み込み
B)書き出し oflWriteObj
以上。
フォーマット
・よくあるフォーマットとしては位置・法線・テクスチャ座標・頂点カラー。
用途
・ジオメトリを読み込む。
・OpenGLやDirectXなど描画プログラムに用いる。
注意点
・サポートはなし
詳しくは、ソフトウェアの面積事項のページ等を参照していただきたい。
・サンプルが少ない。
わかりやすいジオメトリの操作例を追加していく予定。
・wavefront objフォーマット仕様
・グラフィックスアセットデータには以下の情報がある。
幾何情報、テクスチャ、アニメーション、効果(シェーダ等)、物理
wavefront objフォーマットでは幾何情報の解決ができる。使い方でアニメーションも可能。
・テクスチャマッピングの対応が弱い。
wavefront objファイルにはmtlという補助ファイルを指定できる。この中にテクスチャファイル名称を指定することができる。このファイルを読み込むことでテクスチャとすればいいのだが、複数毎のテクスチャや
・アニメーションの対応が弱い
頂点ブレンドで補間することでフェイシャルアニメーションなど
謝辞
・元の著者のnate robinsさんに感謝します。
大本のライブラリはこちらにあります。(nate robinsさんのサイト)
読んだ方へ
・フィードバックいただければ幸いです。
・テクスチャのページも参考になると思います。wavefront objフォーマットと同様にシンプルなフォーマットであるppmフォーマットのローダプログラムがあります。参考書籍とあわせることでグラフィックスプログラムの導入として有用と思います。
・シンプルなわかりやすいサンプルの種類を増やそうとしています。いいアイデアがあれば相談の上パッケージに含めたいと思っています。
・アニメーション、効果、物理についても徐々に日本語で有用そうな部分をまとめていこうと考えています。
参考
以下は適宜、語句を検索してみてください。
・西川善司さんのサイト
・nate robinsさんのサイト
・CGエンジニア検定
・DCCツール(maya,max,xsi,poser,blender,metasequia,fx composer)