圖片轉雕塑 是做什麼的?
一張圖片輸入,輸出一個可被驗證的雕塑:圖片所顯示的每個表面都與圖片自身的法線、輪廓和深度(在圖片自己的攝影機中)擬合,每個隱藏的表面都來自於需先彼此一致的生成視角,且建構的每一步都被記錄並可在 Blender 中重播。
輸入路由
任何輸入最終都會產生相同的案例佈局(透過 i2s.py new CASE --input ...)。詳細資訊:references/inputs.md。
| 輸入 | 操作方式 | 備註 |
|---|---|---|
| 角色/生物/物體渲染圖或 AI 生成圖 | new → run | 主要路徑 |
| 真實物體的照片(公仔、玩具、產品、雕像) | new --kind photo → run | MoGe 會提供真實焦距與深度 |
| 帶有透明背景的 PNG 切圖 | new → run | Alpha 通道即遮罩;無需遮罩呼叫 |
| 包含多個物體的擁擠圖片 | prep --select "the red dragon" | SAM-3 會選取主體 |
| 繪畫、草稿或平面插圖 | prep --restyle | nano banana 先將其轉為 3D 渲染,同時保留姿勢 |
| 同一物體的多張照片 | views --import DIR | 您的照片會取代生成的視角;透過註冊找到角度 |
| 僅有想法 | imagine OUT.png "idea" → new | 先產生一個清晰的全身渲染圖作為起點 |
| 無 API 金鑰 | 一個透明 PNG(加上您自己的視角) | 僅正面也可行:輪廓會被膨脹,後方深度則是猜測 |
工作流程
在每個檢查點貼上標籤後的視覺圖(checks/sheet_*.png、視角表、旋轉台影格):圖像優先,數據其次。修正回合會增加步驟;記錄的內容絕不會被編輯。
- 建立骨架。
i2s.py new CASE --input IMG --subject "short noun phrase"。觀察圖片並自行撰寫主體短語(例如 "stocky cartoon troll"、"ceramic owl figurine"):它會被用於每個視角的提示詞中。輸入圖片會被複製、計算 sha256,並填充至最接近的生成器長寬比,使所有視角共用同一個鏡頭。 - 正面地圖。
i2s.py prep CASE(遮罩、MoGe-3 深度 + 焦距、Marigold 法線;單位以主體為準進行歸一化)。繼續前先檢查ref/front_mask.png和ref/front_normals.png。主體選取錯誤 →--select。手繪稿 →--restyle。 - 視角。
i2s.py views CASE(9 個視角 + 1 個保留視角,預估約 $2;--set minimal為 5 個)。觀察每個生成的影像:姿勢改變、多出肢體或主體被裁切都是不良視角。註冊會拒絕不一致的視角(IoU < 0.80 相對於其他視角的外殼),但請說出您看到的問題。沒有任何視角看到的區域需要以能觀察該區域的角度新增視角(--angles "-30:25"),而不是增加更多平滑處理(references/views.md)。 - 外殼。
i2s.py hull CASE:註冊每個視角(要求的角度僅為先驗:左右互換會被發現,前後方向則保留)、重新置中、篩選、記錄雕刻過程、對稱性檢測。在case.json中閱讀已註冊的角度;i2s.py symmetry CASE on|off可覆寫檢測到的鏡像平面。 - 擬合。
i2s.py fit CASE --stage all(形狀 → 表面 → 細節,38 個記錄的調整次數),然後cut(打開照片中顯示的手指間、腿間、手臂與身體間的間隙)、smooth(移除網狀物與斑點)、fit --stage polish。i2s.py run CASE會按照此預設計畫依序執行步驟 2-8(references/fitting.md)。 - 檢查與迭代。
i2s.py check CASE會為每個視角撰寫一張比對表:參考圖、參考法線、雕塑、法線誤差、輪廓差異。尋找腫塊、網狀物、缺失間隙、扁平特徵。針對這些問題進行操作:parts CASE --prompt "hands"然後fit --stage focus --region hands、cut --region hands、smooth --region box:...(references/checking.md)。未附上改善前後比對表之前,絕不宣稱已修正。 - 完成、Blender、影片。
finish(面平滑、OBJ/STL)、blender(從照片的攝影機重播每個步驟、360° 旋轉台、每個視角、sculpt.blend、GLB)、film(雙面板縮時攝影,以 360° 旋轉結束、旋轉台、視角表、英雄圖)(references/blender-and-delivery.md)。 - 報告與停止。
report會寫入out/REPORT.md、out/index.html以及每個步驟的圖表。呈現縮時攝影、視角表與測量表格,說明哪些部分較弱,然後停止。由使用者決定下一步。
嚴格規則
- 照片決定它自己看到的內容。 生成的視角僅填補照片看不到的部分;它們的深度絕不會被使用(不同視角間的深度差異可達數公分)。絕不要將生成視角的法線與照片的法線進行平均。
- 註冊每個視角;絕不信任請求的角度。 生成的視角在 Troll 案例中偏差達 20–155°,大多是左右互換。搜尋允許這些偏差,但會將正面視角保留在前方、背面視角保留在後方(對稱主體的背面輪廓和正面相似)。請在
case.json中閱讀已註冊的角度。 - 在雕刻前先篩選。 與其他視角不一致的視角代表是不同的主體或姿勢:應拒絕它(並說明原因),而不是用它來切割雕塑。
- 保留一個視角不參與擬合。 它永遠不會移動表面;其攝影機在擬合前就被凍結。報告它時應與用於擬合的視角分開。它也是生成的,因此衡量的是「一致性」,而非「真實性」。
- 測量,不要僅靠目測。 IoU、輪廓距離、法線角度、粗糙度(相對於參考圖自身的粗糙度)、照片的深度。單一數字無法代表「品質」:應並列報告它們。
- 距離場維持精確。 每個操作都會重新計算網格距離(帶狀區域內的精確三角形距離,之外使用 EDT)。使用不精確的場進行偏移、鏡像場本身、或模糊法線目標,會在本案例建構所依據的案例中產生階梯、波紋環和扁平鼻子(
references/lessons.md)。 - 記錄一切。 每次雕刻、調整、切割和光滑都是
build/steps/和build/log.jsonl中的一個步驟,可在 Blender 中重播並顯示在縮時影片中。絕不編輯已記錄的步驟;請新增一個新步驟。 - 付費呼叫: 每次 fal 呼叫都通過案例預算(
settings.budget_usd),其請求 ID 在等待前會儲存於case.json中,且不會盲目重新提交任何東西。FAL_KEY永遠不會被列印或寫入。 - 每個檢查點都有視覺回饋,且每部影片的第 0 影格都是一個完成的縮圖。
- 說出哪些是憑空創造的。 僅從正面看到的主體背面,是生成器自身的猜測。
參考資料
| 檔案 | 何時閱讀 |
|---|---|
references/inputs.md | 處理特殊輸入時;遮罩、重新風格、選取、匯入照片、僅有想法 |
references/views.md | 生成、判斷、註冊、篩選和新增視角時 |
references/fitting.md | 了解調整次數的用途、階段、參數、切割/平滑/聚焦、預設計畫 |
references/checking.md | 閱讀地圖表和指標、保留視角、下一步要修正什麼 |
references/blender-and-delivery.md | Blender 重播、影片、匯出、報告、審閱頁面 |
references/conventions.md | 世界座標系、攝影機、單位、檔案格式(用於編寫新工具) |
references/lessons.md | 首批案例中出了什麼問題,以及為何有上述規則 |
模板:templates/CONTRACT.md(會複製到每個案例中)、templates/acceptance.json(目標值)。