3Dモデルのobjファイルについての解説ッ!

OpenGLで3Dモデルを表示したいなと思い、objファイルを調べていたのでまとめました。
OpenGLでボールの3Dモデルを表示するとこんな感じになります。
ball

 

objファイルとは、3Dモデルデータの種類の1つで、BlenderやMayaのような3DCGソフトなどで幅広く対応しています。また、mtlファイルと呼ばれる質感などを表す材質データ(マテリアルデータ)も含めて、OBJファイルと呼ばれます。

objファイルはテキストデータなのでテキストエディタで簡単に開くことができます。その中身を開くと、以下のような文字列の羅列が並んでいると思います。
obj
「v、vn、f」などの他に、ここにはないですが「vt」などがあります。本当はもっとありますが、メインのものだけ抜粋です。

v ・・・ 頂点座標(vertex)
xyzの頂点座標を表しています。3つで1つの座標です。

vt ・・・ テクスチャ座標(texture)
テクスチャ座標を表しています。テクスチャ座標は2つで1つの座標です。

vn ・・・ 法線ベクトル(normal)
法線ベクトルを表しています。3つで1つの法線ベクトルを表します。詳しくは検索エンジンで法線ベクトルをチェック!

f ・・・ 面(face)
面を表しています。各数字は「v/vt/vn」を表しています。「v//vn」のようにvtがない場合や「/」がないものもあったりいろいろです。ただ、基本は「v/vt/vn」です。 上の画像だと4つの「v/vt/vn」があるので1面が4辺で構成されていることが分かります(四角形ポリゴン)。これが3つだと三角形ポリゴンということになります。今回はfが6つあるので6面で構成されているモデルだと分かります。で、肝心の各値ですが、v=1なら1行目のv、v=2なら2行目のvを表しています。vt及びvnも同様に読みます。3Dモデルは四角形ポリゴンがいいらしいので四角形ポリゴン率が多いらしい。