Sprite Normals 是什麼?像素美術法線貼圖開源工具,CLI、網頁版與引擎設定
Sprite Normals 是 Sprite Fusion 在 2026 年 10 月 19 日公開的 MIT 開源工具,可為像素角色、動畫與圖集產生法線貼圖。本文說明它的演算法並非生成式 AI、網頁版與命令列用法、Godot 與 Unity 設定、輸入限制,以及哪些情況效果有限。
Sprite Normals 要解決的問題很具體:你畫好一隻 32×32 的像素角色,想讓它在移動的光源下有立體感,卻不想為每個動畫格重畫光影。
法線貼圖就是處理這件事的標準做法,它是一張記錄「每個像素朝向哪裡」的圖,遊戲引擎拿它來計算光照,平面的精靈圖看起來就有了體積。
它是專做這件事的開源工具。倉庫在 2026 年 10 月 19 日建立,授權檔署名 Hugo Duprez,Sprite Fusion 網站頁尾也署名同一人,隔天 X 上有人貼出示範影片。
這則貼文發在台灣時間 10 月 20 日晚上 8 點多,我在 21 日早上查詢時,約有 3,400 個讚、約 7.9 萬次觀看。
這則貼文不是作者本人發的,發文者的串文第三則還在推廣 QuadcodeAI 這個 AI 平台,附上送免費點數的促銷連結,與這個專案無關。
所以我只把它當作熱度線索,工具本身的事實,都回到 GitHub 倉庫與 Sprite Fusion 官方文件核對。
它容易被當成生成式 AI,因為同一個網站有收費的 AI 像素圖生成器。其實倉庫的原始碼是一套一般的影像處理演算法,用輪廓距離與亮度估出高低起伏,再換算成法線,相依套件裡也沒有機器學習框架。
它的實用價值在於流程。同一套程式既能在命令列批次處理,也能編成 WebAssembly 在瀏覽器跑,所以可以放進既有的像素美術流程,不必依賴雲端服務。
我的判斷是,有 2D 動態光源需求的像素遊戲開發者很適合試,因為它免費、授權寬鬆、輸出尺寸與透明度都不變。期待它自動畫出精緻立體細節的人,則要調低預期,因為結果只取決於你原本的輪廓與明暗。
要用好它,先弄清楚它到底在算什麼。
Sprite Normals 是什麼?Sprite Fusion 的免費法線貼圖生成器
法線貼圖用紅綠藍三個色版,編碼每個像素表面朝向的方向。引擎在光源移動時,會依這個方向決定亮暗,所以一張只有顏色的像素圖,也能對動態光產生反應。
Sprite Normals 的做法,是從精靈圖的輪廓與畫好的明暗,推估一張凸起的表面。官方 README 說它保持原本的像素解析度與透明度,能處理單張精靈圖、圖集與動畫。
它是 Sprite Fusion 的專案之一。Sprite Fusion 是一組給遊戲開發者的像素美術工具,包括拼貼地圖編輯器、Pixel Snapper 與付費的 AI 像素圖生成器,而 Sprite Normals 是其中免費、開源的一項。
倉庫用 Rust 寫成,授權是 MIT,也就是允許商用與修改,只要保留授權聲明。倉庫在 10 月 19 日建立,我查詢時只有 2 次提交,版本號是 0.1.0,也沒有預先編譯的發行檔,所以它還很新。
官方提供四種使用方式:網頁版、命令列、WebAssembly 函式庫,以及 Sprite Fusion 的 API 與 MCP。
MCP 是讓 AI 代理呼叫外部工具的協定,其中的 create_normal_map 工具可以讓 Claude、Codex 這類代理直接產生法線貼圖。
這些入口背後是同一套演算法。接下來看它到底怎麼算。

它怎麼算出法線貼圖?輪廓距離加亮度,並非生成式 AI
我讀了倉庫的 relief.rs,流程可以拆成四步,每一步都是固定公式。先依透明度找出精靈圖的實體區域,低於 0.03 的像素視為空白。
接著算高度,來源有兩個。一個是輪廓,離邊緣越遠的像素越高,並用對數曲線讓中心變平緩,預設影響範圍約 4 個像素。另一個是亮度,程式把每個像素轉成 Oklab 的明度,亮的地方當作比較高。
兩種高度相加前,亮度那一份會用兩種大小的高斯模糊混合,比例是 7 比 3,再乘上細節強度,預設是 6。輪廓那一份則乘上輪廓強度,預設 1.15,並做一次柔化。
最後用 Sobel 濾波器計算每個像素的高度斜率,再轉成法線向量,整體強度預設是 1.5。這些預設值就是命令列與網頁版上看到的 Strength、Detail 與 Volume。
這個做法有幾個直接結果。因為亮的像素被當成凸起,所以你畫上去的高光會變成表面細節,官方 README 也提醒,畫出來的高光可能變成表面細節。
不相連的輪廓會各自處理,圖集裡的每一格也各自獨立,但互相接觸的精靈圖會被當成同一塊輪廓,連斜角相接也算接觸。官方網頁版也寫明,圖集中的精靈圖要彼此不接觸,才會各自得到法線。
依原始碼判斷,它沒有使用任何訓練出來的模型,也沒有隨機數,所以同一張圖用同一組參數會得到相同結果。這種可重現性對遊戲開發很重要,因為動畫每一格的處理方式一致,不容易出現格與格之間忽然變樣的情況。
知道原理之後,最快上手的方式是網頁版。
網頁版怎麼用?不需要帳號,圖片也不上傳
Sprite Fusion 的法線貼圖頁面,標題就是免費線上法線貼圖產生器。你把 PNG、GIF、APNG 或 JPG 拖進頁面,調整 Strength、Detail、Volume,再選 OpenGL 或 DirectX 格式,就能下載結果。
頁面的常見問題寫明,法線貼圖在瀏覽器裡生成,圖片不會上傳。這代表處理在本機完成,對還沒公開的遊戲素材比較放心。官方也標示網頁版免費,適用於業餘與商業專案,且不需要帳號。
GIF 與 APNG 動畫處理後,會變成一張法線貼圖圖集,旁邊還有一張格式相同的顏色圖集可以下載。PNG 圖集則每個精靈圖各自計算,前提是它們不互相接觸。
另外有一個「可平鋪紋理」選項,適合磚牆、木板、草地這類重複的材質,開啟後法線貼圖的邊緣會無縫接合,不用再手動修接縫。官方說它也適用於低多邊形與風格化的 3D 貼圖。
選格式時要看你用的引擎。官方建議 Godot、Unity 與 Blender 用 OpenGL,Unreal Engine 用 DirectX。兩者的差別在綠色色版是否反向,選錯了,光的上下方向就會反過來。
網頁版適合少量素材。要處理整個專案的幾十個圖集,就比較適合命令列。
延伸閱讀:Roblox Studio MCP 教學:Claude、ChatGPT 怎麼接上遊戲編輯器?
命令列與 WebAssembly:從原始碼編譯,批次處理圖集與動畫
倉庫目前沒有發行預編譯檔,所以要自己編譯。README 的需求是 Rust 1.85 以上,在倉庫目錄執行 cargo build --release --locked,編出來的程式在 target/release 底下。
也可以用 cargo install 安裝到本機,之後在任何資料夾都能呼叫。
建議先讀過程式碼再執行。倉庫約一千多行 Rust,使用的相依套件很少,包括影像、命令列與序列化,所以讀起來負擔不重。
用法很直接。單張圖輸入 sprite.png,加上 -o 指定輸出,沒有指定時會在原檔旁產生以 _n.png 結尾的檔案。
批次處理用 --output-dir 指定輸出資料夾,圖集用 --frame-size 指定每格大小,例如 32x32。
幾個參數預設值值得記住:normal-strength 是 1.5,detail-strength 是 6,detail-scale 是 0.6,shape-strength 是 1.15。
要輸出給 Unreal,就加上 --normal-format directx。
動畫輸入會產生三個檔案。walk_n.png 是法線貼圖圖集,walk_n.color.png 是排列相同的顏色圖集,walk_n.frames.json 則記錄圖集尺寸、每格尺寸、欄數、幀數與每格延遲。
格子以由左到右、由上到下排列,PNG 圖集若沒有時間資訊,會套用預設的 100 毫秒。
安全性的設計也看得到。程式不會覆蓋既有輸出,除非加上 --force,輸入檔也受保護,寫檔先寫到暫存檔再改名,避免失敗時留下壞掉的半成品。
限制寫在 README 與原始碼裡:單一輸入檔最大 64 MiB,處理時的像素總數含邊緣補白不能超過 4,194,304,動畫最多 256 格,且解碼後的總像素也不能超過同一個上限。
WebAssembly 版需要 wasm32 目標與 wasm-bindgen 0.2.126。載入後呼叫 generate_normal_map,傳入圖片位元組與 JSON 設定,就會回傳法線貼圖與顏色圖的 PNG,以及中繼資料。
可用的設定鍵有 strength、detail、smoothing、volume、frame_width、frame_height 與 directx。
輸出檔做好之後,還得讓引擎正確讀它。
放進 Godot 與 Unity:引擎端的設定
法線貼圖是資料,不是顏色,所以匯入時要特別設定。官方文件的要求是,匯入時不要用 sRGB、不要壓縮、不要過濾,否則像素邊緣的方向會被改掉。
Godot 的做法是把精靈圖與法線貼圖放進一個 CanvasTexture,指定給 Sprite2D,再加一個 PointLight2D。這樣移動光源時,角色就會依法線產生明暗。
Unity 則在 URP 2D 管線裡,把法線貼圖加成精靈圖的次要紋理,名稱要叫 _NormalMap,並把 2D 燈光的法線貼圖品質設為 Fast 或 Accurate。官方文件指定的就是這個名稱,拼字要一致。
動畫則要確認每一格對得上。工具輸出的顏色圖集與法線圖集排列相同,所以在引擎裡用同一份切格設定即可。我建議先拿單一角色的一個動作測試,確認光源繞圈時沒有某幾格的亮暗突然反向。
我的建議是強度先用預設值,再視情況往下調,因為過強的法線會讓小圖看起來像浮雕,破壞原本的像素感。官方預設是 1.5,API 文件允許的範圍是 0 到 8。
接著要分清楚哪些功能免費、哪些要錢。
延伸閱讀:Unity 官方 AI 外掛進入 Grok Build:遊戲開發代理有了文件與操作指引
免費與付費的界線:法線貼圖免費,AI 生成要點數
Sprite Normals 本身免費。API 的法線貼圖端點也是免費的,只是需要 Sprite Fusion 帳號與 API 金鑰,單格尺寸最大 1024×1024,回傳的是 PNG。
MCP 的 create_normal_map 同樣免費,連接時要在 Sprite Fusion 頁面登入並核准。
但同一個網站有收費的功能。Pixel Art Generator 是 AI 像素圖生成器,產生圖片、編輯、動畫與八方向,每次都消耗 15 點,補點方案是 150 點 5 美元、450 點 12 美元、1,500 點 35 美元。
文件同時說明,手動編輯、生成法線貼圖與匯出不耗點數。
這個區別很重要,因為 X 貼文談的是法線貼圖工具,並沒有提到付費部分。如果你只想要法線貼圖,不需要任何訂閱,網頁版或自行編譯就夠了。
商用方面,倉庫是 MIT,網頁版標示可用於商業專案。但這些授權只涵蓋工具本身,你輸入的精靈圖權利仍歸原作者,用別人的素材產生法線貼圖,不會因此取得授權。
適合誰、不適合誰與導入前檢查
適合的是已經有像素精靈圖、想加上動態光源的人。獨立遊戲開發者、做 2.5D 效果的團隊與 Game Jam 參賽者,用它能在幾分鐘內替現有素材補上光照反應,不必重畫。
也適合想自動化素材管線的人。命令列能批次處理,WebAssembly 可嵌進自己的編輯器或網頁工具,因為輸出是固定的,也容易放進建置流程。
不適合的有幾種。期待工具自己判斷「這是盔甲、那是布料」的人,因為它只看輪廓與明暗。需要手繪法線細節、想精準控制每個凹凸的美術,因為這類需求要在專用繪圖軟體裡處理。素材是很大張圖的團隊,因為單張面積有上限。
導入前我會做三件事。先拿一個角色的單格圖,用預設參數生成,放進引擎看光源移動的效果。接著檢查高光與暗部,因為畫上去的高光會變成凸起,如果角色身上有閃亮的描邊或眼睛反光,法線可能出現怪異的小突起。
最後用動畫整組測試。把每一格輸出後播放,注意格與格之間的光是否穩定。若不穩,先檢查原圖各格的明暗是否一致,再回頭調參數。
然後是需要事先知道的限制。
限制與風險:從輪廓與明暗推估,不是真實幾何
最大限制是方法本身。工具只知道輪廓與亮度,不知道物體真正的形狀,所以結果是合理的估計,不是精確的幾何。官方 README 也說明,法線是從顏色與形狀估計出來的。
第二個限制是來源很新。倉庫 10 月 19 日才建立,目前版本 0.1.0,發行檔還沒有,測試雖然存在於倉庫,我沒有執行,也沒有找到獨立機構的比較評測。與其他法線貼圖工具的優劣,目前缺少第三方資料。
第三個限制是輸入規格。單檔 64 MiB、約 419 萬像素、動畫 256 格,大多數像素角色都不會碰到,但大型場景圖或高解析手繪素材可能超過。
第四個限制是工作流程。要自己編譯 Rust 程式,對不熟悉工具鏈的美術有門檻,這時用網頁版比較實際。還有一點,網頁版與 API 是不同入口,API 需要帳號與金鑰,金鑰要放在伺服器或本機,不要放進公開的專案裡。
最後是授權與資料。MIT 只涵蓋程式碼,Sprite Fusion 的品牌與其他服務條款另外適用。商業專案若使用 API 或 MCP,要再讀一次該服務的條款。
Sprite Normals 常見問題
Sprite Normals 用了 AI 模型嗎?
我讀過倉庫原始碼,核心是輪廓距離、Oklab 明度、高斯模糊與 Sobel 濾波,相依套件沒有機器學習框架,所以它不是生成式模型。Sprite Fusion 的其他產品才有 AI 生成功能。
網頁版會把我的圖片上傳嗎?
官方常見問題寫,法線貼圖在瀏覽器裡生成,圖片不會上傳。API 與 MCP 則會把圖片送到 Sprite Fusion,使用前要自行評估。
可以免費用在商業遊戲嗎?
倉庫採 MIT,網頁版標示業餘與商業專案皆可免費使用。但輸入的像素素材要有你的使用權,工具不會替素材授權。
為什麼我的法線貼圖看起來光線方向反了?
最常見的原因是格式。Godot、Unity 與 Blender 用 OpenGL,Unreal 用 DirectX,選錯會讓綠色色版方向相反。另外也要確認匯入時關閉了 sRGB、壓縮與過濾。
圖集裡的角色互相黏在一起怎麼辦?
官方說明圖集中的精靈圖要彼此不接觸,才會各自得到法線。若素材本來就貼在一起,可以在命令列用 --frame-size 指定格子大小,讓每一格獨立處理。
先拿一格角色測光,再決定要不要放進整條素材管線
Sprite Normals 做的事很單純,卻補上了像素美術常缺的一塊:用固定公式替精靈圖加上光照反應。它免費、可本機執行,也能接進命令列與網頁工具,風險主要在於效果取決於原圖明暗,以及專案本身還很新。
最穩的導入方式,是挑一個角色的一個動作,用預設參數輸出,丟進 Godot 或 Unity 繞著打光,確認立體感夠不夠、有沒有怪突起,再決定要批次處理多少素材。想持續追蹤遊戲與創作工具的實務更新,可以免費訂閱 AI 郵報。