일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 3d 재구성
- AI 기술
- 강화 학습
- 다국어 지원
- 시간적 일관성
- 휴머노이드 로봇
- 우분투
- 오픈AI
- 티스토리챌린지
- 딥러닝
- 코딩
- PYTHON
- OpenCV
- 확산 모델
- LORA
- 일론 머스크
- AI
- 오블완
- LLM
- 메타
- 트랜스포머
- OpenAI
- 생성형AI
- 오픈소스
- ubuntu
- gradio
- 인공지능
- 생성형 AI
- tts
- 실시간 렌더링
- Today
- Total
AI 탐구노트
MIDI를 이용한 3D 객체 생성 테스트 본문

3D 프린터를 활용하면 자신만의 굿즈를 직접 제작할 수 있습니다. 하지만 일반적인 3D 모델링 소프트웨어를 사용하려면 전문적인 지식이 필요하고, 처음 시작하는 사람들에게는 진입 장벽이 높습니다. 그렇다면 이미지 한 장만으로 3D 모델을 만들 수 있다면 어떨까요?
최근 MIDI (Multi-Instance Diffusion for Single Image to 3D Scene Generation)라는 강력한 AI 모델이 공개되었습니다. MIDI는 단일 이미지를 입력으로 받아 3D 장면을 자동으로 생성할 수 있으며, 특히 여러 개의 객체가 포함된 복잡한 장면도 자연스럽게 복원할 수 있습니다. 이 기술과 관련된 내용은 이전 글에서 소개된 바 있습니다.
2025.03.12 - [AI 기술] - MIDI: 단일 이미지에서 3D 장면 생성을 위한 다중 인스턴스 확산 모델
이번 글에서는 MIDI의 오픈소스 코드를 활용하여 굿즈(예: 캐릭터 피규어, 로고, 엠블럼 등) 이미지를 기반으로 3D 모델을 생성하는 방법을 테스트 해 보겠습니다. 나중에 시간적인 여유가 된다면 이렇게 만들어진 모델을 STEP 파일로 변환해서 3D 프린터로 출력하는 과정까지 추가로 해 보고 결과도 올릴 생각입니다.
MIDI를 이용하면 어떤 점이 좋은가요?
3D 프린터로 모델을 출력하려면 우선 3D 모델링을 해야 합니다. 이를 위해 CAD 도구나 블렌더, 퓨전 360 등 다양한 도구들이 사용될 수 있겠죠. 하지만 본인이 그런 분야의 전문가가 아니라면 어떻게 될까요? 인터넷 상에서 내가 원하는 것과 동일한 모델의 파일을 찾아야겠죠. 현실은 거의 찾기 힘들다~ 입니다. 직접 만들 수도 찾을 수도 없으면 흠... 뭔가를 해 보려고 해도 할 수 없게 되겠죠.
MIDI를 활용한 3D 모델 생성 과정
MIDI의 오픈소스 코드를 실행하여 굿즈 이미지를 3D 모델로 변환하는 과정을 설명하면 다음과 같습니다.
1) MIDI 코드 다운로드 및 설치
우선, MIDI의 공식 GitHub 저장소를 클론(clone)하고 필요 패키지를 설치합니다.
$ git clone git clone https://github.com/VAST-AI-Research/MIDI-3D.git
$ cd MIDI-3D.git
$ pip install -r requirements.txt
2) 테스트할 굿즈 이미지 준비
캐릭터 가운데 잘 알려진 것이나, 변환 후 3D 프린터로 출력할 때 어려움이 없어 보니는 것으로 선택해 봅니다. 실제 제품화를 할 생각이 아니고 단순한 1회성 테스트로 말이죠.
Mask 생성과 3D 생성 작업은 아주 잘 끝났습니다. 테스트에 사용해 본 사진은 제가 좋아하는 제주 느낌이 물씬 풍기는 것으로 해봤습니다. 몰랑과 제주 콜라보를 한 것인지 모르겠지만 꽤나 귀엽습니다.
몰랑 랜덤피규어 : 제주에디션
몰랑샵
www.molangshop.co.kr
3) Gradio 앱 실행
아무래도 CLI로 하는 것보다는 GUI 기반으로 하는 것이 편하겠죠. gradio_demo를 실행합니다.
$ python gradio_demmo.py
4)GPU VRAM 요구사항은?
GPU 메모리 사용량은 과연 얼마나 될까? 돌려보니 생각보다 많은 GPU 메모리를 요구합니다. 한번에 여러 개의 캐릭터에 대해 처리해서 그런지 생각보다 사용량이 높습니다. 예를 들어 예시로 한 피규어 6개가 포함된 이미지 처리 때 19GB 가량이 소요되었습니다.

5) 생성 결과물
Gradio 앱 실행 시 사용한 이미지에서, 대상이 될 객체의 바운딩 박스를 지정합니다. 예시 굿즈 이미지에서는 6개의 캐릭터가 있습니다. 이후 Mask를 자동으로 생성하고 이것을 기반으로 glb 포맷의 3D 모델을 생성합니다.
생성 결과물은 다음과 같습니다. 이미지의 전면 부분을 이용해 생성되므로 실제 뒷면은 원본과는 달리 나올 수도 있습니다. 하지만, 그 정도야... 약간 손을 보면 되므로 문제 없어 보입니다.

6) GLB 파일 변환
다운받은 GLB 파일을 3D 프린팅을 위한 STEP 파일로 변환합니다. 온라인에서 변환을 해 주는 다양한 서비스들이 있으므로 그것을 이용해도 되고 MIDI에서 제공하는 커맨드를 이용해도 무방합니다.
Python 코드를 이용하는 방법도 있습니다.
패키지 설치
$ pip install trimesh pygltflib numpy
코드 실행
import trimesh
def glb_to_stl(glb_path, stl_path):
mesh = trimesh.load(glb_path)
mesh.export(stl_path, file_type='stl')
print(f"'{glb_path}' 파일이 '{stl_path}'로 성공적으로 변환되었습니다.")
# 예시 사용법
glb_file = "molang_goods.glb"
stl_file = "molang_goods.stl"
glb_to_stl(glb_file, stl_file)
7) STL 파일 불러오기
3D 프린팅을 위해 slicing을 해야하는데 그때 사용하는 도구로 UliMaker Cura 같은 것이 있습니다. (Ender 제품의 경우 이걸 쓰더군요) 위 과정을 거쳐 GLB에서 STL로 변환이 제대로 됐는지 확인해 보기 위해서 파일을 불러와 봤는데 역시 잘 되었네요.

실제로 3D Printing은 해 보지 않았지만 당연히 위의 작업까지 되었으면 문제가 없으리라 생각됩니다. 출력 대상도 굿즈 대신 사람 얼굴이나 전신 같은 것을 이용해서 언젠가는 한번 해 봐야겠습니다. ^^
참고자료
- MIDI 프로젝트 사이트 (링크)
MIDI: Multi-Instance Diffusion for Single Image to 3D Scene Generation
This paper introduces MIDI, a novel paradigm for compositional 3D scene generation from a single image. Unlike existing methods that rely on reconstruction or retrieval techniques or recent approaches that employ multi-stage object-by-object generation, MI
huanngzh.github.io
- 코드) 생성된 객체의 텍스처 입히는 작업은 MV-Adapter를 이용하면 된다고 하니 아래 내용 참조하세요. (윗 글에서는 사용하지 않습니다. 필요하다면 3D 프린팅이 된 이후에 애나멜 작업 같은 것을 해야겠죠.)
GitHub - huanngzh/MV-Adapter: [768 Resolution] [Any "SDXL" Model] [Various Conditions] [Arbitrary Views] Official impl. of "MV-A
[768 Resolution] [Any "SDXL" Model] [Various Conditions] [Arbitrary Views] Official impl. of "MV-Adapter: Multi-view Consistent Image Generation Made Easy" - huanngzh/MV-Adapter
github.com
'DIY 테스트' 카테고리의 다른 글
[코딩] 초간단 청기 백기 게임 만들어보기 (0) | 2025.04.03 |
---|---|
DeepSite를 이용한 Vibe Coding 체험하기 (0) | 2025.04.01 |
Zonos TTS로 음성 복제 및 문장 생성 테스트 (2) | 2025.03.16 |
포털 플랫폼에서 인기 검색어 추출 방식 조사 (0) | 2025.03.03 |
DIY로 물고기 먹이 급여기 만들어보기 (0) | 2025.01.27 |