3

三角形のメッシュがあり、メッシュを描画するときに法線を適用できるように法線を計算しようとしています。私はイミディエート モードを使用しており (頂点配列がどのように機能するかを理解する時間があれば、おそらく頂点配列に変更する予定です)、GL_TRIANGLE_STRIP でメッシュを描画しています。

頂点法線の計算に問題があります。計算に使用する隣接頂点をより正確に決定し、それらの法線をいつ設定するかを決定します。このことを考慮:

 1_2
 |/|    Supposedly a square where the numbers represent the vertex number in a            
 3 4    triangle strip.

平面法線を取得するには、平面に属する 2 つのベクトルの外積を計算する必要があることを知っています。したがって、その例では、上の三角形の法線は (2-1)x(3-1) を実行して計算でき、2 番目の三角形は (2-4)x(3-4) を実行して計算できます。イミディエイト モードでトライアングル ストリップを描画する場合、法線をどのように適用しますか?

私が行っていたのは、vtx 1 が設定されているときに最初の法線を設定し、vtx 4 が設定されているときに 2 番目、vtx 5 が設定されているときに 3 番目の法線などを設定することでした。三角形の頂点 (それらがすべて同じであるべき場合)。たとえば、三角形 |2,3,4| は正しい法線を持つ頂点 4 のみを持ちます (頂点 2 と 3 の法線は最初の三角形の法線になるため)。

では、どのようにすればよいのでしょうか。方法はありますか、またはに変更する必要がありGL_TRIANGLESますか? (時間がないので、今のところ即時モードの使用をやめたくありません)。

4

1 に答える 1

3

私が正しければ、まだ三角形ごとに法線を計算しているだけですか? これは正しいですが、その後、頂点ごとの法線を計算する必要があります。これは、特定の頂点が接続されているすべての三角形の法線の正規化された合計です。完了したら、頂点ごとに法線を指定して、即時モードの描画に進むことができます。

于 2010-11-30T19:13:53.607 に答える