OBJ → STL 변환기
.obj 파일을 놓으면 브라우저에서 바로 .stl 형식으로 변환합니다. 파일은 컴퓨터 밖으로 나가지 않습니다.
OBJ → STL 변환이 필요한 이유
슬라이서는 여전히 STL을 선호합니다. Blender / ZBrush에서 스컬프팅한 모델은 보통 OBJ로 먼저 내보내고, 프린터까지의 마지막 단계는 그 OBJ를 바이너리 STL로 바꾸는 일입니다. ‘DCC에서 그렸으니 이제 출력하고 싶다’는 표준적인 인계 과정입니다.
누가 이 변환을 하나요
Blender에서 프린터로 바로 넘기는 취미 사용자, 조각상과 피규어를 출력하는 아티스트, 그리고 Sketchfab 같은 사이트에서 CC 라이선스 OBJ 에셋을 내려받아 슬라이싱해야 하는 모든 사람이 사용합니다.
자주 생기는 문제
- 평면이 아닌 n-gon은 불러올 때 삼각형으로 분할되어 출력 표면에 보기 싫은 부채꼴 패턴이 생길 수 있습니다. 쿼드로만 된 Blender 내보내기가 가장 잘 동작합니다.
- 멀티 재질 OBJ는 재질 정보가 모두 사라집니다. STL은 형상만 담습니다.
- OBJ에는 단위 선언이 없으므로 STL은 원본이 쓰던 배율을 그대로 물려받으며, 이 배율은 임의인 경우가 많습니다. 슬라이서에서 치수를 확인하세요.
이 도구의 기술 메모
Three.js OBJLoader가 위치, 법선, 인덱스를 파싱하고 STLExporter가 바이너리 STL을 씁니다. n-gon은 로드 시 삼각형으로 분할되므로 내보낸 결과는 순수 삼각형입니다.
OBJ vs STL — 무엇이 다른가요?
사람이 읽을 수 있는 Wavefront 메시 포맷으로, 3D 그래픽·게임 아트·에셋 파이프라인 어디서나 쓰입니다. .mtl 재질 파일과 짝을 이룹니다.
- 사실상 모든 3D 툴에서 지원 (Blender, Maya, 3ds Max, Unity, Unreal…)
- 일반 텍스트라 diff와 직접 편집이 쉬움
- STL과 달리 UV 좌표와 버텍스 노멀 유지
- 함께 딸린 .mtl 파일로 머티리얼 참조
- 텍스트 포맷 — 바이너리 메시보다 용량이 큼
- 씬 계층, 애니메이션, 스켈레톤 없음
- 머티리얼이 별도 파일에 있어 잃어버리기 쉬움
모든 3D 프린터 슬라이서가 읽는 삼각형 메시 포맷입니다. 지오메트리만 담고 단위·색상·어셈블리 정보는 없습니다.
- 3D 프린팅 범용 포맷 — Cura, PrusaSlicer, Bambu Studio 모두 STL 지원
- 작고 단순하며 로딩이 매우 빠름
- 메싱 워크플로, 시뮬레이션 전처리, 빠른 미리보기에 적합
- 삼각형 근사 — 곡면의 정밀도 손실
- 색상·재질·어셈블리 데이터 없음
- 관례상 파일당 셸 하나 (멀티바디는 하나로 합쳐짐)
포맷 깊이 알아보기
OBJ — 어디서 왔나
1980년대 후반 Wavefront Technologies가 자사 Advanced Visualizer 소프트웨어용으로 만들었습니다. Wavefront가 Alias(이후 Autodesk)에 흡수된 뒤에도 포맷은 공개된 채로 남아 학술 3D 연구, 취미 모델링, 초기 게임 아트의 공용어가 됐습니다. ASCII의 단순함 덕분에 지금도 모든 그래픽스 교재에 OBJ 예제 파일이 실립니다.
- .mtl 재질 파일은 반드시 .obj와 함께 다녀야 합니다. zip으로 묶어 보내지 않으면 받는 쪽에서 텍스처가 사라집니다.
- 음수 인덱스와 면별 노멀은 스펙에 있지만 많은 임포터가 경고 없이 잘못 읽습니다. 다운스트림 툴에서 문제가 생기면 Blender에서 한 번 열었다가 다시 내보내세요.
- 대상이 게임 엔진이라면 내보내기 전에 삼각분할하세요. Unity와 Unreal의 OBJ 임포터는 n-gon에서 막힙니다.
실제 사용: 컴퓨터 그래픽스 연구 논문은 지금도 OBJ를 메시 기준 포맷으로 씁니다. 취미용 마켓플레이스(TurboSquid, CGTrader 무료 등급)는 OBJ + MTL 묶음으로 배포합니다. 포토그래메트리 파이프라인(Meshroom, RealityCapture)은 이식성 있는 중간 포맷으로 OBJ를 출력합니다. "3D 모델이 필요해요"라고만 말한 낯선 사람에게 건네기에 여전히 가장 안전한 포맷입니다.
STL — 어디서 왔나
1987년 3D Systems가 최초의 상업용 광조형(스테레오리소그래피) 장비를 위해 만든 포맷입니다(이름도 "STereoLithography"에서 왔습니다). 원래는 잠깐 쓰고 버릴 내부 포맷이었지만, 40년 가까이 지난 지금도 CAD와 시중의 모든 슬라이서를 잇는 기본 전달 포맷입니다. 다른 어떤 포맷도 제때 범용 지원을 얻지 못했기 때문입니다.
- STL에는 단위가 없습니다. 인치로 작성한 파일을 미터법 슬라이서에서 다시 열면 1/25.4 크기로 출력됩니다. 슬라이싱 전에 원본 단위를 꼭 확인하세요.
- 논매니폴드 메시(구멍, 뒤집힌 노멀, 내부 벽)는 슬라이싱은 조용히 되지만 출력하면 수습할 수 없는 결과물이 나옵니다. 필라멘트를 낭비하기 전에 메시 리페어 툴을 돌리세요.
- ASCII STL은 바이너리 STL보다 약 5× 크지만 이점은 전혀 없습니다. 파일을 diff해야 하는 특별한 경우가 아니면 항상 바이너리로 내보내세요.
실제 사용: 모든 FDM·SLA 슬라이서(Cura, PrusaSlicer, Bambu Studio, Lychee, Chitubox)가 STL을 기본 입력으로 읽습니다. 시뮬레이션 전처리기(Ansys, Abaqus)도 메싱용으로 STL을 받습니다. 온디맨드 제조 서비스(Shapeways, JLCPCB의 3D 프린팅 부문, Protolabs)도 STL 업로드를 바로 받습니다.
OBJ → STL 변환 방법
- 1페이지에 .obj 파일을 끌어다 놓습니다(또는 클릭해 찾아보기). 전부 브라우저에서 실행되며 업로드하지 않습니다.
- 2메시를 3D로 미리 보고 제대로 보이는지 확인합니다. 사이드바에서 삼각형 수를 살펴봅니다.
- 3STL 다운로드를 클릭해 바이너리 STL로 저장합니다. Cura, PrusaSlicer, Bambu Studio에서 열어 출력합니다.
자주 묻는 질문
제 OBJ가 어딘가에 업로드되나요?
아니요. 변환은 Three.js의 OBJ 로더와 STL 익스포터로 브라우저에서 실행됩니다. 서버로 전송되는 것은 없습니다.
재질/텍스처 정보가 사라지나요?
네. STL은 형상만 담기 때문에 원본 OBJ의 .mtl 재질, UV, 텍스처 데이터는 버려집니다. 색상이 필요하면 대신 3MF나 GLB로 내보내세요(이 사이트에서 곧 지원 예정).
변환된 STL을 바로 출력할 수 있나요?
OBJ 메시가 매니폴드(워터타이트, 뒤집힌 법선 없음)라면 가능합니다. 슬라이서가 경고를 내면 Blender에서 STL을 불러와 Mesh → Clean Up → Merge by Distance를 실행한 뒤 다시 내보내면 됩니다.
출력 파일은 바이너리 STL인가요, ASCII STL인가요?
바이너리입니다. ASCII보다 약 5× 작고 모든 슬라이서에서 더 빨리 로드됩니다.
Blender의 쿼드 메시는 어떻게 되나요?
Three.js가 불러올 때 쿼드와 n-gon을 자동으로 삼각형으로 분할합니다. STL 규격대로 출력은 항상 순수 삼각형입니다.