-1

すべてが非常に理論的に見えるので、これを理解するのはいつも難しいと思います。

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

などなど

4

2 に答える 2

4

私はここで推測していますが、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 点も同一平面上にあります。

于 2013-01-25T19:14:08.907 に答える
1
  • ベクトルは、方向 (目標位置の座標 - 現在の位置の座標から、進むべき方向がわかります) および/または単純に特定の n 次元空間の座標のリスト (1, 0, 0 など) と見なすことができます。 ) 3 次元 (x、y、z)。
  • 頂点は空間内の点であり、ベクトル (座標 (x、y、z) のリスト) で表すことができます。
  • 面は、少なくとも 3 つの頂点を 1 つずつ、通常は反時計回り (つまり三角形) に接続することによって作成される凸空間です。顔がどちら側を向いているかを理解するには、方向が重要です。反対側はレンダリングされません。

メッシュの各面には通常、インデックスとして機能する番号と、この特定の面のレンダリングされた側の方向を示す法線ベクトルがあります (単純に、この面にマッピングされる可能性のあるテクスチャを確認するためにどこから見ればよいかを示します)。 )。これはすべて、メッシュが保存される特定の形式に依存します (obj はいくつかある形式の 1 つに過ぎず、プロプライエタリ プログラムは通常、独自の閉じた形式を持っています)。

于 2013-01-25T19:09:04.660 に答える