法線貼圖慣例:OpenGL vs DirectX 詳解
為什麼你的法線貼圖在 Unreal 中看起來反轉了,但在 Unity 中卻很正常——用白話文解釋切線空間 Y 軸慣例,並提供具體修復方法。
你將法線貼圖插入 Unreal,表面光照就像太陽從下方照射一樣。你把同一個檔案插入 Unity 或 Blender——看起來很棒。網格相同。紋理相同。這是怎麼回事?
兩個行業,一個軸的分歧
法線貼圖在其 RGB 通道中儲存表面方向。紅色 = X,綠色 = Y,藍色 = Z。每個 PBR 引擎的解碼方式都相同,除了一個例外:Y 的符號。
OpenGL 慣例 (Y+):更明亮的綠色通道意味著表面指向上方。由 Unity、Godot、Blender(Cycles 和 Eevee)、Substance Painter 的預設匯出,以及所有基於 WebGL 的引擎使用。
DirectX 慣例 (Y−):更明亮的綠色意味著表面指向下方。由 Unreal Engine、舊版 Direct3D 工具鏈,以及一些 CryEngine/Xbox 時代資源使用。
PNG 中的位元組相同。物理意義相反。
一眼識別的方法
在法線貼圖中查看半球形凸起(像按鈕或圓頂)。在 OpenGL 慣例中,凸起的底部將是較深的綠色,因為表面向 Y− 旋轉,遠離光源。在 DirectX 慣例中,底部是較亮的綠色。
如果你的光照在引擎中感覺反向了——高光出現在陰影應該在的地方——你有一個慣例不匹配。
修復只需 5 秒鐘
在 Unreal 中,紋理匯入對話框有一個翻轉綠色通道核取方塊。將其開啟,引擎會在取樣時反轉 G 通道。無需重新匯出你的來源檔案。
在 Unity 中,將紋理類型設定為法線貼圖,匯入工具會處理所有內容——Unity 預期 OpenGL,但如果檔案看起來有問題,它會警告你。在 Blender 中,使用分離顏色 → 反轉 G → 組合顏色節點鏈,或直接在法線貼圖節點中選擇 DirectX 風格的輸入。
為什麼一開始會有兩個標準?
在 1990 年代,OpenGL 和 DirectX 定義了相反的紋理座標空間——OpenGL 的 Y 向上增加,DirectX 的 Y 向下增加。當法線貼圖在 2000 年代中期變得普遍時,每個工具鏈都將其空間烤入其輸出中。分歧之所以堅持,是因為翻轉既定的管道成本很高。
生成法線貼圖而不產生混亂
aukimi 法線貼圖生成器讓你在匯出時明確選擇慣例。它在你的高度貼圖的亮度上執行 Sobel 梯度,然後將 (−dx·s, −dy·s, 1) 打包到 RGB 中——當你選擇 DirectX 時,Y 被翻轉。你可以在生成後切換慣例並重新下載,無需重新上傳任何內容。
在內部,公式是相同的。唯一的區別是我們在寫入綠色通道前應用於 Y 分量的符號。知道這一點,你可以使用任何影像編輯器在慣例之間轉換檔案:開啟 PNG,選擇綠色通道,反轉它,儲存。這就是 Unreal 中「翻轉綠色通道」所做的全部內容。
快速參考
- Unity、Godot、Blender、Substance Painter(預設):OpenGL (Y+)。
- Unreal Engine、舊版 Direct3D:DirectX (Y−)。
- 在 Unreal 中看起來有問題?在匯入設定中啟用「翻轉綠色通道」。
- 在 Unity 中看起來有問題?你可能從 DirectX 慣例工具匯出了——反轉綠色通道或重新匯出。
一旦你掌握了慣例,修復就微不足道了。最難的部分是第一次識別它。
喜歡這篇文章嗎?
相關文章
創意堆棧剛剛崩塌:2026年4月下旬的一週AI工具浪潮
在2026年4月27日至5月4日期間,Adobe、Luma、Novi、fal、Figma、Canva、HeyGen和Anthropic在八天內都跨越了同一個門檻。以下是發佈的內容、其含義,以及它對試圖整合這一切的瀏覽器型創意套件的影響。
2026年AI音樂和音效:獨立遊戲音頻中真正有效的方案
三年前,獨立遊戲音頻要麼來自授權的免版稅庫(便宜、通用、每款遊戲聽起來都一樣),要麼雇用作曲家(效果好、費用高)。到2026年,AI生成的配樂已經可以發行。這裡是哪些工具真正有效——以及人類作曲家仍然勝出的地方。
2026年AI網格生成:遊戲管線中的真實應用
圖像轉3D在十八個月內從「詭異demo」進化到「在獨立遊戲中實際應用」。以下是Tripo、Meshy、Rodin和Hyper3D在實際生產中的表現——以及3D藝術家仍然勝過模型的地方。