기능적이고 관절이 있는 3D 객체를 생성하는 도구를 만들었습니다. 깃허브에 공개했고, 대부분의 LLM과 호환됩니다.
A tool I built to generate 3D objects with functional, articulated parts. It's on github, and is mostly LLM-agnostic.
핵심 요약
LLM을 활용해 뭉툭한 3D 모델이 아닌, 관절이 움직이는 기능적 3D 객체를 생성하는 파이프라인을 개발했습니다.
- 3D 생성 방식 — 픽셀이나 포인트 클라우드 대신 Blender 파이썬 코드를 생성하여 구조화된 3D 객체를 만듦.
- 기능적 관절 — 힌지나 소켓 구조를 포함해 실제 작동하는 부품 단위의 3D 모델을 생성함.
- LLM 활용 — 특정 모델에 종속되지 않으며, Blender의 씬 그래프를 직접 제어하는 방식으로 작동함.
- 오픈소스 공개 — 프론트엔드 코드를 깃허브에 공개하여 누구나 직접 호스팅하고 테스트할 수 있음.
이 영상은 제 파이프라인이 어떻게 분리된 기능적 부품들로 구성된 3D 세탁기를 생성하는지 보여줍니다(단일 덩어리 3D 모델이 아닙니다). 내부 조립품이 실제로 돌아가거나 회전할 수 있도록 힌지/소켓 관절도 포함되어 있습니다.
제가 해결하려는 문제는 이렇습니다. 현재 거의 모든 텍스트-3D 파이프라인은 확산 모델(또는 유사 모델) 가중치를 사용해 메쉬 덩어리를 만들어낼 뿐입니다. 생성된 총의 조준경을 바꾸고 싶으신가요? 프롬프트에서 단어 하나만 바꿔도 모델은 총에 '부품'이 있다는 개념 자체가 없기 때문에 전체 혹은 대부분을 처음부터 다시 생성합니다. 이 시스템들에게는 그저 구분되지 않는 포인트 클라우드일 뿐이죠.
저는 이걸 바꾸고 싶었습니다. 제 파이프라인은 이미지 생성기가 아닌, 구조화된 코드 컴파일러로서 LLM을 사용합니다. 이 모델은 씬 그래프의 특정 노드를 타겟팅하는 네이티브 Blender 파이썬 코드 블록을 작성합니다.
핵심은 모든 것이 픽셀이나 포인트 클라우드 확산 방식이 아닌, Blender의 실제 씬 그래프 구조를 통해 컴파일된다는 점입니다. 최종 결과물은 변환 노드와 작동하는 피벗 축이 보존된 깔끔한 다중 부품 GLB 파일로 내보내집니다.
스택:
프론트엔드는 브라우저 내 렌더링과 노드 조작을 위해 Three.js 뷰포트 하네스를 갖춘 Flutter로 구성되었습니다. 기본적으로 제가 호스팅하는 API를 호출하지만, 셀프 호스팅이 가능하도록 모델 독립적으로 만들었습니다.
프론트엔드 저장소는 오픈소스입니다: https://github.com/RareSense/Nova3D
또한 나쁜 소식도 있습니다. 로컬 모델들이 점점 발전하고는 있지만, 복잡한 변환 작업에서 Blender 내부 행렬 수학 함수를 여전히 꽤 심하게 환각합니다. 실제로 물체를 4차원으로 회전시키는 '올바르게 보이는' 코드를 디버깅하느라 너무 많은 시간을 보냈습니다. 파이프라인 코드 자체는 LLM에 독립적이지만, 최상의 결과를 얻으려면 Gemini를 BYOK(본인 API 키 사용)로 시도해 보세요. 저보다 똑똑한 분들과 협업해서 훌륭한 오픈소스 모델로 이 작업을 완성하고 싶습니다. 저는 혼자서 시도했다가 실패했거든요.
또한 3D 생성 맥락에서 프롬프트-투-코드 파이프라인을 다루는 분들의 기술적인 피드백을 구합니다.
참고로, 재미있는 생성 예시들:
- 보스턴 다이내믹스 스타일의 로봇 개: https://imgur.com/a/CqMYgrF
- 전자레인지: https://imgur.com/a/hIqIJdr


