すべてが非常に理論的に見えるので、これを理解するのはいつも難しいと思います。
glVertex(0.0f,0.0f,0.0f);
glVertex(0.0f,0.0f,-1.0f);
glVertex(-1.0f,0.0f,-1.0f);
glVertex(-1.0f,0.0f,0.0f);
これは、openGL の立方体の 1 つの面です。
obj ファイルを開くと、顔は次のように保存されます。
f 61 67 52
f 50 66 49
などなど
私はここで推測していますが、obj ファイルの形式について混乱しているようです。
f 61 67 52
実際には非常に単純です。頂点 #61、#67、および #52 が 3D 空間で三角形 (面) を形成することを指定します。
また、4 つの OpenGL Immediate ModeglVertex
呼び出しのシーケンスを「立方体の 1 つの面」として参照することは、そのコードが実際に何を行っているか、何を表しているかを特に適切に説明していないことも指摘します。コード自体は 4 つの 3D 頂点を指定しており、それが指定されている唯一の情報です。面の概念、または三角形 (3D グラフィックスの構成要素) の概念は、頂点の仕様と同じではありません。
.obj ファイルでの使用は例外で、3D グラフィックスで「顔」という幾何学的用語を使用する人が多くないのにはいくつかの理由があります。これは、グラフィックス ハードウェアが三角形で動作するように設計されているためです。五角形の面を作成したい場合は、実際には 3 つ以上の三角形から構成することになります。f 61 67 52
それがより理にかなっているのではなく、なぜそうなのかは言えませんt 61 67 52
。同一平面上にない 4 つの頂点を使用すると、そこから平らな幾何学的面を作成できないことに注意してください。これが、三角形を面と呼んでも問題ない理由です。どの 3 点も同一平面上にあります。
メッシュの各面には通常、インデックスとして機能する番号と、この特定の面のレンダリングされた側の方向を示す法線ベクトルがあります (単純に、この面にマッピングされる可能性のあるテクスチャを確認するためにどこから見ればよいかを示します)。 )。これはすべて、メッシュが保存される特定の形式に依存します (obj はいくつかある形式の 1 つに過ぎず、プロプライエタリ プログラムは通常、独自の閉じた形式を持っています)。