精靈表製作器:免費線上表單與圖集建構工具
自己做一個精靈表製作器
把幀合併成一張表——設定欄數、間距與縮放,匯出 PNG 與 JSON 圖集——或從單一提示詞直接生成整張動畫表。
精靈表製作器只做一件事:把一組個別幀打包成一張已知座標的圖片。你餵給它 PNG、JPG 或 WebP 檔,選好欄數、間距與縮放,它回傳一張 PNG 加上一份 JSON 圖集,把每個幀名稱對應到一個 x、y、寬、高的矩形。你的渲染器只需要這個矩形就能畫出正確的儲存格。
這個詞涵蓋兩種不同的工具。一種是打包器:你已經有幀,想把它們放到同一張表上。另一種是生成器:你寫一段提示詞,得到一整張風格一致、可動的角色表。Neta Studio 的瀏覽器版 3D 世界建構器兩種都做,輸出直接進到 Three.js 場景,不需要轉檔步驟。
用你的幀做出精靈表
這是打包路徑。你把幀丟進去,表就以確定性的方式建好:由左到右、由上到下,依照你提供的順序。第一個幀佔儲存格 (0,0),第二個在它右邊一格,依此類推,直到整列填滿,接著換到下一列。
在這裡,順序比其他任何事都重要。打包器不會依檔名排序,也不會從名稱推斷動畫群組。如果你的幀命名是 frame_1.png 到 frame_8.png,而你把它們亂序丟進去,匯出的表就是錯的,JSON 圖集也會忠實地記錄錯的順序。丟之前先排好,或在匯出前檢查縮圖列。
輸出是兩個檔案。PNG 是打包好的圖片。JSON 是一個以幀名稱為鍵的小物件,每個值帶著矩形與原始尺寸。多數引擎可以直接吃這份 JSON;如果你的引擎不行,這些數字很單純,手動重新對應並不難。
01
把幀匯出成帶透明通道的 PNG,或是不需要透明通道時用 JPG/WebP。每個幀的像素尺寸保持一致。
02
依播放順序把幀丟進打包器。確認縮圖列由左到右的排列就是動畫該播放的順序。
03
設定欄數。想讓表大致呈方形就留 auto,想做成單一寬長條就把欄數固定成幀數。
04
設定間距與縮放。間距會在儲存格之間加入透明像素;縮放則用最近鄰以整數倍率放大每個幀。
05
把 PNG 與 JSON 圖集一起匯出。接進渲染器之前,先拿 JSON 裡的一個矩形對照表上的實際位置確認。

從提示詞生成精靈表
精靈製作器的第二種意思跟網格打包無關。你描述一個角色,拿回一整張表——一整組姿勢,以一致的風格繪製,並且已經排成網格。這裡沒有原始美術要丟進來,因為美術本身就是輸出。
真正有用的是那致性。一次生成 8 方向的行走循環,能讓輪廓、色盤與比例在各儲存格之間對齊。每個幀分開生成就做不到,飄移會在畫面上表現成角色在幀與幀之間好像換了體積。
Neta Studio 生成 8 方向行走循環,以及待機、攻擊、施法組合。Agent Sprite Forge 是工作室裡負責產出這些表的資產;你可以把生成好的表丟進 3D game builder 的世界,用打包器本來會產出的同一份圖集 JSON 來驅動它。
- 8 方向行走一張表涵蓋八個羅盤方向,所以場景裡轉動角色只要查一列,不需要重新生成。
- 待機、攻擊、施法與行走同風格生成的其他動作組合,讓你在執行時切換而不會出現明顯的風格斷層。
- 風格沿用角色描述一次,姿勢組合就繼承色盤與比例——這正是逐幀生成最常失敗的地方。
欄數、間距、縮放與 JSON 圖集
四個設定決定一張表能不能用。在匯出時就設對,因為事後補救得重新打包,還得重新測試每一段引用了舊座標的動畫。
JSON 圖集是表與你的程式碼之間的契約。它逐一記錄每個幀的位置與尺寸。如果你改了表卻沒有重新產生圖集,精靈就會取樣到錯誤的區域,儲存格裡會滲進隔壁幀的一條邊。
- 欄數決定換列前每列有幾個儲存格。寬長條用欄數等於幀數;網格則用接近平方根的值。
- 間距與內距在儲存格之間插入透明像素。當渲染器取樣帶有任何濾波時這就重要了,因為間距為零時,隔壁幀的邊緣像素會滲過邊界。
- 縮放用最近鄰以整數倍率放大每個幀。非整數倍率搭上平滑濾波會把像素邊緣糊掉,毀掉你當初匯出這些幀所要的銳利感。
- JSON 圖集把每個幀名稱對應到 x、y、寬、高。把原點當成角色的腳,而不是圖片左上角,這樣放到地面上時就不需要逐幀偏移。
什麼是材質圖集
圖集是一張材質,裡面裝著許多較小的圖,外加一張描述每個小圖位置的對照表。精靈表是常見的特例:那些小圖是同一主體的動畫幀。
圖集存在的理由是繪製呼叫。每個幀各綁一張材質,會逼渲染器在每次之間切換狀態,而畫面上精靈一多,狀態切換就吃掉大半幀時間。全部打包到一張材質上,整組就只綁一次。幾何仍然逐精靈繪製,但材質不會換。
代價是編輯變得粗糙。改一個幀就得重新打包並更新圖集,而任何還握著舊矩形的程式碼都變成錯的。所以圖集是以資料形式匯出,而不是把座標寫死在程式裡。我們的精靈表指南對打包決策有更深入的討論。
RPG、平台與等角視角的精靈表生成器
你要的版面多半由類型決定。RPG 依方向與動畫階段索引,所以網格讀起來很自然。平台遊戲一次通常只跑一個動作,所以寬長條更簡單。等角世界需要與菱形投影相符的儲存格尺寸,否則精靈會互相重疊。
先決定版面,再設定欄數,然後照著那個版面寫查表程式。把網格改成以長條為基礎的索引是機械式但瑣碎的改動,而且會碰到每一處動畫呼叫點。
| 類型 | 典型版面 | 備註 |
|---|---|---|
| RPG | 4 方向網格 | 列是方向,欄是幀。先查方向再查階段。 |
| 平台 | 單一寬長條 | 一張表一個動作。播放是線性索引,不用算列。 |
| 等角 | 菱形儲存格 | 儲存格尺寸必須配合投影。間距要比平常留更多,以免邊緣滲色。 |
角色精靈表
角色一多,保持整組一致就是難的部分。各自看都合理的表擺在一起就崩了:色盤飄移、比例變動,或是站在同一場景裡的角色光線方向翻了過來。
一次生成一個角色的完整動作組合,而不是一個動作一次。同一輪之內色盤與比例會延續到各個姿勢;跨輪就不會,而兩個角色同框的那一刻差異就看得出來。
整組角色的儲存格尺寸保持一致,即使美術沒有填滿儲存格。統一的儲存格讓場景可以把任何角色放進任何位置,不需要逐角色的偏移表。角色精靈表製作器的用例對整組角色有完整說明。
把現成的表切開
如果你已經有一張表、想把幀拆回來,那是切片,不是打包,是反向操作。GIF 轉換器與動畫器處理這條路徑——你提供表,定義儲存格網格或幀邊界,拿回個別幀。
切片會失敗有兩個原因。間距不均的表用猜測的儲存格尺寸除不盡,所以要量一個已知的儲存格,而不是把圖片寬度除以你估計的欄數。從有損格式匯出的表,儲存格邊界上會帶著壓縮瑕疵,而那些瑕疵在儲存格被拆開、放大之後就會顯現。
走進它所屬的那個世界
精靈是一個無處可站的角色。最後一步是別人沒提供的:把你剛做好的表放進一個有人可以走動的世界——一座小島、一顆行星、一個下雨的街角。這個網站上的每個世界都是從一段文字描述做出來,並且發佈成一個你玩得到的頁面。
常見問題
原始幀可以用哪些檔案格式? +
PNG、JPG 與 WebP。三者之中只有 PNG 能穩定攜帶透明通道,所以任何需要透明的地方都用它。
為什麼我的精靈表放大後看起來糊糊的? +
你用非整數倍率縮放,或是渲染器套用了平滑濾波。只按整數倍率縮放,並把材質濾波設成最近鄰。
幀與幀之間需要間距嗎? +
通常需要。間距為零又套用任何材質濾波時,某一幀的邊緣像素會取樣進隔壁儲存格,動畫播起來就出現可見的接縫。
JSON 圖集裡到底有什麼? +
每個幀一筆,記錄它在表上的 x、y、寬、高。有些匯出器還會記下原始幀尺寸與原點,角色的原點通常在腳底。
匯出後還能改欄數嗎? +
不重新打包就不行。改欄數會移動表上的每一個幀,舊的圖集矩形就指不到正確的儲存格,每一段引用它們的動畫都會壞。
精靈表製作器和精靈表生成器差在哪裡? +
製作器把你已經有的幀打包成網格。生成器則從提示詞產生幀——例如一整組風格一致的 8 方向行走——所以美術是輸出而不是輸入。
回到 3D Game Builder
31 個完成的 3D 世界、遊戲與場景全都在同一頁——每一個都玩得到。
從素材庫範本開始
這個素材庫裡的每一項資產都是透明、可直接進遊戲的 PNG,並附上當初的提示詞——精靈資源庫與免費精靈表,依動作、風格與主題標記。可自由瀏覽與下載。