首頁/ 娛樂/ 正文

法線2:烘焙法線貼圖

這是關於法線貼圖的系列第二部分,主要關於烘焙法線貼圖的知識點理解。

1

烘焙法線貼圖

這是關於法線貼圖的系列第二部分,主要關於烘焙法線貼圖的知識點理解。

在此過程中,烘焙程式將依據從低模開始投射基礎光線,跟隨頂點法線並搜尋高模。這是法線貼圖最重要的方面,人們在使用法線貼圖時遇到的大多數問題都與此相關。如果不控制lowpoly模型的頂點法線,則將失去對法線貼圖的控制。

法線2:烘焙法線貼圖

為了控制lowpoly模型的平滑,我們可以分割頂點法線(建立硬邊)或平均頂點法線(建立軟邊)。

事實證明,並非所有3D程式都使用相同的計算來平均頂點法線。這意味著您的lowpoly將看起來不同,其頂點法線指向的位置略有不同,具體取決於您使用的3D程式。這通常不是什麼大問題,因為這些偏差非常小,但會影響模型的外觀;使用法線貼圖時會加劇這些差異,因為法線貼圖正在修改在應用程式之間更改的低模法線。

法線2:烘焙法線貼圖

3D行業正在努力解決這個問題,最近出現了一個名為Mikk space的標準。這是一種計算所有3D應用程式都可以使用的頂點法線的方法,因此頂點法線不會在3D程式之間更改。但是請記住,並非所有3d應用程式都使用它。

另一種減少這種影響的方法是在烘焙時不要太依賴法線貼圖。嘗試將lowpoly與highpoly更緊密地匹配,並在平面上使用更多硬邊。這樣,法線貼圖就不必做所有的工作,這些小偏差也就不那麼明顯了。

2

傾斜問題

當計算機對lowpoly頂點法線的法線方向求平均值時,曲面角度的較大變化會使lowpoly法線“傾斜”,並且導致它們不會垂直於lowpoly曲面。

法線2:烘焙法線貼圖

由於烘焙法線貼圖在搜尋高模細節時會使用低模的法線方向,如果這些方向是傾斜的;它們將在法線貼圖上顯示為傾斜:

法線2:烘焙法線貼圖

這是一個非常常見的問題,已經找到了幾種解決方案。但是沒有最好的解決方案,這實際上取決於模型。

傾斜問題的第一個解決方案是透過臨時修改lowpoly法線來重新制作有問題的零件,以便在不傾斜的情況下烘焙它們。八猴有此選項。Reddit使用者Tanagashi善意地向我解釋說,一些程式(如xNormal)可以對lowpoly進行鑲嵌以新增新頂點,並使法線垂直於lowpoly曲面去烘焙物件空間法線貼圖,然後使用原始的lowpoly法線將其轉換為切線空間。使用這個新的法線貼圖,程式可以建立遮罩,以控制在何處使用原始法線貼圖和何處使用從細分lowpoly建立來的法線貼圖。

法線2:烘焙法線貼圖

我們還可以透過新增頂點來減少傾斜問題,因為一個90的角度可以拆分為更小的角度,從而使第二個過渡更少傾斜。這顯然會增加你的多邊形計數。而且因為你在新增幾何體,所以我建議你使用這個額外的幾何體也可以為你的模型新增一個更有趣的輪廓。

法線2:烘焙法線貼圖

法線2:烘焙法線貼圖

傾斜問題的另一個解決方案是分割平均頂點法線(加硬邊/使用單獨的平滑組):這樣,每個頂點將有多個法線,每個法線垂直於lowpoly曲面。記住,當3D程式分割頂點法線時;它實際上會建立頂點的副本,因此這會增加頂點計數,並略微降低效能。此外,硬邊也會給您帶來“黑邊”的問題,我們將在後面看到。

法線2:烘焙法線貼圖

最後,我們還可以透過修改模型的法線來彎曲低模的法線,使其與高模細節垂直,從而減少傾斜問題。請記住,並非所有程式都允許修改法線(Zbrush僅具有平均法線,OBJ和舊的FBX檔案沒有自定義法線資訊)。基本上有兩種修改法線的方法:

加權法線:這是一種類似於平均頂點法線的自動方法。這裡的想法是,當平均頂點法線時,並非所有面都具有相同的強度:較大的面將以比較小的面更大的強度向它們“拉動”頂點法線。這樣,較大的面(通常更重要)將具有更好的細節投影。這對於highpoly面板尤其有效。

法線2:烘焙法線貼圖

自定義法線:使用3D軟體中的工具,可以彎曲lowpoly法線。這是一個相對較新的想法,沒有多少標準化的工具。請記住,彎曲法線可能會在模型的其他部分建立非常奇怪的意外著色,因此此技術通常與倒角結合使用。有人將這種技術稱為“midpoly modelling”。

法線2:烘焙法線貼圖

3

烘焙距離

預設情況下,從lowpoly曲面投射的光線移動是有限的距離,以防止lowpoly從highpoly的遙遠部分接收法線資訊。此距離通常稱為“前/後距離”,因為光線可以朝向模型內部、外部或兩者投射。您可以在下圖中看到此距離以紅色表示:

法線2:烘焙法線貼圖

一些3D應用程式(例如3ds Max)也允許我們使用框架。框架是lowpoly模型的“副本”,我們可以對其進行修改,使其完美地封裝了highpoly。並且,在某些情況下(並非全部),還允許我們更改光線的方向,而不更改原始的低多邊形頂點法線。這有助於獲得最佳烘焙極值並避免扭曲,但請記住,您並不是使用頂點法線的法線方向進行烘焙,所以最終將使用法線貼圖來修改實際的低模法線,因此結果可能看起來很奇怪。

法線2:烘焙法線貼圖

4

烘焙接縫

有時,在烘焙法線貼圖時,我們可以看到一些接縫:

法線2:烘焙法線貼圖

當我們在UV的中間有硬邊時,就會出現這些接縫。為什麼會這樣?

UV值可以非常精確:我們可以將一個頂點精確放置在座標0。0001203123 U和0。34004021 V處。然而,紋理的精度要低得多:畫素有限,不能分割(我們不能有半個畫素)。

因此,某個畫素可能正好位於0。001,而頂點可能位於UV空間內的0。00134。在考慮法線貼圖中畫素的顏色時,我們必須選擇最能代表其內部面的法線方向的顏色,因此我們進行平均:

法線2:烘焙法線貼圖

這適用於所有烘焙過程,而不僅僅是法線貼圖。然而,當我們使用硬邊時,這在法線貼圖中更為明顯。法線貼圖指示方向,在硬邊的情況下,我們有兩個面朝著不同的方向看,因此它們可能有非常不同的顏色。

法線2:烘焙法線貼圖

在UV島(island)之間的交點處,孤島將競爭用其顏色填充畫素。這意味著最終我們將得到來自島B的畫素修改來自島A的畫素的顏色,反之亦然。

由平滑邊分隔的孤島在法線貼圖上看起來非常相似(因為它們的法線方向是平均的),因此顏色上的微小差異不太明顯。但是,由硬邊分隔的孤島通常在法線貼圖上看起來非常不同(因為頂點法線被分割,並且每個面都在不同的方向上),並且這種差異可以很明顯,沿著硬邊生成。

如果我們分割孤島,它們將不會競爭畫素顏色:每個孤島將能夠修改整個畫素以適應其法線方向。這就是為什麼當UV中的面透過硬邊連線時,應將其拆分。

法線2:烘焙法線貼圖

經驗法則非常簡單:只要模型上有硬邊,就在UV中分離由其連線的面。

5

總結

一旦我準備好lowpoly模型並儘可能地調整到highpoly模型,我就開始在UV之前進行平滑處理。我為lowpoly設定平滑(如果是有機的,我從一個完全平滑的模型開始,如果是硬表面,我從30-60的設定角度平滑開始;然後調整模型平滑,直到看起來很好)。為模型設定平滑後,我將處理UV,確保將所有硬邊拆分為單獨的UV孤島(以避免邊接縫)。

如果有傾斜錯誤,我會新增額外的邊(通常是斜面,以保持更圓的輪廓)。這適用於我的大多數模型,但如果我使用Marmoset工具包進行烘焙,或者使用自定義/加權法線,我也可以修復傾斜錯誤。

如果存在投影錯誤,我會修改烘焙距離/框架,修改lopoly/highpoly,使其更適合烘焙,或者刪除某些非常硬的零件(如圓錐體尖端)上的法線貼圖。

下一篇將為法線貼圖烘焙製作故障診斷指南,並討論一些最常見的問題和解決方案。

相關文章

頂部