Hello,大家好,今天給大家帶來法線科普四:法線圖的故障排除,我是麥狗。這是法線係列的第四部分,但它與其他部分是獨立的,可以作為一個獨立的部分來看。
之前的三篇鏈接:
下麵是我遇到過的法線圖問題的彙編,以及我知道的一些解決方法。
一、在我的模型邊緣有“接縫”
當你的UV中的連接麵被一個硬邊隔開時,就會發生這種情況。每個麵都會爭先恐後地修改邊緣的像素的顏色,大多數時候會有一個接縫,當它影響到我們模型的法線時就會非常明顯,產生這些奇怪的線條。
解決辦法:如果你分割UV島,使它們在UV空間中不再相連,每個島的顏色將保持分離,因為它們不再爭奪UV空間。
經驗法則非常簡單:隻要你的模型上有一條硬邊,就在你的UV中分離出由它連接的麵。
二、我的法線圖看起來非常不對,尤其從某些角度看
這個問題的出現有多種原因,讓我們來討論其中一些原因。
1.你正在使用錯誤的切線空間。我們試圖用法線貼圖來彎曲你低模上的法線,在烘焙程序中的計算方式可能與你用來渲染模型的程序不同。如果這些計算方式不同,你的法線貼圖可能看起來非常奇怪,特別是從某些角度看。
另外,你有可能把世界空間法線貼圖當作切線空間法線貼圖使用。在這種情況下,請確保你正在烘烤一個切線空間法線貼圖,並以此來使用它。
解決方案:
1.總是嚐試使用Mikk切線空間基礎來計算你的法線圖。這是一種標準化的法線計算方式,是為了避免這類問題而製定的。如果你的法線圖烘焙程序不能使用Mikk,請嚐試使用一個程序,如handplane,在一個切線空間和另一個切線空間之間切換。
2.你在你的法線圖上使用了伽馬校正:法線圖不是帶有顏色信息的常規圖像。它們攜帶表麵法線信息,並不像彩色圖像那樣表現。伽馬校正是對圖像顏色的一種調整,它可以以不需要的方式改變法線圖的顏色。要消除您的法線圖中的伽馬校正,請將您的法線圖的顏色空間改為線性/線性顏色/raw,或者在虛幻引擎中取消勾選sRGB選項。
3.你沒有把切線空間法線貼圖作為切線空間法線貼圖使用:確保你的引擎沒有把你的切線空間法線貼圖作為物體空間法線貼圖、凹凸貼圖、位移貼圖等。
4.你的低模法線在烘焙程序中與你的渲染程序中的低模法線不同:如果你在導出/導入過程中丟失了平滑組/硬邊信息,如果你使用的是自定義/加權法線,而你的渲染程序不支持或丟棄了這些信息,就會發生這種情況。
在這種情況下,比較兩個應用程序中的低模,如果它們看起來不一樣,試著改變導入/導出設置,調整你使用的文件格式(obj文件失去法線信息)和你的程序與自定義法線的兼容性。
三、如何製作一個尖錐體的法線圖?
解決方案:你...不需要。你不需要對所有東西都使用法線貼圖。尖錐體是一個典型的例子,但還有許多其他地方不需要法線貼圖。
我們使用法線圖來改變我們的低模法線的法線方向。有時候,我們的法線的方向是完全正確的,不需要任何調整。其他時候,我們的低模的法線是非常彎曲的(比如在尖峰的情況下),高模的細節不能與低模的表麵正確對齊。在這些情況下,我隻需用這個顏色擦除法線圖的細節。
這種顏色是50%的紅色、50%的綠色和100%的藍色,不會改變切線空間法線圖的法線方向,所以你可以用它來擦除投影效果不好的細節。
尖錐隻是一個例子,說明法線貼圖可能無法解決你的問題。重要的是,我們要記住,在有些情況下,法線貼圖並不是最好的解決方案,它們是有限的,我們不能期望它們在每一種情況下都能做到我們所需要的。有時候,我們花了很多時間試圖讓法線貼圖發揮作用,而我們可以直接將細節添加到漫反射貼圖或低模上,而不依賴法線貼圖來解決這個具體細節。
四、我的模型上的細節看起來是顛倒的
這是一個非常普遍的問題,在很多視頻遊戲中都可以看到,甚至是AAA級遊戲。
正如我們在本教程中所看到的,法線貼圖是使用紋理的綠色、紅色和藍色通道來改變當光線從我們模型的側麵、頂部和前麵射來時的反射情況(請記住這是一個簡化的解釋,並不是100%準確)。
問題是,有些應用程序認為綠色通道應該顯示模型從下麵照亮,而有些應用程序認為它應該顯示模型從上麵照亮。這有時被稱為 "法線圖的右側性"。
OpenGL apps(右手,正綠色通道):Blender, Maya, Modo, Toolbag, Unity.
DirectX apps(左手,負綠色通道):3DStudio Max, CryEngine, Source Engine, Unreal Engine.
Substance Painter可以處理這兩種類型的法線貼圖,並輸出這兩種類型的法線貼圖。
解決方案:反轉你的法線圖的綠色通道。大多數遊戲引擎在紋理中都有反轉法線圖的選項,或者你可以在Photoshop中手動反轉紋理的綠色通道(導航到通道標簽,選擇綠色通道並按Ctrl+i)。
五、有些部分看起來很平,或者缺少一些細節
當烘焙法線貼圖時,想象一下烘焙程序從你的低模表麵按照你的低模法線投射射線,直到射線碰到高模並發生彎曲。然後,烘焙程序將這些信息存儲到法線貼圖中。
這些已經投射出去的光線不能永遠地走下去,因為它們可能會撞到你的高模的很遠的地方,然後錯誤地彎曲,所以烘焙程序限製了這些光線的投射距離,有時,這些光線甚至在撞到高模之前就已經停止了。在這種情況下,我們就會失去細節,我們的法線圖就會有平坦的顏色區域。
解決方案:我們必須控製烘焙距離。
1.有些程序隻會尋找你的低模外麵的細節,而忽略你的低模 "裏麵 "的東西(盡管大多數現代烘焙師會從兩個方向尋找)。在這種情況下,調整你的模型,使低模完全適合你的高模內部。
2.其他程序,如Max會使用一個包裹器cage,一個你可以修改的低模的 "擠壓 "版本,以精確控製烘焙過程的極限。
3.其他程序讓你用一個數字來設置烘烤距離(Substance Painter中的最大正麵和背麵距離)。
你也可以嚐試讓低模和/或高模更加相似,這樣射線就可以在你的模型中到處獲得細節。另一個選擇是使用不同的cage距離烘烤兩個法線貼圖,並將它們混合在你的紋理的不同部分。不過,一些法線貼圖純粹主義者可能會對你大喊大叫。
六、我的法線圖有扭曲的細節
這是一個非常常見的問題。它發生在我們的低模法線與高模細節不能正確對齊時,所以它們看起來是彎曲的(實際上,如果你從頂點法線方向看,它們是完全對齊的),這通常是因為你有一些麵形成一個極端的角度。
解決辦法:
1.通過增加一個斜麵來軟化你的極端角度。
2.將你的極端角度的邊緣轉換成硬邊緣/將麵分割成不同的平滑組。
3.使用自定義法線/使用加權法線。
七、我的法線圖看起來有像素化或有帶子
Earthquake(又稱法線圖之神)在這裏對這個問題寫了一個非常好的解釋。
如果你的低模和高模非常相似,你的大部分法線圖都會有基本的法線圖顏色,在你的低模和高模不同的地方會有不同的顏色。
如果我們有相反的情況,你的低模和高模有很大的不同,法線圖將有更多的顏色種類,漸變將開始出現。
這些軟梯度很麻煩,因為我們需要大量的顏色來表示它們,而壓縮紋理的最常見方法是基於減少顏色的總數。
解決方案:
1.讓你的低模與高模更相似:這樣一來,法線貼圖要做的工作就少了,而且它看起來會與第一張圖片更相似,避免了這些大而軟的漸變。修改你的低模的法線,使它們與高模更好地對齊,也會有幫助。
2.使用16位法線貼圖:默認情況下,大多數圖像使用8位顏色深度。這意味著你的紋理的每個顏色通道可以使用0到1之間的8個不同的值。當你考慮所有3個顏色通道時,這給我們提供了256種可能的顏色。
當我們有軟梯度時,我們可能會在我們的模型中看到帶子,因為圖像沒有足夠的顏色來表示如此小的顏色變化。
16位圖像可以為每個通道使用16個不同的值,這意味著有多達65536種可能的顏色。這意味著軟梯度的範圍要大得多。請注意,16位圖像的尺寸比8位大(因為它們攜帶更多信息)。另外,有時16位圖像有alpha通道,被稱為24位圖像。
也有bit深度更高的圖像,但它們不用於法線圖,因為16 bit已經足夠了。
使用抖動dithering。我們的紋理中缺乏色彩是一個已經存在了幾十年的問題,幾十年前出現的一個解決方案是使用抖動dithering:這個想法是,我們在紋理中交替使用像素來表示梯度,當你放大圖像時,它的效果很好。你通常可以在導出紋理的時候激活它。
確保你的法線圖被正確地壓縮了:當紋理被壓縮時,計算機采取類似顏色的區域,並合並它們來創造一個顏色的 "補丁",減少你的圖像中的顏色數量。這對普通圖像來說通常是好的,但對法線圖來說卻很糟糕:不僅破壞了你的梯度,還可能合並你的顏色通道中的信息。有一些專門為法線圖設計的壓縮算法。確保你的遊戲引擎將圖像解釋為法線貼圖(通常在你的紋理資產中選擇一個選項將其標記為法線貼圖),壓縮設置將被自動配置。
八、在我的模型的某些部分有一些可見的像素
顯而易見的解決方案是為你的模型的那一部分增加UV島的大小,或者使用更大的紋理,但讓我們看看一些不太明顯的解決方案。
以雙倍的最終法線貼圖分辨率進行烘焙,然後縮小圖像的大小:如果你使用的是512x512的紋理,以1024x1024的分辨率烘焙你的法線貼圖,然後將圖像轉換成512x512。這樣,你最終紋理的每個像素將從4個像素中獲取信息,形成一種 "抗鋸齒 "並減少像素化。這對其他烘焙過的圖像也是如此,而且你還會保留一個高分辨率的紋理版本,以備以後需要增加某些區域的細節。
注意到在這張圖片中,法線圖的分辨率是一樣的,但是我們用1024分辨率烘焙出來的法線圖看起來更加圓潤,和高模的法線圖相似,因為它在還原過程中儲存了一些額外的信息。
注意:在減少你的法線圖的大小時,確保你使用Bilinear重采樣選項,因為其他重采樣選項可能會以意想不到的方式改變你的法線圖。
你可以把你的UV島堆疊在一起,這樣他們就可以在你的模型的不同部分使用相同的法線圖信息。隻要確保你把模型的一邊移到UV空間之外的一個單元,這樣烘焙程序就不會試圖同時從兩邊獲取細節。你可以更進一步,對一些細節使用修飾紋理或貼花,以優化你的紋理使用。
紋理使用像素網格,而像素是方形的。如果你有一些細節形成了一條線,試著將這條線垂直或水平地對齊。這樣一來,像素網格和你的紋理細節就會對齊。
九、我的模型是對稱的,但法線圖看起來是不對稱的
當對你的模型應用對稱性時,法線方向可能會改變,因為麵的連接方式已經改變。有時,這意味著你可以在模型的中心看到一條縫。為了避免這種情況,請確保你的低模法線在中心位置是對齊的,並在需要時調整平滑。
另一個可能的原因是三角測量:當把模型導入遊戲引擎時,它們總是被三角測量,有時,這個過程會改變低模法線,在低模麵的對角線上會出現一些偽影。為了避免這種情況,在烘焙前對模型進行三角測量,烘焙法線貼圖,然後應用對稱性修改器。
最後,希望以上的解決方式能對大家產生幫助。
- End -
來源:Thepoly公眾號
熱門課程
專業講師指導 快速擺脫技能困惑相關文章
多種教程 總有一個適合自己專業問題谘詢
你擔心的問題,火星幫你解答本文將為你探索室內設計需要學習的關鍵課程,並引導你如何在火星時代教育獲得專業的室內設計培訓。
本文將介紹適合學習Unreal Engine 4設計的人群,以及火星時代教育如何幫助您成為UE4設計領域的專業人士。
火星時代教育的商業廣告插畫班詳解插畫在商業廣告中的作用,以及如何提高你的插畫技巧,讓你的廣告項目得到更大的提升。
火星時代教育提供全麵的人物角色建模網絡培訓班,教您如何掌握角色建模的技巧,塑造出生動的遊戲角色。
平麵設計學習入門:火星時代教育帶你開啟設計之旅 | 引領設計未來
借助火星時代教育的專業教學,掌握平麵設計的基礎知識和技能,快速入門,開始你的設計之旅。
探究數字化虛擬人課程的重要性,以及火星時代教育如何幫助學生掌握相關知識和技能。關鍵詞:數字化虛擬人,火星時代教育。
1. 打開微信掃一掃,掃描左側二維碼
2. 添加老師微信,馬上領取免費課程資源
同學您好!