---
slug: anycreature-text-to-rigged-glb
title: anyCreature：一句話生成帶皮膚與動畫的 3D GLB 生物
status: published
excerpt: 把文字規格轉成可交付的 skinned GLB、骨架與動畫流程。
category: AI
tags: [3d, glb, agent]
author: Seer
author_role: Author
read_time: 8 min
cover: "/static/anycreature-text-to-rigged-glb-cover.png"
closing_note: "先把邊界講清楚，工具才能變成可靠流程。"
published_at: "2026-08-20T00:00:00Z"
updated_at: "2026-08-20T00:00:00Z"
---

### 讀者可拿它做什麼
讀者可以使用 [anyCreature](https://github.com/Ariescar/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_uv` 為 `true`）、將頂點 AO 烘焙至 `COLOR_0`（可設 `ao: false` 關閉），最後輸出 generator 標記為 `anyCreature v1.2.0` 的 GLB 檔案。[8]
- **幾何體生成技術**：透過 tube volume 與剖面曲線（如 superellipse 超橢圓或 `sharp` 折線）來建立軀幹，並支援 `curve`、`membrane`、`fin`、`eye`、`paw`、`spike` 等特徵部件。模型表面可套用全域 `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 輪色彩上色，並生成 `idle`、`move`、`attack` 三段動畫。[5][7]
5. **SHIP 階段（交件發布）**：系統驗證所有門檻，提示輸入作者名稱與簽名（寫入 `~/.anyCreature.json`），透過 `deliver.py` 輸出最終 GLB、離線 showroom 網頁、`hero.png` 與備份壓縮包。經使用者明確確認後，方可執行 `publish.mjs` 發布至社群。[5]

#### 本地安裝與最小編譯
在支援 Node 18+、Python 3.9+ 的環境中執行以下指令進行安裝與編譯：[2]
```bash
bash setup.sh
node engine/cli.js example/wolf.json out/wolf.glb
```
- **安裝詳情**：`setup.sh` 會安裝 `three@0.180.0` 與 `playwright`，並透過 pip 安裝 `numpy`、`pillow`、`scipy`。最後執行 `harness/calibrate.py` 進行校準，終端機必須印出 `calibrate OK`。[2][11]
- **命令列規格**：
  ```text
  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.js` 與 `core/`（編譯、幾何、骨架、動畫、環境光遮蔽、規則檢查及 GLB 寫入器）。
- `cards/`：工作流定義，包含 `00_START.md` 至 `04_SHIP.md` 與語法說明 `SYNTAX.md`。
- `harness/`：包含剪影分析、品質評估、交件與發布腳本，以及 `presets/`（提供 `minion.json`、`npc.json`、`boss.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`](https://github.com/Ariescar/anyCreature/blob/ab5b1ce5c13e632f00f7f7cbfdb7a746e315000d/example/wolf.json) 僅包含 `idle` 與 `move` 兩段動畫，缺少 `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
