2

円錐の滑らかな法線を計算しようとしています。コード サンプルと説明を探していると、常に顔の法線の指示に出くわします。私がしていることのいくつかの写真を以下に投稿しました。最初の - 基本的には頂点位置を正規化するだけ - かなりスムーズなシェーディングが得られますが、エッジが「欠落」しており、底面がしっかりしていません。2 番目にはエッジがありますが、シェーディングはフラット (顔の法線) であり、光が正しく反射していません。

円錐は GL_TRIANGLES から構築されます。

画像をクリックすると拡大版が表示されます。


(ソース: bantherewind.com )


(ソース: bantherewind.com )

4

2 に答える 2

2

頂点を除く円錐の表面上の任意の点には、明らかに 2 種類の接線ベクトルがあります。2 つのパラメーターを使用してパラメトリック方程式としてサーフェスを表す場合、これらの接線ベクトルを 2 つの偏導関数として取得できます。接線の外積を取ると、法線ベクトルが得られます。製品の順序によって、法線が内側を向いているか外側を向いているかが決まります。もちろん底面は別扱いです。

于 2012-08-26T07:17:48.183 に答える
1

JWWalker による回答に加えて、頂点はベクトルのタプル全体であり、とりわけ位置と法線が含まれていることを指摘したいと思います。したがって、1 つの位置に異なる法線がある場合、異なる複数の頂点が得られます。

円錐の場合、これは重要です。円錐の先端は 1 つの頂点ではなく、それらのセット全体 (三角形ごとに 1 つの先端頂点) であり、円錐のコートです。次に、各位置で取得したベース円に対して2 つの頂点、1 つは先端への三角形、もう 1 つはベース サーフェスです。

先端と端の両方が不連続であるため、別々の頂点を使用して描画する必要があります。

于 2012-08-26T10:48:07.123 に答える