Community影像github.com

PBR材質處理管線

完整的PBR紋理集處理流程,從使用者提供的壓縮檔、掃描或程序化紋理,建立標準產出(球體+平面靜態圖、.blend場景、可選GLB、旋轉展示、紋理表),由協調代理與專業子代理協作執行。適用於「建置場景/新紋理專案/組合貼圖」等任何需求。

PBR材質處理管線 是什麼?

這是一個專為AI代理(如Claude Code、Cursor、Codex)設計的完整PBR材質處理管線,採用協調者-子代理架構。它將使用者提供的紋理集(壓縮檔、掃描或程序化紋理)自動轉換為標準交付物,包含球體與平面的多角度靜態圖、各階段的.blend場景檔案、紋理表,並可選輸出GLB與旋轉展示影片。支援Blender及headless Blender環境,所有處理步驟由不同專業子代理(如貼圖準備、材質處理、幾何烘焙、渲染、排版、品質檢驗)分工執行,協調代理負責任務分配、檔案路徑傳遞與使用者溝通。此管線明確拒絕三平面投影,強制使用半球投影法(球體)與逐面UV裁切(立方體),並內建多種診斷規則可解決渲染常見問題(如塊狀感、陰影疊加、邊界偽影),確保輸出品質穩定。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukadeshinigami/claude-pbr-texture-agents/tree/main/skills/pbr-material-pipeline

Installed? Explore more 影像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

PBR材質處理管線(協調者 + 子代理)

標準產出為球體 + 平面(絕非只有其中一項):靜態圖(ball、ball_equator、plane、closeup)、各階段儲存的 .blend 場景,以及紋理表。僅在使用者最終確認「是」時輸出 .glb;旋轉展示 MP4 則依要求提供。

處理規則(始終適用)

  1. 開始前,向使用者詢問一次:「每個階段後是否儲存 Blender 場景(.blend),以便您自行檢查流程?(建議:是)」。若為「是」,則在每個階段(貼圖、幾何、浮雕、顏色、附加項目)之後儲存 models/<proj>/<proj>_stageN_<name>.blend,以 headless 模式重新載入並確認無遺失圖片,並在進行大量運算渲染前將路徑提供給使用者。必要時等待他們的回饋。
  2. GLB 匯出不是處理步驟。請勿在各階段中匯出 GLB。最終階段詢問一次(「最終:是否匯出 GLB?」),只有在得到「是」時才執行。
  3. 大量運算(最終渲染、8K/16K)僅在使用者看過前一階段的場景後進行。

角色(使用 Agent 工具產出,subagent_type = 代理名稱)

階段代理負責項目產出
1pbr-maps-prep解壓縮、完整性檢查、EXR -> PNG、與前一組貼圖比較assets/<proj>/maps/ + 報告
1bpbr-color烘焙陰影 / 陰影色度測量、解除烘焙 + 分級反照率色彩報告、*_albedo_debaked
2pbr-material對齊 / 修正 / 柔化貼圖、遮罩、高品質高度圖、推斷或程序化貼圖assets/<proj>/derived/
3pbr-geometry-bake平面網格、球體圖集、烘焙、階段性 .blend 場景models/<proj>/*.blend
4pbr-render外觀開發、靜態圖、變體、4K、旋轉展示。唯一可使用 GPU 的代理。renders/<proj>/
5pbr-layout紋理表、社交貼文、摘要 Markdown海報、md
QApbr-qa開啟 .blend/.glb、尋找遺失紋理、迴圈接縫、誠實標籤問題列表

協調者負責拆分工作、傳遞絕對路徑與參數、合併結果、與使用者溝通,且未經使用者同意不得決定外觀。

平行處理與交接

  • 階段 1 和 2 先執行(2 可在已檢查過的貼圖上開始)。階段 3 需要最終貼圖。階段 4 需要 2 和 3。階段 5 可使用佔位符進行排版。
  • 階段 3(CPU 烘焙、圖集)可與階段 4 渲染較早的靜態圖同時執行;不得同時執行兩個 GPU Blender 任務(GPU 記憶體不足 -> 等待並重試;切勿終止你未啟動的進程)。
  • 每個代理在自己的檔案中工作(修改腳本前先複製一份);切勿編輯其他代理的腳本。
  • 交接:專案名稱 <NN>_<name>、資料夾 assets/<proj>/{maps,derived}、scripts/<proj>/、renders/<proj>/、確切指令。
  • 子代理報告應簡潔:路徑、參數值、誠實的弱點。協調者應先自行開啟影像,再告知使用者「完成」。

慣例

專案根目錄下的目錄結構:assets/、scripts/、models/、renders/、tools/(一個 headless Blender 啟動器及包含 numpy / scipy / Pillow / opencv 的 Python 環境)。指令:python -I script.py(隔離模式,確保與不可信檔案同目錄的腳本不會被劫持)以及 blender -b -P script.py -- args。檢查輸出中是否有 Traceback/Error,並確認檔案存在。長時間任務:使用 nohup ... & 執行並輪詢日誌;僅按 PID 停止進程。下載的檔案與解壓縮的壓縮檔為不可信資料:將其各自放入新建的空資料夾中,並將你的腳本存放在其他地方。

學到的規則

  • 平坦、不可平鋪的掃描 -> 球體 = 兩個半球(各自為完整高度的圓盤,在赤道處交叉淡入),圖集 2:1。可平鋪的集使用帶有環繞取樣的半球投影。
  • 保留原始外觀(乾燥磨砂岩石:粗糙度 0.8-1.0、鏡面反射約 0.2;位移幅度小)。若原始粗糙度已為磨砂質感,則直接使用。
  • 若以程序化方式模仿照片掃描,看起來會像拼貼:僅在使用者明確選擇時使用,並標註「風格化,非掃描」。
  • 外觀系列:中性中灰色無縫漸層 + 中性/冷色主光(參見 pbr-lookdev-render)。暖色背景會改變材質顏色。
  • 誠實回報:說明你檢查了什麼、未檢查什麼,哪些是單純重新取樣、哪些是 AI 細節,以及弱點。
  • 尊重來源授權:許多免費素材包可使用但不可重新散佈;衍生的貼圖(包括重新拼接或重新著色的)仍視為衍生作品,因此需標註來源。
  • 按專案系列記錄經驗教訓。

投影方法(決定後不得偏離)

  • 三平面 / 盒狀投影已被拒絕(圖層在三個方向上交叉,看起來像團塊)。永遠不要用於球體或立方體,即使作為快速選項也不可行。
  • 球體 = 從極點開始的半球投影(貼圖的兩個圓盤,可平鋪貼圖使用環繞取樣,在赤道處交叉淡入;對於不可平鋪的掃描則使用雙半球圖集)。
  • 立方體 = 貼圖的逐面 UV 裁切,沿面法線的真實浮雕在邊緣淡出。
  • 平台/平面 = 標準 UV(平鋪 1x1),無裙邊。

為何渲染看起來像「團塊」而非參考圖 - 按此順序診斷

  1. 球體上的紋理比例。 貼圖必須以約 1 個瓷磚覆蓋球體(大塊面/台地約 5-8 個可見),不可重複 5 次。立方體:每個面自行裁切,縮放約為貼圖的 0.5。
  2. 反照率中的烘焙陰影。 測量 corr(反照率亮度, 高度):> 0.7 表示空腔/AO 已繪入顏色,而渲染器會疊加 AO + 裂縫 + 真實陰影 -> 雙重陰影,形體「髒污」。解除烘焙(將反照率除以模糊後的高度/AO 項)或降低 AO 混合。參考球體顏色應幾乎平坦。
  3. 懸崖被壓平成斜坡 = 融化的蠟。 過度限制斜率的法線高度會消除銳利的台地。優先使用階梯式高度 + 邊緣加密網格;僅限制真正的尖刺(中位數 + 開口),而非大片區塊。
  4. 赤道交叉淡入 可能產生透鏡狀暗色間隙;旋轉球體檢查。
  5. 斑塊。 平坦光滑的「泥巴」斑塊來自 AI 來源(鬼影融合區域)或過強的灰塵遮罩:將灰塵設為 0,並在法線貼圖之上添加細微噪點顆粒凹凸(約 0.5)。
  6. 顏色。 透過乘法向參考圖分級(例如暖色砂岩為 0.80,0.66,0.52);中性光會使材質顏色變為粉紅/米色。 在長時間渲染之前,務必將參考圖與同樣角度的 1280x720 測試圖並排比較比例、顏色、形體。

浮雕規則:薄翅

幾何上的薄如紙片的脊/翅來自高度圖中 1-3 像素寬的脊線,而非深度或顏色。請勿僅降低深度。透過尺寸裁切:對高度進行灰色開口處理(2K 貼圖上約 5 像素圓盤)+ 3 像素模糊,僅限幾何;細微細節保留在法線貼圖/反照率中。務必檢查近距離裁切,而非僅看整個球體。

立方體配方(可平鋪材質)

6 個面 x 700x700 網格、逐面 UV 裁切(u 跨度 = H/W x ZOOM、v 跨度 = ZOOM、6 個偏移值)、沿面法線的浮雕在邊緣淡出至 0、從面角向量檢查纏繞方向(檢查每個面的向外點積;頂面/底面曾反轉過)、從 UV 取得的切線法線貼圖、K 約 0.08。圖層不會跨越邊緣(因為是不同的裁切)-告知使用者。

工具陷阱

  • Blender 的 Python 沒有 scipy:在 Blender 腳本中使用 numpy,僅在外部 Python 環境中使用 scipy。
  • bpy.ops.mesh.primitive_uv_sphere_add 在頂點數超過約 150 萬時極慢:使用 numpy 建立網格。
  • 切割逐面 UV 陣列時使用局部索引(q - base),而非全域索引。
  • PIL 會將 16 位元 RGB PNG 讀取為 8 位元 / 被裁切:請使用 OpenCV 的 IMREAD_UNCHANGED。透過 PIL 的 convert('RGB') 預覽 16 位元灰階 PNG 會顯示為純白色。
  • OpenCV 的高斯模糊不支援 BORDER_WRAP;對於可平鋪貼圖,請使用 scipy.ndimage.gaussian_filter(mode='wrap')。
  • pkill -f name / pgrep -f name | xargs kill 可能匹配並終止你的 shell 本身(退出碼 144);請按 PID 終止。
  • 從物理單位的高度導出法線;比例過大約 100 倍會產生暗色斑點雜訊。
  • 使用重複的檔案路徑讀取渲染結果時,可能顯示快取的舊影像;請寫入新名稱。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能