Community이미지github.com

pbr-재질-파이프라인

사용자가 제공한 PBR 텍스처 세트(ZIP, 스캔, 절차적)를 표준 결과물(볼 및 평면 스틸 이미지, .blend 씬, 필요시 GLB, 턴테이블, 텍스처 시트)로 변환하는 전체 워크플로우입니다. 코디네이터와 전문 하위 에이전트가 협업하여 처리합니다.

pbr-재질-파이프라인란 무엇인가요?

이 스킬은 PBR 재질 텍스처 세트를 표준 결과물로 변환하는 완전한 워크플로우를 제공합니다. '장면 평소처럼 구성', '새 텍스처 프로젝트', '맵 조립'과 같은 요청을 처리하는 데 적합합니다. 코디네이터 에이전트가 작업을 분할하고, 각 전문 하위 에이전트(pbr-maps-prep, pbr-material, pbr-geometry-bake, pbr-render 등)가 맵 검증, 지오메트리 베이킹, 렌더링, 레이아웃을 담당합니다. 결과물로 볼 및 평면 스틸 이미지, 모든 단계의 .blend 씬 파일, 텍스처 시트가 생성되며, 사용자의 선택에 따라 GLB와 턴테이블 MP4도 제공됩니다. 이 스킬은 특히 최종 렌더링 전에 각 단계별로 씬을 검증하고, GLB 내보내기는 최종 단계에서만 수행하며, 중복 셰이딩과 같은 일반적인 렌더링 문제를 진단하고 수정하는 규칙을 포함합니다.

지원 대상~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에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

PBR 재질 파이프라인 (코디네이터 + 하위 에이전트)

표준 결과물은 볼 및 평면 (둘 중 하나만은 안 됨)입니다: 스틸 이미지(ball, ball_equator, plane, closeup), 모든 단계에서 저장된 .blend 씬, 텍스처 시트. .glb는 사용자가 마지막에 명시적으로 요청한 경우에만 내보내며, 턴테이블 MP4는 요청 시 제공합니다.

프로세스 규칙 (항상 적용)

  1. 시작하기 전에 사용자에게 한 번 질문: "각 단계 후에 Blender 씬(.blend)을 저장하여 직접 과정을 확인할 수 있도록 하시겠습니까? (권장: 예)". '예'인 경우: 모든 단계(맵, 지오메트리, 릴리프, 컬러, 추가 요소) 후에 models/<proj>/<proj>_stageN_<name>.blend를 저장하고, 헤드리스로 다시 로드하여 누락된 이미지가 없는지 확인한 후, 무거운 렌더링 전에 사용자에게 경로를 알려줍니다. 중요한 단계에서는 사용자의 피드백을 기다립니다.
  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텍스처 시트, 소셜 스레드, 요약 md포스터, 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/ (헤드리스 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 디테일의 차이, 약점을 명시합니다.
  • 소스 라이선스 존중: 많은 무료 팩은 사용할 수 있지만 재배포할 수는 없습니다. 파생 맵(다시 퀼팅되거나 다시 채색된 맵 포함)은 여전히 파생물로 간주되므로 출처를 표시해야 합니다.
  • 프로젝트 제품군별로 교훈을 저장합니다.

투영 방법 (결정 사항 - 이탈 금지)

  • 트리플라너 / 박스 투영은 거부됨 (레이어가 3방향으로 교차하여 덩어리로 읽힘). 볼이나 큐브에 절대 사용하지 말 것, 빠른 옵션으로도 사용 금지.
  • 볼 = 극에서 반구 투영 (맵의 두 디스크, 타일링 가능한 맵은 랩 샘플링, 적도에서 크로스페이드; 타일링 불가능한 스캔은 이중 반구 아틀라스).
  • 큐브 = 면별 UV 크롭 맵, 가장자리에서 희미해지는 면 법선을 따른 실제 릴리프.
  • 고원/평면 = 일반 UV (타일 1x1), 스커트 없음.

렌더링이 레퍼런스 대신 '덩어리'처럼 보이는 이유 - 다음 순서로 진단

  1. 볼의 텍스처 스케일. 맵은 ~1 타일로 볼을 덮어야 함 (큰 판/선반, 5-8개 보임), 5x 반복 금지. 큐브: 각 면 = 자체 크롭, 줌 ~맵의 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-3px 너비 능선에서 비롯됩니다. 깊이를 낮추지 마십시오. 크기별로 잘라냅니다: 높이의 회색 오프닝(2K 맵에서 약 5px 디스크) + 지오메트리만을 위한 3px 블러; 미세 디테일은 노말 맵/알베도에 유지됩니다. 항상 전체 볼뿐만 아니라 클로즈업 크롭을 확인하십시오.

큐브 레시피 (타일링 가능한 재질)

6개 면 x 700x700 그리드, 면별 UV 크롭(u 범위 = H/W x ZOOM, v 범위 = ZOOM, 6개 오프셋), 면 법선을 따른 릴리프가 가장자리에서 0으로 희미해짐, 면 코너 벡터에서 와인딩 확인(면별 외부 도트 확인; 상단/하단은 한 번 반전됨), UV의 탄젠트 노말 맵, K ~0.08. 레이어는 가장자리에서 연속되지 않음(다른 크롭) - 사용자에게 알려야 함.

도구 함정

  • Blender의 Python에는 scipy가 없음: Blender 스크립트 내에서는 numpy를 사용하고, scipy는 외부 Python 환경에서만 사용.
  • 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은 자신의 셸과 일치하여 종료할 수 있음(exit 144): PID로 종료.
  • 물리적 단위의 높이에서 노말 파생: 약 100배 너무 큰 스케일은 어둡고 얼룩덜룩한 노이즈를 제공.
  • 재사용된 파일 경로로 렌더링을 읽으면 캐시된 이전 이미지가 표시될 수 있음: 새 이름으로 작성.

Individual skills in this repo

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

관련 스킬