簡體   English   中英

計算頂點法線

[英]Calculating Vertex Normals

我在谷歌搜索了很多小時沒有得到很好的解釋,我正在使用光照,我需要頂點法線,讓我們假設我們有這個頂點緩沖區(它是一個立方體):

static const GLfloat g_vertex_buffer_data[] = {
-1.0f,-1.0f,-1.0f,
-1.0f,-1.0f, 1.0f,
-1.0f, 1.0f, 1.0f,
1.0f, 1.0f,-1.0f,
-1.0f,-1.0f,-1.0f,
-1.0f, 1.0f,-1.0f,
1.0f,-1.0f, 1.0f,
-1.0f,-1.0f,-1.0f,
1.0f,-1.0f,-1.0f,
1.0f, 1.0f,-1.0f,
1.0f,-1.0f,-1.0f,
-1.0f,-1.0f,-1.0f,
-1.0f,-1.0f,-1.0f,
-1.0f, 1.0f, 1.0f,
-1.0f, 1.0f,-1.0f,
1.0f,-1.0f, 1.0f,
-1.0f,-1.0f, 1.0f,
-1.0f,-1.0f,-1.0f,
-1.0f, 1.0f, 1.0f,
-1.0f,-1.0f, 1.0f,
1.0f,-1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
1.0f,-1.0f,-1.0f,
1.0f, 1.0f,-1.0f,
1.0f,-1.0f,-1.0f,
1.0f, 1.0f, 1.0f,
1.0f,-1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
1.0f, 1.0f,-1.0f,
-1.0f, 1.0f,-1.0f,
1.0f, 1.0f, 1.0f,
-1.0f, 1.0f,-1.0f,
-1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
-1.0f, 1.0f, 1.0f,
1.0f,-1.0f, 1.0f
};

那么,我該如何計算頂點法線? 就這樣。 謝謝

這不是計算它們本身的問題,法線是對象的藝術品的一部分。 如果你使每個角落的正常點從立方體“向外”,那么它將具有一種浮腫的圓形外觀,而如果你讓它們指向正方形(垂直於立方體那一側的平面)你會有一個尖銳的定義立方體。

如果你有一個更復雜(光滑)的表面有許多三角形,你可以通過平均三角形邊的叉積的值來計算法線。 這樣可以提供最流暢的外觀。 在這種情況下,你仍在做出藝術判斷。 每個對象都沒有一個答案。

如果你只有幾何體,而不是法線,那么你可以編寫一個小程序來生成每個頂點的法線。 一般過程是平均共享給定頂點的面的法線法線。 然而,對於更多“離散”形狀(抱歉數學家),例如立方體,最好只使用一個法線法則,並將其用於一側的頂點法線。

這個Lighthouse3D教程解釋了頂點法線背后的數學,就像本USC講座的幻燈片22一樣

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM