.OBJを読み込んでみる1(解析編)

.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
v -100.000000 -100.000000 100.000000
v 100.000000 100.000000 100.000000
v 100.000000 -100.000000 100.000000
v 100.000000 100.000000 -100.000000
v 100.000000 -100.000000 -100.000000
v -100.000000 100.000000 -100.000000
v -100.000000 -100.000000 -100.000000
# 8 vertices

vt 0.00000 0.00000
vt 1.00000 0.00000
vt 1.00000 1.00000
vt 0.00000 1.00000
# 4 texture vertices

vn 0.00000 0.00000 1.00000
vn 1.00000 0.00000 0.00000
vn 0.00000 0.00000 -1.00000
vn -1.00000 0.00000 0.00000
vn 0.00000 1.00000 0.00000
vn 0.00000 -1.00000 0.00000
# 6 normal vertices

usemtl default
f 2/4/1 4/3/1 3/2/1 1/1/1
f 4/4/2 6/3/2 5/2/2 3/1/2
f 6/4/3 8/3/3 7/2/3 5/1/3
f 8/4/4 2/3/4 1/2/4 7/1/4
f 1/4/5 3/3/5 5/2/5 7/1/5
f 8/4/6 6/3/6 4/2/6 2/1/6
# 6 elements

box.mtl

# Created by Metasequoia

newmtl default
Ka 0.60000 0.60000 0.60000
Kd 0.80000 0.80000 0.80000
Ks 0.00000 0.00000 0.00000
Ns 5.00000
 

非常にわかりやすいフォーマットですね。
一行ずつのデータになっていて最初のキーワードで後に続くデータの成分を
示しています。
# が最初に来る行はコメントです。
mtlib の行はマテリアル情報を格納しているファイル名です。
v の行は頂点の X値、Y値、Z値です。
vt の行は UV値です。
vn の行は法線情報。
usemtl の行はマテリアル名。
f の行は面を構成するインデックスで頂点/UV/法線となっています。
他にも g というグループのキーワードもあるようですが今回は使いません。

mtl ファイルですが、
newmtl の後にマテリアル名。
Ka の後にアンビエント。
Kd の後にディフューズ。
Ks の後にスペキュラー。
Ns の後にSHININESS。
他にも map_Kd というテクスチャ名のキーワードもありますが今回はありません。

正に、スタティックメッシュを構成する全ての要素が簡潔に含まれています。

 

最終更新:2011年03月20日 12:34
添付ファイル