/img2threejs라고 부르기만 하면 된다.
hoainho/img2threejs · 툴링 Python 3.10+ (외부 의존성 0) · 산출물 TypeScript + Three.js · 버전 v1.3.0 · forge 엔진 약 12,000줄 · 문서(grimoire) 15편 · 테스트 20스위트 · 라이선스 Apache-2.0 · 저자 Hoài Nhớ(hoainho) · shallow clone 소스 직접 분석)
이미지 한 장을 3D로 바꾸는 도구는 이미 많다. 대부분은 신경망(neural network)이 사진을 삼켜 메시(mesh) — 수천~수십만 개의 삼각형 덩어리 — 를 통째로 토해낸다. 결과는 그럴듯해 보이지만, 열어보면 정체를 알 수 없는 폴리곤 수프다. 어느 삼각형이 손잡이인지 바퀴인지 코드가 알지 못하고, 애니메이션을 붙이려면 사람이 처음부터 뼈대를 다시 심어야 한다.
기존 AI 3D 도구는 "석고 본을 떠서 복제하는 것"에 가깝다 — 겉모양은 같지만 속은 통짜라 손댈 수가 없다. img2threejs는 "숙련된 모델러에게 참조 사진을 주는 것"이다. 그는 상자·원기둥·회전체 같은 기본 도형을 조립해 물체를 짓고, 각 부품에 "이건 손잡이", "이건 경첩" 같은 이름과 관절을 붙인다. 그래서 결과물이 곧바로 움직일 준비가 된(animation-ready) 상태로 나온다.
img2threejs가 하는 일은 명확하다. 참조 이미지를 받아 → 물체를 뜯어보고(intake) → 부품·재질·관절 설계도를 JSON으로 쓰고(spec) → 그 설계도로 Three.js 코드를 생성하고(build) → 렌더한 뒤 원본과 비교해 채점하고(review) → 점수가 모자라면 다시 설계도/코드를 고쳐 이 과정을 반복한다. 핵심은 "AI가 알아서 잘하겠지"에 맡기지 않고, 기계적으로 측정 가능한 관문을 매 단계에 세워둔 것이다.
SKILL.md + 스크립트 + 문서)로 되어 있고, 에이전트가 특정 작업을 만나면 그 지침과 도구를 불러 쓴다. img2threejs는 ~/.claude/skills/에 넣어두고 /img2threejs로 호출하는 스킬이다. 특정 회사 모델에 묶이지 않아 Codex·OpenCode 등에서도 동작한다(agent-agnostic).
이름은 img2threejs(image → three.js)이지만, 진짜 핵심어는 "reconstruction-by-code(코드에 의한 재구성)"다. 사진측량(photogrammetry)도, 메시 추출도, 아트 에셋 다운로드도 아니다. 사람이 읽고 고칠 수 있는 코드로 물체를 짓는다는 점이 이 도구의 정체성이자, 이 문서에서 배울 것의 전부를 관통하는 열쇠다.
2026년, "이미지 넣으면 3D 나옴" 서비스는 흔하다(Meshy, Tripo, Rodin 등). 그런데 다들 같은 약점을 공유한다 — 결과가 복불복이고, 왜 이렇게 나왔는지 설명이 안 되며, 나온 메시를 사람이 손보기 어렵다. img2threejs가 트렌딩에 오른 이유는 이 지점을 정면으로 공략하기 때문이다. "AI의 창의성"이 아니라 "엔지니어링의 규율"로 3D 품질 문제를 푼다.
이 프로젝트의 설계 철학이 통째로 이 한 문장에 담겨 있다. 검증·게이팅·패키징처럼 정답이 정해진 일은 전부 결정론적(deterministic) 파이썬 스크립트가 처리한다. 값비싼 LLM 토큰은 오직 "이 비교 시트를 보니 원본과 닮았는가? 통과/실패"라는 판단 한 곳에만 쓴다. 덕분에 토큰이 절약되고, 무엇보다 "운이 좋아서 통과"가 원천 차단된다 — 실루엣이 안 맞으면 모델이 아무리 "괜찮다"고 해도 스크립트가 거부한다.
신경망이 뱉은 .glb 메시는 열어봐도 사람이 이해할 수 없는 바이너리다. img2threejs의 결과는 TypeScript 팩토리 함수(createObjectNameModel(spec, options))와 JSON 설계도다. 즉 버전관리(git)에 올려 "어제 모델과 오늘 모델이 코드 몇 줄 달라졌는지"를 그대로 볼 수 있고, 부품 하나의 색을 바꾸고 싶으면 해당 줄만 고치면 된다. AI 산출물을 협업 가능한 자산으로 만든 것이다.
파이프라인 엔진(forge/)은 파이썬 표준 라이브러리만 쓴다. PNG를 읽고 쓰는 것도 struct+zlib로 직접, 색 차이 계산(CIEDE2000)도 순수 파이썬 구현이다. NumPy도, OpenCV도, PIL도, Playwright도 없다. requirements.txt에 아예 "NO third-party dependencies"라고 못박아 뒀다. 설치가 가볍고 어디서든 돌아가며, 공급망 보안 사고 위험도 없다.
재현 가능한 품질(결정론 게이트), 고칠 수 있는 산출물(코드+JSON), 부담 없는 설치(의존성 0), 그리고 곧바로 움직이는 결과물(관절·소켓 내장). 여기에 라이브 데모 갤러리로 "정말 되네"를 눈으로 보여주기까지 한다. "AI 3D는 장난감"이라는 인식을 "AI 3D도 엔지니어링이다"로 바꾸려는 시도가 트렌딩의 진짜 동력이다.
img2threejs를 처음 보면 헷갈린다. 파이썬 프로젝트인가, 타입스크립트 프로젝트인가? 답은 "둘 다이되, 역할이 다르다"이다. 파이썬은 공장의 기계(파이프라인 엔진)이고, 타입스크립트는 그 공장이 찍어내는 제품(3D 모델 코드)이다. 이 둘을 구분하는 순간 전체 그림이 선명해진다.
forge/, Python)"forge(대장간)"라는 이름 그대로, 물체를 제련하는 스크립트 뭉치다. 놀라운 점은 외부 라이브러리를 하나도 안 쓴다는 것.
| 계층 | 기술 | 역할 |
|---|---|---|
| 런타임 | Python 3.10+ (표준 라이브러리 only) | 파이프라인 전 단계를 서브프로세스로 실행 — 토큰을 거의 안 씀 |
| 이미지 I/O | struct + zlib | PNG를 직접 파싱·인코딩. PIL/OpenCV 없이 픽셀을 다룸 |
| 색 수학 | 순수 파이썬 CIEDE2000 | sRGB→CIELAB 변환 + 색차 계산(Sharma 테스트 검증)으로 "색이 얼마나 틀어졌나" 측정 |
| 이미지 지문 | pHash(퍼셉추얼 해시) | 원본과 렌더의 구조적 유사도를 해밍 거리로 비교 |
| 쓰는 stdlib | json·argparse·math·pathlib·subprocess·colorsys | 설계도 직렬화·인자 파싱·기하 계산 등 전부 기본 모듈로 |
| 테스트 | 순수 stdlib 20 스위트 | VLM 호출은 stub(가짜 함수)로 주입해 오프라인 검증 |
요즘 파이썬 이미지 도구는 "라이브러리 뷔페"를 차린다 — NumPy·PIL·OpenCV·scikit-image를 다 깔아야 겨우 돈다. img2threejs는 맨손으로 요리하는 백반집이다. PNG 디코딩부터 색차 공식까지 손으로 다 짰다. 무겁지 않고, 설치가 실패할 일이 없고, "이 숫자가 어디서 나왔는지"를 전부 코드로 추적할 수 있다.
공장이 찍어내는 제품은 순수 Three.js 코드다(래퍼 프레임워크 없음). 브라우저 WebGL 위에서 도는 THREE.Group 하나를 반환하는 팩토리 함수다.
| 요소 | 사용 기술 | 쓰임 |
|---|---|---|
| 기본 도형 | Box·Sphere·Cylinder·Cone·Torus 등 15종 | 물체를 이 프리미티브(primitive) 조합으로 표현 |
| 곡면·회전체 | ExtrudeGeometry·LatheGeometry·TubeGeometry | 병·그릇(회전체), 케이블(관), 압출 형상 생성 |
| 재질 | MeshPhysicalMaterial (PBR) | metalness·roughness·clearcoat·transmission으로 금속·유리·플라스틱 표현 |
| 반복 부품 | InstancedMesh | 톱니·나사·바퀴살을 단일 draw call로 — 성능 최적화 |
| 조명 | HemisphereLight 등 | 기본 3점 조명 셋업 내장 |
| 런타임 메타 | root.userData.sculptRuntime | 노드·소켓·콜라이더 맵을 노출해 애니메이션 준비 |
img2threejs 소스에는 OpenAI/Anthropic API 키도, 모델 호출 코드도 없다. 이미지를 "보는" 능력(VLM, Vision-Language Model)은 이 스킬을 실행하는 호스트 에이전트가 제공한다(Claude Code의 네이티브 이미지 리딩, 브라우저 MCP, 사용자 스크린샷 등). 스크립트 쪽 vlm_gate.py는 VLM을 주입형 콜러블(callable)로 받아, 그 판단을 결정론 규칙에 종속시켜 게이팅만 한다. 그래서 어떤 에이전트에 붙여도 동작하는 agent-agnostic 설계가 가능하다.
MeshPhysicalMaterial에 채워 넣는다. "역렌더링(inverse rendering)"이 아니라 근거 기반 추정이라, 신뢰도가 낮으면 아예 값을 안 쓴다.
img2threejs의 모든 것은 "어떻게 나쁜 결과를 코드 생성 전에 걸러내고, 나온 결과를 어떻게 자동으로 고칠 것인가"로 귀결된다. 그래서 파이프라인이 intake → spec → build → review 네 단계로 나뉘고, 각 단계 사이마다 게이트(관문)가 서 있다. 폴더 이름 접두사(stage1_~stage4_)가 그대로 이 순서를 보여준다.
물체를 한 번에 완성하지 않는다. orchestrate_passes.py가 정한 순서대로 패스(pass)를 하나씩 잠금 해제한다.
코드 생성기는 지금 열린 패스만 코드로 뽑는다. 미래 패스를 미리 요청하면 "이전 패스가 아직 리뷰를 통과 안 했다"며 실패시킨다. 매 반복마다 모델 전체를 다시 그리지 않으니 토큰이 절약되고, 큰 형태가 틀린 채로 디테일에 힘 빼는 낭비를 막는다. 반복 부품은 InstancedMesh 하나로 묶어 성능까지 챙긴다.
// 반복 부품(톱니·나사·바퀴살)을 InstancedMesh 하나 = draw call 하나로
const cluster = new THREE.InstancedMesh(geo, mat, count);
for (let i = 0; i < count; i++) {
/* 방사형/축 배치 행렬을 계산해서 */
cluster.setMatrixAt(i, _m);
}
핵심 중의 핵심. divine_eye.py는 토큰을 한 개도 안 쓰는 결정론 멀티시그널 채점기다. 두 층으로 작동한다.
여러 각도의 유사도 신호를 가중 평균해 최종 fidelity(충실도, 목표 0.85)를 낸다. 신호가 서로 크게 엇갈리면(spread > 0.35) "확신이 없다"고 보고 probe(추가 확인)로 보낸다.
| 신호 | 가중 | 무엇을 보나 |
|---|---|---|
| objectness | 1.5 | "같은 물체인가"(OSIM-lite) — 가장 강한 신호 |
| SSIM | 1.5 | 구조적 유사도(밝기·대비·구조) |
| proportion / pHash / edgeOverlap / tonalParity | 1.0 | 비율·지문·엣지 겹침·명암 일치 |
| blowoutParity / flatRegion | 0.8 | 과노출·평평한 영역 일치 |
| symmetry-parity | 0.5 | 좌우 대칭성 일치 |
| hueZoneParity / specularWash | 0 (관찰용) | "보라가 파랑으로 렌더됨" 같은 색 오류 탐지(아직 캘리브레이션 전) |
똑똑한 장치가 하나 있다. 사진과 절차적 렌더는 프레이밍이 달라 실루엣 IoU만으로 억울하게 탈락할 수 있다. 그래서 objectness가 "같은 물체(≥0.48)"라고 말하면, 확신에 찬 reject를 probe로 강등해 재확인 기회를 준다. 단, 자동 통과는 절대 안 시킨다 — 충실한 재구성을 살리되 기준은 안 낮춘다.
모델의 눈(VLM)이 개입하는 유일한 곳이 vlm_gate.py인데, 규칙이 엄격하다.
if hard_failures: # 규칙 1: HARD 게이트 실패 땐 VLM을 아예 호출조차 안 함
return {"verdict":"reject", "action":"refine-code", "ranVlm":False}
N번 샘플링해 중앙값 투표를 하고, 의견이 흩어지면(spread > 0.20) probe로 보낸다. 그리고 VLM은 기하학적 HARD 실패를 절대 통과시킬 수 없다. "모델이 좋다고 우겨서 넘어가는" 사고를 구조적으로 막은 것이다.
점수가 모자라면 고쳐서 다시 도는데, 자칫 영원히 돌 수 있다. correction_loop.py는 종료를 수학적으로 보장하는 우선순위 상태머신이다.
① 판단과 실행의 분리: "정답이 있는 일"(검증·측정·게이팅)은 결정론 스크립트, "취향·인지가 필요한 일"(닮았나?)만 LLM. 이 경계선을 명확히 그은 것이 재현성과 토큰 효율을 동시에 잡은 비결이다.
② HARD/SOFT 2단 게이트: 치명적 실패(실루엣·크기)는 평균으로 덮이지 않게 하드 컷으로, 나머지는 가중 앙상블로. "좋은 점수 몇 개로 나쁜 점수 하나를 가리는" 흔한 함정을 구조로 막았다.
③ 종료 보장 상태머신: 반복 최적화 루프에 HARD_CEILING을 최우선 안전장치로 둬, 어떤 입력에도 반드시 끝나게 했다. 자율 에이전트 루프를 짤 때 그대로 훔쳐 쓸 수 있는 패턴이다.
폴더 이름이 재밌다. 실행되는 스크립트는 forge(대장간)에, 그 스크립트가 기준으로 삼는 규칙 문서는 grimoire(마법서)에 나눠 담았다. "기계는 forge에서 만들고, 판단 기준은 grimoire에서 읽는다"는 구조다.
구조가 말해주는 이야기는 분명하다. 진짜 무게중심은 stage2_spec(설계도 검증 1912줄)과 stage4_review(채점)에 있다. "어떻게 그리느냐"(stage3_build)보다 "어떻게 나쁜 걸 걸러내느냐"에 코드가 훨씬 많이 쏠려 있다는 뜻이다. 이건 이 프로젝트의 정체성 — "생성"이 아니라 "품질 관리"가 본질 — 을 그대로 반영한다.
도자기 공방을 떠올리면 된다. 물레(build)에서 형태를 빚는 시간보다, 검수대(spec 검증 + review)에서 "이건 대칭이 틀어졌어", "유약 색이 안 맞아" 하며 깨고 다시 빚는 시간이 훨씬 길다. img2threejs의 코드 분포가 정확히 그 공방을 닮았다.
"3D 모델 = 무거운 메시"라는 통념을, generate_threejs_factory.py가 깬다. Box·Sphere·Lathe·Tube·Extrude 같은 기본 도형을 코드로 조립해 어떻게 복잡한 물체를 표현하는지, 반복 부품을 InstancedMesh로 어떻게 성능 최적화하는지를 실물 코드로 볼 수 있다. Three.js 지오메트리 API의 좋은 교재다.
요즘 AI 앱의 최대 난제는 "어디까지 LLM에 맡기고 어디부터 코드로 강제할까"다. img2threejs는 이 경계선의 모범 답안이다 — 측정 가능한 건 전부 스크립트, 인지가 필요한 판단만 모델. LLM 파이프라인을 짜는 개발자라면 vlm_gate.py의 "종속 계층" 설계 하나만으로도 배울 게 많다.
divine_eye.py는 라이브러리 없이 실루엣 IoU, SSIM, pHash, CIEDE2000 색차, objectness를 구현해 앙상블한다. "두 이미지가 얼마나 닮았나"를 숫자 하나로 만드는 컴퓨터 비전의 고전 기법들을, 순수 파이썬 구현으로 정독할 수 있다. 무거운 딥러닝 없이도 이런 측정이 가능하다는 걸 배운다.
"AI가 알아서 반복 개선"은 멋지지만, 실무에선 무한 루프·토큰 폭발이 공포다. correction_loop.py의 우선순위 상태머신(EMPTY→…→HARD_CEILING)은 "어떤 경우에도 반드시 끝난다"를 코드로 증명하는 법을 보여준다. 자율 에이전트를 안전하게 짜는 실전 패턴.
extract_pbr_evidence.py(834줄)는 사진에서 albedo·roughness·normal·AO를 추론하되, 신뢰도가 0.7 미만이면 값을 거부한다. "AI가 자신 없으면 조용히 넘어가지 말고 명시적으로 거부하라"는 태도, 그리고 MeshPhysicalMaterial 계수로 재질을 표현하는 실전 지식을 얻는다.
단일 이미지로는 숨은 면과 정확한 치수를 보장할 수 없다. 보이는 면을 미러링해 추론하므로 결과는 "근사적/양식화(stylized)"이며, 특히 캐릭터는 포토리얼이 아니라 스타일라이즈드 재구성이다. 저자는 문서 곳곳에서 "단일 이미지로 100% 닮음은 불가능"임을 반복해 명시한다. "이 이미지로는 요청한 충실도에 도달 불가"라는 결론조차 유효한 결과로 취급하는 정직함이 오히려 이 도구의 신뢰도를 높인다.
| 항목 | 요구사항 |
|---|---|
| 파이프라인 실행 | Python 3.10 이상 · 외부 의존성 0(표준 라이브러리만) |
| 호스트 에이전트 | 이미지를 볼 수 있는 VLM 지원 에이전트 — Claude Code · Codex · OpenCode 등 |
| 설치 | ~/.claude/skills/img2threejs에 clone 후 /img2threejs로 호출 |
| 산출물 확인 | Three.js 코드를 렌더할 브라우저(WebGL) — 뷰어/showcase에서 확인 |
| 입력 | 물체·캐릭터가 담긴 참조 이미지 1장(선명할수록 좋음) |
| 토큰 예산(추정) | 물체 1개 풀 재구성 ~80k–180k 토큰 · 캐릭터 ~150k–350k(사이클 수에 비례) |
| 라이선스 | Apache-2.0 — 상업적 이용·수정·배포 자유(특허 조항 포함) |
주목할 점은 "무거움의 위치"다. 엔진 자체는 서브프로세스라 토큰을 거의 안 쓴다. 비용은 전부 모델이 이미지를 보고 판단하는 render-review 루프(패스당 비교 시트 ~2–3k 토큰, 5–8 사이클)에서 발생한다. 그래서 "패스를 잠그고 현재 것만 생성", "HARD 게이트로 조기 탈락", "VLM은 필요할 때만 호출" 같은 설계가 전부 토큰 절감 장치로 맞물려 있다. 아키텍처와 비용 구조가 한 몸인 셈이다.
~/.claude/skills/img2threejs에 저장소를 clone하고, Claude Code에서 단순한 물체(머그컵·주사위·망치 같은 hard-surface)를 찍은 사진 한 장으로 /img2threejs를 돌려본다. 파이프라인이 intake→spec→build→review를 거쳐 Three.js 코드를 뽑아내는 전 과정을 눈으로 따라가는 게 목표. 나온 .ts를 브라우저에서 렌더해 원본과 비교해 본다.
산출된 ObjectSculptSpec(JSON)을 열어 components·materials·sockets가 어떻게 선언됐는지, 그리고 그게 .ts 코드의 어느 THREE.BoxGeometry/LatheGeometry로 옮겨졌는지 1:1로 대응시켜 본다. "설계도 → 코드" 변환을 이해하면 이 도구의 절반을 이해한 것.
forge/stage4_review/divine_eye.py를 원본 이미지 + 렌더 이미지 두 장에 직접 돌려(--reference … --render … --json) silhouette IoU·SSIM·pHash·fidelity 숫자를 확인한다. 렌더를 일부러 틀어놓고 점수가 어떻게 떨어지는지, 어느 신호가 먼저 반응하는지 실험. "이미지 유사도를 수치화하는 법"을 손으로 익힌다.
grimoire/build/geometry_patterns.md의 물체종류→프리미티브 매핑 규칙을 읽고, generate_threejs_factory.py가 지원하는 15종 프리미티브 중 하나(예: curve-sweep)를 골라 실제로 어떤 Three.js 코드로 emit되는지 추적한다. 그런 다음 간단한 새 형상 헬퍼를 하나 얹어 본다. 코드 생성기(codegen)를 읽고 고치는 훈련.
correction_loop.py의 우선순위 상태머신(EMPTY→SUCCESS→REPEATED_DEFECT→OSCILLATION→PLATEAU→HARD_CEILING)을 뜯어, "측정 가능한 메트릭을 반복 개선하되 반드시 종료되는" 범용 루프로 추상화해 본다. 그리고 자신의 다른 최적화 문제(프롬프트 튜닝·하이퍼파라미터 탐색 등)에 붙여 무한 루프 없이 자동 개선되게 만든다. 이 레포에서 가장 재사용 가치가 큰 패턴.
| 주차 | 주제 | 학습 내용 |
|---|---|---|
| 1주차 | Three.js 기초 | 씬·카메라·렌더러 / 지오메트리(Box·Sphere·Lathe·Tube·Extrude) / MeshPhysicalMaterial(PBR) / InstancedMesh. 도구: three.js 공식 문서 + editor |
| 2주차 | 컴퓨터 비전 유사도 | 실루엣 IoU / SSIM / 퍼셉추얼 해시(pHash) / 색공간(sRGB·CIELAB)과 CIEDE2000. divine_eye.py·color_metrics.py 정독 |
| 3주차 | AI 파이프라인 설계 | 결정론 게이트 vs LLM 판단 분리 / 주입형 콜러블로 VLM 종속시키기 / HARD·SOFT 2단 게이트 / 종료 보장 상태머신. vlm_gate.py·correction_loop.py 분석 |
| 4주차 | PBR·리깅·캐릭터 | albedo·roughness·normal·AO 추론 / de-lighting / 카메라 포즈 추정 / 소켓·콜라이더·관절(action_rigging) / SMPL-X·FLAME 개념. extract_pbr_evidence.py·grimoire/readiness/ |
이 순서를 밟으면 img2threejs는 단순한 "AI 3D 생성기"가 아니라 3D 그래픽스·컴퓨터 비전·AI 시스템 설계를 잇는 살아있는 교과서가 된다. 각 주차 개념이 정확히 어느 소스 파일에 구현돼 있어, "이론 → 실제 코드" 왕복 학습이 가능하다.
| 용어 | 의미 |
|---|---|
| reconstruction-by-code | 메시 추출·스캔이 아니라 코드를 작성해 물체를 재구성하는 것. 이 도구의 정체성 |
| 스킬(skill) | AI 에이전트에 붙이는 확장 기능 팩. SKILL.md+스크립트+문서 폴더 하나 |
| agent-agnostic | 특정 회사 모델에 안 묶임. Claude·Codex·OpenCode 어디서든 동작 |
| procedural(절차적) | 기본 도형과 규칙(코드)으로 형태를 생성. 결정론 시드로 재현 가능 |
| primitive(프리미티브) | Box·Sphere·Cylinder 등 기본 도형. 이들을 조립해 물체를 만듦 |
| ObjectSculptSpec | 부품·재질·소켓을 선언한 JSON 설계도. 코드 생성의 입력 |
| pass(패스) | 빌드 단계(blockout→…→optimization). 이전 패스 통과해야 다음이 열림 |
| Divine Eye | 토큰 0의 결정론 채점기. 여러 유사도 신호를 앙상블해 fidelity 산출 |
| silhouette IoU | 원본과 렌더의 외곽선 겹침 비율. 0.85 미만이면 HARD 탈락 |
| SSIM | 구조적 유사도 지수. 밝기·대비·구조를 함께 비교 |
| pHash | 퍼셉추얼 해시. 이미지를 짧은 지문으로 만들어 유사도 비교 |
| CIEDE2000 | 사람 눈에 맞춘 색차(色差) 공식. "색이 얼마나 틀어졌나" 측정 |
| objectness | "이게 같은 물체인가"를 보는 신호(OSIM-lite). 앙상블 최강 가중 |
| fidelity(충실도) | SOFT 신호 가중 평균으로 낸 최종 닮음 점수(목표 0.85) |
| VLM | Vision-Language Model. 이미지를 보고 판단하는 모델(호스트가 제공) |
| probe | 확신이 없을 때(신호가 엇갈릴 때) 추가 확인으로 보내는 판정 |
| correction loop | 점수 미달 시 spec/코드를 고쳐 재시도하는 루프. 종료 보장 |
| PBR | 물리 기반 렌더링. metalness·roughness 등 물리 계수로 재질 표현 |
| InstancedMesh | 같은 형상을 여러 개 그릴 때 draw call 하나로 묶는 최적화 |
| socket / rig | 부품에 붙는 부착점·관절. 애니메이션 준비성을 만드는 요소 |
SKILL.md(스킬 매니페스트·파이프라인 지침) · README.md(사용법) · docs/UPGRADE_PLAN.md(기술 스펙) · docs/TOKEN_COST.md(토큰 비용 모델)forge/stage4_review/divine_eye.py(결정론 채점) · vlm_gate.py(VLM 종속 게이트) · correction_loop.py(종료 보장 루프) · forge/stage3_build/generate_threejs_factory.py(코드 생성기) · forge/stage2_spec/validate_sculpt_spec.py(strict-quality 검증)build/geometry_patterns.md(프리미티브 선택) · readiness/action_rigging.md(관절·소켓) · intake/surface_topology.md(위상 분류)