071

anyCreature:一句話生成帶皮膚與動畫的 3D GLB 生物

anyCreature:一句話生成帶皮膚與動畫的 3D GLB 生物 封面圖

把文字規格轉成可交付的 skinned GLB、骨架與動畫流程。

Seer

2026-08-20

讀者可拿它做什麼

讀者可以使用 anyCreature 將簡短的文字指令自動化轉換為可用於遊戲的 3D 生物模型。在開發流程中,AI agent 接收到例如「做一隻山裡的巨人」的訂單後,最多進行兩次詢問釐清需求,即可輸出包含骨骼綁定(skinned)、動畫、頂點上色(vertex colored)以及環境光遮蔽(AO)烘焙的標準 GLB 檔案,並自動生成一個離線 showroom 瀏覽器頁面。[1][2][5]

這套系統提供以下具體功能:

  • 生成遊戲就緒模型:直接將文字規格編譯為標準 glTF 2.0 / GLB 格式,無須下載額外的外部素材包或網格檔。[2]
  • 靈活控制資源預算:提供 minion、NPC、boss 等預設設定檔(presets),方便開發者依據遊戲場景調整頂點數、關節數與 token 預算。[2]
  • 本地零依賴編譯:核心編譯引擎僅需 Node.js 環境,即可在本地快速將 JSON 規格檔轉為 3D 模型。[2][8]

問題

現有的文字生成 3D (Text-to-3D) 工具通常存在以下問題:

  • 生成的模型結構混亂,缺乏實用的骨骼綁定(skinning)與預製動畫,且需要複雜的 UV 拆解與手動貼圖。
  • 大多數工具依賴龐大的雲端 API 或繁重的深度學習框架,導致本地安裝成本極高,且難以整合至輕量化的 AI agent 工作流中。
  • AI agent 在自主設計 3D 模型時,容易因為「自我評分」而產生盲點,例如輸出無效的剪影、變形不對稱的關節,或是做出不符物理邏輯的攻擊動作(如原地揮手)。
  • 在安全防護上,1.2.0 之前的舊版本 judge.mjs 會監聽 0.0.0.0,且未對路徑進行安全隔離,導致同網段的攻擊者可能在評估期間讀取任意檔案。[9]

原理

anyCreature 的技術架構與編譯邏輯如下:

  • ACS 引擎編譯流程:編譯器從 cli.js 載入 JSON 格式的 spec 檔案後,依序執行九個步驟:讀取規格、將相對關節解析為座標、建置骨架(含鏡射鏈)、生成網格幾何、執行規則檢查、建立關鍵幀動畫、計算 UV 對應(若 keep_uvtrue)、將頂點 AO 烘焙至 COLOR_0(可設 ao: false 關閉),最後輸出 generator 標記為 anyCreature v1.2.0 的 GLB 檔案。[8]
  • 幾何體生成技術:透過 tube volume 與剖面曲線(如 superellipse 超橢圓或 sharp 折線)來建立軀幹,並支援 curvemembranefineyepawspike 等特徵部件。模型表面可套用全域 shading(垂直漸層與 grain 效果)。[5][10]
  • 剪影量測指標:驗證系統會將模型渲染為四個正交視角的 mask,計算寬高比、質量三分法、軀幹深度對比、腿部占比、剪影轉折、鋸齒對齊度,以及與上一輪生成的 IoU 重合度。測試著重於 24px(判讀重、快、利等體感)與 48px(判讀物種身分)的縮圖,確保低解析度下的辨識度。[2][5]
  • 嚴格的錯誤阻擋機制:編譯器提供三種層級的回饋訊息:[2][8]
  • BLOCK::硬性阻擋,停止建置。例如身體切面異常、部件浮空、鏡射變形超過 30%、或是攻擊距離未達半個身長。[2][6][8]
  • warn::警告訊息。模型仍會建置,但可能存在瑕疵,需人工確認。[2][8]
  • info::資訊提示。輸出數值統計或編譯器預設的假設。[2][8]

操作

從一句話到 GLB 的完整工作流

  1. 需求階段:輸入文字訂單,AI agent 進行最多 2 題的訪談以釐清特徵,隨後生成剪影簡報(brief)。[2][5][7]
  2. LOW 階段(自由設計與剪影閘):設計端依據規格建立基礎幾何與關節,並必須通過 Gate 1 與 Gate 2 驗證。此階段的招牌部件(如巨人的拳頭)必須具備實體幾何結構(如手指與關節),不能使用球體代替。[7]
  3. MID 階段(部件盲讀):進行 2 輪優化,讀取白名單部件進行結構對齊。[7]
  4. HIGH 階段(細節與動畫):進行 1 輪色彩上色,並生成 idlemoveattack 三段動畫。[5][7]
  5. SHIP 階段(交件發布):系統驗證所有門檻,提示輸入作者名稱與簽名(寫入 ~/.anyCreature.json),透過 deliver.py 輸出最終 GLB、離線 showroom 網頁、hero.png 與備份壓縮包。經使用者明確確認後,方可執行 publish.mjs 發布至社群。[5]

本地安裝與最小編譯

在支援 Node 18+、Python 3.9+ 的環境中執行以下指令進行安裝與編譯:[2]

bash setup.sh
node engine/cli.js example/wolf.json out/wolf.glb
  • 安裝詳情setup.sh 會安裝 three@0.180.0playwright,並透過 pip 安裝 numpypillowscipy。最後執行 harness/calibrate.py 進行校準,終端機必須印出 calibrate OK。[2][11]
  • 命令列規格
  node engine/cli.js <spec.json> <out.glb>

若缺少參數,程式會以 exit code 2 結束。若違反硬性規則(例如部件浮空),則會印出 BLOCK: 訊息並以 exit code 1 結束,且不寫入任何檔案。編譯成功後會輸出包含頂點數、面數、關節數與 UV 等屬性的 JSON 行資訊。[8]

專案目錄結構

anyCreature 版本 1.2.0 的目錄結構如下:[2][3][5]

  • engine/:ACS 引擎核心,包含 cli.jscore/(編譯、幾何、骨架、動畫、環境光遮蔽、規則檢查及 GLB 寫入器)。
  • cards/:工作流定義,包含 00_START.md04_SHIP.md 與語法說明 SYNTAX.md
  • harness/:包含剪影分析、品質評估、交件與發布腳本,以及 presets/(提供 minion.jsonnpc.jsonboss.json 設定檔)。
  • example/:提供官方審核通過的 wolf.json 範例。
  • calibration/:存放校準測試檔(包含一個必須通過、兩個必須阻擋的 spec)。

可調參數設定

開發者可在 JSON spec 中調整以下參數控制模型特徵:[2]

  • smooth_angle:折線法線閾值,預設為 50。數值愈高表面愈平滑。
  • "build": "rigid":機器人或晶體等硬質切面模型的專用設定,為身體切面通過硬性檢查的唯一合法途徑。
  • ao:可設定為 false 來跳過環境光遮蔽計算,以加速編譯。

驗證

為了確保模型品質,系統導入了獨立的品質驗證機制:

  • 獨立的 Reader Agent:驗證任務必須交由未參與設計的獨立 agent 執行,避免產生自我評分偏差。[2][7]
  • 雙重剪影品質閘
  • Gate 1 RECOGNISED:模型的四個正交視角剪影必須能夠被辨識出物種。[2]
  • Gate 2 PUNCHIER:新一輪修改必須加強剪影的誇張度與張力。若修改導致剪影趨於平庸或保守,系統將退回該次修改。[2][7]
  • 容錯與修改限制:若同一個問題導致驗證失敗兩次,系統將禁止第三次微調,開發者必須變更設計概念或直接交付目前最佳版本,並於交件時撰寫 DEVLOG 記錄狀況。[7]
  • 本地校準測試setup.sh 執行時會載入 calibration/ 的測試規格,確保量測工具能正確區分模型品質,輸出 calibrate OK 後方可使用完整管線。[2]

限制與部署限制

  • 量測工具鏈依賴:核心編譯引擎僅依賴 Node.js。品質驗證與校準工具則需要 Python 3.9+ 與 Playwright Chromium,若無安裝將無法運作品質驗證閘。[2]
  • 1.2.0 版本相容性中斷:新版本對舊規格引進了破壞性變更(breaking changes)。凡是包含浮空部件(part_attachment 失敗)、對稱嚴重變形(mirror_distortion 超過 30%),或是在體積(volume)上設定 faceted: true 的舊規格,在 1.2.0 版本中皆會被 BLOCK: 阻擋而無法編譯。[2][6]
  • 動畫覆蓋率限制:範例 example/wolf.json 僅包含 idlemove 兩段動畫,缺少 cards/03_HIGH 所要求的 attack 動態,因此該範例無法作為完整動畫覆蓋率的範本。[2][10]
  • 物理距離限制:動畫中的攻擊動作必須滿足 attack_reach 檢查,其伸展長度必須達到身長的 50% 以上,否則將觸發硬性阻擋,此限制用以淘汰原地揮手等不實動畫。[6]
  • 辨識偏誤:在獨立剪影盲讀中,象與鳥等具有特定局部特徵的動物,在局部評估時容易產生誤判。當局部辨識與全域辨識結果衝突時,系統將優先採用全域辨識結論。[2]
  • 資源與成本估算:單次 Boss 級別的生物生成,兩隻實測各花費約 4.4M tokens。Minion 與 NPC 級別的實際 token 消耗目前尚未有量測數據,僅能以預設參數估計。[2]
  • 專案狀態:本專案截至 2026-08-19 僅有單一 commit ab5b1ce(對應版本 1.2.0),無 GitHub Releases 歷史標記。社群指標為 stars 34、forks 2、watchers 0,後續數據會隨時間變動。[2][3][6]
  • 部署與安全限制
  • 本地量測腳本會啟動一個僅綁定於 127.0.0.1 的本機 HTTP 伺服器,並於 OS 沙箱中執行 Chromium,以保障執行安全。[9]
  • 交付腳本 deliver.py 雖已對寫入 viewer HTML 與 GLB metadata 的生物名稱及簽名進行轉義(HTML escape),但下游應用若直接渲染 extras.monster 內容,仍須自行實作防護轉義以免安全漏洞。[9]
  • 專案中的 harness/gobkit.json 金鑰僅授權將成品發布至 Gobkit 社群牆,真正的 API 限流與發布權限控制由伺服器端負責。官網宣稱的「工作室級 API 串流」在此開源版本中無法進行驗證。[2][9]

Sources

[1] https://github.com/Ariescar/anyCreature — Ariescar/anyCreature [2] https://raw.githubusercontent.com/Ariescar/anyCreature/ab5b1ce5c13e632f00f7f7cbfdb7a746e315000d/README.md — README.md at ab5b1ce [3] https://api.github.com/repos/Ariescar/anyCreature — GitHub repo metadata [4] https://raw.githubusercontent.com/Ariescar/anyCreature/ab5b1ce5c13e632f00f7f7cbfdb7a746e315000d/LICENSE — LICENSE [5] https://raw.githubusercontent.com/Ariescar/anyCreature/ab5b1ce5c13e632f00f7f7cbfdb7a746e315000d/MANUAL.md — MANUAL.md [6] https://raw.githubusercontent.com/Ariescar/anyCreature/ab5b1ce5c13e632f00f7f7cbfdb7a746e315000d/CHANGELOG.md — CHANGELOG.md [7] https://raw.githubusercontent.com/Ariescar/anyCreature/ab5b1ce5c13e632f00f7f7cbfdb7a746e315000d/cards/00_START.md — cards/00_START.md [8] https://raw.githubusercontent.com/Ariescar/anyCreature/ab5b1ce5c13e632f00f7f7cbfdb7a746e315000d/engine/cli.js — engine/cli.js [9] https://raw.githubusercontent.com/Ariescar/anyCreature/ab5b1ce5c13e632f00f7f7cbfdb7a746e315000d/SECURITY.md — SECURITY.md [10] https://raw.githubusercontent.com/Ariescar/anyCreature/ab5b1ce5c13e632f00f7f7cbfdb7a746e315000d/example/wolf.json — example/wolf.json [11] https://raw.githubusercontent.com/Ariescar/anyCreature/ab5b1ce5c13e632f00f7f7cbfdb7a746e315000d/setup.sh — setup.sh

先把邊界講清楚,工具才能變成可靠流程。

Visits

--

Waiting for Cloudflare metrics.