0

次の円柱があります。opengl でワームを描画しており、頂点法線を計算したいと考えています。

ここに画像の説明を入力

4

2 に答える 2

3

円柱リング上のすべての点について、vertexNormal = normalize(vertexPosition - ringCenter);

または、通常どおりに計算することもできます。ここで、法線は、この頂点を含むすべての面のすべての面法線の正規化された合計です。

于 2012-03-02T22:24:51.863 に答える
2

すべての面 (三角形) の法線を計算し、どこかに保存します。頂点ごとに、頂点を共有するいくつかの面があります (通常、写真では 6 つ)。最終的な頂点の法線は、面の法線の平均です。6 つの面の場合、次のように計算します。

int faceCount = 6;
float sum = 0.0f;
for(int face = 0; face < faceCount; ++face)
    sum += faceNormals[face].x;
normal.x = sum / faceCount;
// and so on for y and z

長さが 1 になるように、結果のベクトルを正規化することを忘れないでください。

注:faceNormalsこのような配列を入れないでください。vector実際のコードでは、おそらく、すべての法線と、どの法線がどの頂点に関連するかを示すいくつかのロジックの単一の のようなコンテナが必要です。

于 2012-03-02T12:09:39.153 に答える