跳轉到內容

Blender 3D:菜鳥到高手/法線和著色

來自華夏公益教科書

開啟一個新的 Blender 文件。刪除預設的立方體,並新增一個“UV 球體”網格。在工具架(如果工具架不可見,請按  T  使其可見)左下角出現的“新增 UV 球體”面板中,將“段數”和“環數”都設定為一個較小的數字,例如 8。結果將非常有稜角,如右圖所示,而不是像你期望的那樣圓潤。

 F12  進行快速渲染。3D 檢視將被 UV/影像編輯器 檢視替換,顯示渲染的影像,如右圖所示。按  Esc  返回 3D 檢視

選擇球體物體( RMB )。現在在工具架中查詢著色按鈕:,然後點選“平滑”。現在使用  F12  嘗試新的渲染。

如你所見,物體的表面看起來更平滑和圓潤,即使輪廓剪影與之前一樣有稜角。

使用  Esc  返回 3D 檢視。確保 UV 球體物體被選中,並且你處於編輯模式。如果屬性架在 3D 檢視右側不可見,請按  N  將其調出。查詢“網格顯示”面板,並找到“法線”設定。 。如果你勾選了兩個圖示框,UV 球體的顯示應該會改變,看起來有點像右邊的影像。

這些小尖刺線是法線;每個面的中間的綠色線條是面法線,從每個頂點突出的藍色線條是頂點法線

在光的物理理論中,法線是垂直於物體表面的一條線,光線照射到物體表面時,光線會打到這個點。當你的眼睛(或相機)C 位於透過特定表面法線的平面上,觀察由共面光源L 照亮的某個表面點P 時,會根據表面的物理特性反射特定數量的光,並因此被相機記錄下來。當C-P-L 角被法線分成兩半時,觀察到的反射光的強度最大。

在現實世界中,許多表面是彎曲的或不是平坦的。但是網格只能由直線邊和平面組成。那麼它如何表示具有曲面的物體呢?

當你將 UV 球體新增到場景時,你可以選擇指定它是由多少段和多少環組成的。越多,幾何體越接近曲線。但是,越多,渲染所需的時間越長,模型將佔用更多的記憶體來儲存所有額外頂點、邊和麵的資訊。

這就是你點選的“平滑”著色按鈕的作用。它使用了一種叫做Phong 著色 的技巧。它不是根據物理理論中所說的每個面的法線進行光照計算,而是從分配給每個頂點的法線開始,根據每個點到角點的距離,從角點的頂點法線插值每個點上的法線。結果使眼睛誤以為是彎曲的、圓潤的表面,而實際上並沒有。

這完全違反了物理定律。首先,你怎麼能定義一個垂直於的“法線”?但如你所見,結果看起來相當不錯,而且涉及的額外計算相對較少,遠少於實際生成所有額外的幾何體。

隨著你對計算機圖形學瞭解越來越多,你會遇到更多這樣的技巧。即使使用現代計算機,物理上準確的建模仍然非常困難,而且結果可能看起來並不那麼好。但透過採用一點完全違反物理定律的橫向思維,我們往往能得出更逼真的結果,這頗具諷刺意味。

不太平滑?

[編輯 | 編輯原始碼]

如果你在網格中添加了許多頂點、邊和麵,你可能會在平滑著色中遇到不連續性,導致難看的斑點,如右圖所示。

假設你的網格構建正確(例如,沒有邊和麵以物理上不可能的方式交叉),出現這種情況最可能的原因是新新增的頂點和麵的法線指向錯誤的方向。要解決這個問題,在編輯模式下選擇網格的麻煩部分(或選擇整個網格),然後按  CTRL + N  重新計算所有法線。重新渲染場景以確認著色不連續性已消失。

Note:

請注意  CTRL + N  在編輯模式中的不同含義。在所有其他模式下,它將開啟一個新的預設 Blender 文件!

華夏公益教科書