影像轉低多邊形
一張照片輸入,每個三角形預算輸出一個可編輯的低多邊形網格,每個網格透過相同的鎖定相機與照片進行評分,並以四種獨立方式計數。低多邊形幾何本身負責近似:沒有紋理、廣告牌、投影照片或未計數的幾何來代替形狀。
輸入:參考影像(永不改變)、主體、預算。工作範例:儲存庫中的 examples/cat/(一隻橙色虎斑貓,預算 100 / 200 / 500 / 1000)。
開始之前
| 情況 | 執行方式 |
|---|---|
| 一張照片,主體完整可見,背景單一 | 主要路徑 |
| 四足動物 | 內附的代理模板(fit_camera_proxy.py、build_proxy.py)是四足貓;調整其先驗知識 |
| 任何其他主體 | 先為其編寫代理模板(每個部位的廣義圓柱體,catlib/skeleton.py 格式);其餘工具與主體無關 |
| 多張照片、影片、掃描 | 超出範圍:一個視角、一個相機 |
| 使用者需要顏色或紋理 | 僅支援平面每面顏色;開始前先說明 |
| 無 Blender | 不支援:計數、組裝及所有官方數字需 Blender 5.2+ |
開始前說明:照片未顯示的一切均為推斷,未經驗證。
工作流程
下方 S 表示 skills/image-to-lowpoly/scripts。每個腳本皆接受 --case CASE(或 LOWPOLY_CASE)。在每個檢查點發布帶標籤的影像(疊加、黏土、線框、八個視角):先影像,後數字。
- 案例與參考。 建立
CASE/reference/reference.png(使用者影像的逐位元複本)以及包含其 SHA-256 的來源檔案。永不重新產生、調整大小或編輯。 - 固定目標。 透過檢視放大裁切(12 個銳利點:耳尖、眼睛、鼻子、四個爪子接觸點、貓的尾巴基部/中部/尖端;根據主體調整列表)來標註地標和影像窗口,然後執行
python3 $S/preflight_reference.py --case CASE。檢視mask_overlay.png和landmarks_overlay.png。 遮罩排除地板陰影和鬍鬚。 - 相機與代理。 執行
fit_camera_proxy.py --case CASE(CPU,數十分鐘),然後執行build_proxy.py、build_proxy.py --lock和build_proxy.py --report。從所有八個視角檢視代理:它是隱藏部分的答案。然後凍結:在對任何預算進行評分之前,將參考、遮罩、地標、區域、相機、場景、代理和評估程式碼的雜湊值寫入contract/FROZEN.json(references/contract.md)。 - 控制組。 為每個預算執行
make_decimation_baseline.py --case CASE --budget N:將代理簡化為正好 N 個三角形,並在共享精煉器之後也執行相同操作。這些是待超越的數字。 - 分配與建構,按預算執行。 為每個預算分配其自己的工作區和目錄
variants/<N>/(references/budget-worker.md)。撰寫分配表(區域、三角形、環數 x 邊數、原因),建構至少兩個實質不同的分配,對每個分配進行相同的短精煉,比較,選擇。variants/<N>/build.py會寫入一個具有正好 N 個三角形(斷言)、區域、材質和地標附著點的catmesh-1mesh.json。一個封閉曲面:將四肢、尾巴和耳朵焊接進身體。 - 初始檢查點。 執行
evaluate.py --case CASE --mesh variants/<N>/checkpoints/v0_initial/mesh.json --views。這是「初始」行。 - 精煉、測量、檢視、編輯、重複。 執行
refine_vertices.py(--flips、--freeze-verts用於面和任何凍結套件)、evaluate.py,然後檢視ref_overlay.png、ref_clay.png、ref_wire.png和八個視角。在疊加顯示預算分配不當的位置進行有針對性的拓撲編輯。保留最佳驗證檢查點;最新的不一定勝出。 - 盲審。 執行
make_critic_packet.py --case CASE --round K打包照片以及中性命名的黏土、線框和外輪廓渲染。啟動一個全新的子代理,僅檢視該資料夾;將其發現轉化為預算中性的幾何編輯。拒絕任何涉及紋理、卡片或未計數幾何的建議。 - 最終確定與聚合。 執行
finalize_variant.py --case CASE --budget N --checkpoint TAG --reason "..."複製檢查點並重新評分;aggregate_metrics.py建立跨預算表格,拒絕不符的雜湊值或計數;make_comparison.py製作比對表。 - 報告並停止。 呈現附四個計數的黏土/線框表、每個預算的初始、最終和兩個控制組的表格、分配表、審查員的判決以及缺失之處。說明設計網格何處未超越控制組。由使用者決定下一步。
- 縮時攝影(可選)。 記錄建構階段(在建構腳本中使用
--stages-dir)和最佳化器快照(refine_vertices.py --snapshot-dir DIR --snapshot-every K),然後執行timelapse/timelapse.py --case CASE:透過鎖定相機在照片上繪製的網格。
嚴格規則
- 計數是評估後的匯出幾何。 四個計數(網格檔案、評估的
.blend中所有物件、重新匯入的 GLB、解析後的 GLB)必須一致且最多為 N;目標是正好 N。絕不使用 Blender 的多邊形計數(references/counting.md)。 - 不得隱藏三角形或形狀。 僅三角形,一個物件,無修改器,無細分、曲線、毛髮、實例、Alpha 卡片、重複或退化填充、廣告牌或平面輪廓擠出。
- 目標永不移動。 參考、遮罩、地標、窗口和相機僅建立一次並進行雜湊處理。真正的修正需揭露,且每個預算需重新評分。
- 沒有一個數字能決定一切。 IoU、邊界距離、地標和腿部間隙不得互相矛盾,且黏土和八個視角必須看起來更好。分數更好但形狀更差是回歸。
- 焊接,不要穿插。 埋藏的三角形浪費預算,且接合處會顯現。
- 最佳化器是共享的;分配是實驗。 相同的精煉器、相同的設定可用於每個預算和控制組。
- 地標隨幾何移動。 地標附著於其命名的特徵;切勿滑動附著點以改善數字。
- 一次只渲染一個。 僅
render_variant.py執行渲染,且它會自行取得鎖定。 - 材質絕不計入形狀。 具有解剖意義的平面每面顏色;僅根據黏土和輪廓對幾何進行排名。
- 說明它不包含什麼。 推斷的隱藏側面;平手結果即為平手;頭部和薄部分是最弱的環節。
參考資料
| 檔案 | 何時閱讀 |
|---|---|
references/contract.md | 設定案例時:佈局、單位、相機、網格格式、指標、渲染、代理、地標、頭部套件 |
references/budget-worker.md | 委派或執行一個預算時:程序、優先事項、應檢視的內容 |
references/counting.md | 四個方向的計數、硬性失敗、需揭露的內容 |
references/lessons.md | 貓運行中出錯的地方以及每個失敗演變成規則的原因 |