.OBJ は Wavefront社の Advanced Visualizer というソフト用のファイルフォーマットです。
3Dプログラミング入門関係のHPや書籍では必ずと言って良いほど最初の方に登場します。
何故か?と言うとファイル形式がとてもシンプルでスタティックメッシュ(アニメーションしないメッシュ)を
表現するための全ての情報を含んでいるので入門用には最適だからです。
では、まず、例によってメタセコイアで .OBJ を作成し、中身を見てみる事にします。
メタセコイアを起動して面コマンドの基本図形を選択します。
そして立方体を作成し、それを .OBJ 形式で保存します。
保存する時の注意ですが法線、UVマッピング、マテリアルにチェックし、改行コードを
Windows(CR/LF)にしなければなりません。
さらに左右を反転するにもチェックをしないとOpenGLでは逆に表示されます。
ここでは box というファイル名にしました。
すると box.obj と box.mtl が作成されるので、それをメモ帳で見てみます。
box.obj
# Created by Metasequoia mtllib box.mtl v -100.000000 100.000000 100.000000 vt 0.00000 0.00000 vn 0.00000 0.00000 1.00000 usemtl default |
box.mtl
# Created by Metasequoia newmtl default |
非常にわかりやすいフォーマットですね。
一行ずつのデータになっていて最初のキーワードで後に続くデータの成分を
示しています。
# が最初に来る行はコメントです。
mtlib の行はマテリアル情報を格納しているファイル名です。
v の行は頂点の X値、Y値、Z値です。
vt の行は UV値です。
vn の行は法線情報。
usemtl の行はマテリアル名。
f の行は面を構成するインデックスで頂点/UV/法線となっています。
他にも g というグループのキーワードもあるようですが今回は使いません。
mtl ファイルですが、
newmtl の後にマテリアル名。
Ka の後にアンビエント。
Kd の後にディフューズ。
Ks の後にスペキュラー。
Ns の後にSHININESS。
他にも map_Kd というテクスチャ名のキーワードもありますが今回はありません。
正に、スタティックメッシュを構成する全ての要素が簡潔に含まれています。