---
원문: https://discuss.pytorch.kr/t/img2obj-three-js-codex/11724
제목: "img2obj: 참조 이미지를 애니메이션 가능한 Three.js 절차적 코드로 재구성하는 Codex 플러그인"
창작제목: "사진 한 장이 코드가 된다 — 3D 자산을 diff로 관리하는 시대"
정리: 다비(davi.kr)
정리일: 2026-09-01
문서목적: img2obj 플러그인의 구조·강점·한계를 중학생 수준으로 정리하고, 실제 도입 판단 기준을 제시
---

# 사진 한 장이 코드가 된다 — 3D 자산을 diff로 관리하는 시대

원문: <https://discuss.pytorch.kr/t/img2obj-three-js-codex/11724>
저장소: <https://github.com/vinhhien112/img2obj> (MIT, 별 1.6k / 포크 161)

---

## 쉬운 설명

웹사이트에 3D 물체를 올리려면 보통 **모델 파일(메시)**을 구해 옵니다. 이 파일은 사진처럼 통째로 저장된 덩어리라서 용량이 수십 MB에 달하고, "문이 열리게 해줘" 같은 수정을 하려면 3D 프로그램을 다시 열어야 하며, 무엇이 바뀌었는지 코드 리뷰로 확인할 수 없습니다.

**img2obj**는 이 문제를 반대로 풉니다. 참조 이미지 한 장을 넣으면 픽셀을 메시로 바꾸는 게 아니라, 먼저 물체의 부품 구조·모양·재질을 글로 적은 설계서(`ObjectSculptSpec`)를 만들고, 그 설계서로부터 **Three.js 3D를 코드로 그려내는 TypeScript 함수**를 생성합니다. 결과물이 전부 코드이므로 회전축(Pivot)과 부착점(Socket)을 처음부터 심어둘 수 있고, 숫자 하나만 고쳐도 Git diff로 남습니다. OpenAI **Codex**용 플러그인 형태로 동작합니다.

---

## 활용 방법

가장 쉬운 진입 경로는 **저장소를 받아 Codex 로컬 플러그인으로 불러오는 것**입니다. Python 3.10 이상과 Three.js 브라우저 프로젝트만 준비하십시오.

```bash
git clone https://github.com/vinhhien112/img2obj.git
cd img2obj
python3 scripts/sculpt.py --help
```

이후 Codex에 물체 이미지를 첨부하고 자연어로 지시하십시오.

- 기본 요청: "Use img2obj to turn the object in this image into a procedural Three.js model built entirely with code."
- 움직임 요청: 원하는 동작과 **원하지 않는 범위**를 함께 적으십시오. 예) "Make the visible hatch open on its hinge. Do not add physics or destruction"
- 명령줄 4단계: `init`(설계서 생성) → `context` → `validate`(단계별 검사) → `generate`(코드 + 래퍼 파일 분리 출력)

생성 파일과 손으로 고칠 래퍼 파일이 분리되므로, **재생성이 직접 수정한 코드를 덮지 않습니다.** 라이브 데모로 결과 수준을 먼저 확인하십시오: [누선(Tower Ship)](https://3dship.harrysoftware.com), [오래된 가을 나무](https://tree.harrysoftware.com/)

---

## 전문가 의견 (사실 기반)

- **차별점은 속도가 아니라 게이트입니다.** 블록아웃 → 형태 → 룩데브 → 인터랙션 4단계를 밟으며, 각 단계마다 브라우저 렌더와 원본을 나란히 비교하고 **사용자 승인 없이는 다음 단계로 올라가지 않습니다.**
- **평가는 2층 구조입니다.** 전체 정체성(실루엣·비율·카메라·재질·조명)과 핵심 특징(나무의 가지 분기점, 차량의 헤드라이트 등)을 따로 채점하며, **전체 점수가 높아도 핵심 특징 하나가 기준 미달이면 통과가 거부됩니다.** `reference-fidelity` 프로파일의 목표 점수는 0.85입니다.
- **지원하지 않는 지오메트리는 조용히 박스로 대체하지 않고 거부합니다.** 로컬 스크립트는 증거만 정리할 뿐, 유사도 판정은 AI 비전 검수가 담당합니다.
- **한계는 명확합니다.** 포토그래메트리, 정확한 메시 추출, 이미지 1장에서의 프로덕션급 지오메트리 보장은 부적합 항목입니다. 이미지 한 장으로는 가려진 면과 실측 치수를 복원할 수 없고, 투명 유리·연기·액체·털·얇은 천·인물 닮음은 참조를 더 넣거나 목표 정밀도를 낮춰야 합니다.
- **비교군:** img2threejs, 3DCellForge, image-blaster, CADAM 등 같은 계열이 이미 존재합니다. img2obj의 선택은 "빠른 한 방"이 아니라 "검수하며 올라가기"입니다. 사람이 매 단계 승인해야 하므로 **자산 수백 개를 무인 대량 생산하는 용도와는 맞지 않습니다.**

---

## Bottom Line

Three.js로 웹 씬을 만들고 있고, 여닫히거나 회전하는 인터랙티브 소품이 필요하다면 지금 당장 저장소를 클론하고 참조 이미지 한 장으로 첫 `init`을 실행하십시오. MIT 라이선스라 상업적 사용에 제약이 없고, Codex를 이미 쓰고 있다면 도입 비용은 사실상 `git clone` 한 줄입니다. 반대로 실측 치수와 실사 수준 닮음이 필요한 팀이라면 이 도구를 후보에서 제외하고 기존 파이프라인을 유지하십시오.

---

*본 요약은 **다비(davi.kr)** 가 정리했습니다. — <https://davi.kr/>*
