STL vs OBJ vs 3MF: 3D 파일 형식 차이와 선택법
슬라이싱만 하면 되는 단색 출력물은 STL, 렌더링이나 게임 엔진용 텍스처가 있는 모델은 OBJ, 슬라이서가 지원하고 단위·색상·여러 파트를 그대로 넘기고 싶다면 3MF를 쓰면 됩니다. 형식은 메시와 함께 어떤 메타데이터가 넘어가는지를 정할 뿐, 메시 자체가 온전한지는 정하지 못합니다.
STL: 삼각형 목록, 그 외에는 아무것도 없는 형식
STL은 1987년 3D Systems의 첫 광조형(스테레오리소그래피) 장비를 위해 만들어졌고, 그 출신이 설계에 그대로 드러납니다. 파일은 삼각형을 나열한 단순한 목록이며, 각 삼각형은 면 노멀 하나와 꼭짓점 세 개로 표현됩니다. 공유 정점 테이블이 없어서 삼각형 여섯 개가 만나는 꼭짓점은 여섯 번 기록됩니다. 단위 필드도 없습니다. 좌표 25가 밀리미터인지 인치인지 미터인지 알 수 없고, 거의 모든 슬라이서는 밀리미터로 가정합니다. 색상, 텍스처, 파트 이름은 기본 형식에 들어갈 자리가 없는데, 바로 그 덕분에 모든 슬라이서와 CAD 프로그램, 출력 서비스가 지금도 STL을 읽습니다.
STL에는 두 가지 인코딩이 있습니다. ASCII STL은 facet normal, outer loop, vertex 12.5 0 3.2 같은 줄로 모든 것을 텍스트로 풀어 쓰기 때문에 텍스트 편집기로 열어 숫자를 읽을 수 있습니다. 바이너리 STL은 80바이트 헤더와 4바이트 삼각형 개수로 시작하고, 이후 삼각형 하나를 4바이트 부동소수점 12개와 2바이트 속성 필드로 저장합니다. 정확히 삼각형당 50바이트입니다. 이 규칙 덕분에 용량을 쉽게 예측할 수 있습니다. 삼각형 100만 개짜리 모델은 바이너리로 약 50 MB이고, 같은 메시의 ASCII 버전은 숫자 하나하나가 문자로 바뀌기 때문에 보통 4~6배 더 큽니다.
이 단순함은 장점이자 함정입니다. STL은 원래 파트 하나였는지 세 개였는지, 인치로 내보냈는지, 삼각형들이 실제로 닫힌 입체를 이루는지 알려 주지 못합니다. 슬라이서는 날것의 좌표만 보고 이를 추측하고, 추측이 틀리면 25.4배 작은 파트나 벽이 빠진 파트가 나옵니다. 직접 설계해 밀리미터로 내보낸 단색 파트라면 이런 문제는 상관이 없고, STL은 여전히 거부당할 가능성이 가장 낮은 형식입니다.
OBJ: 폴리곤, UV, 그리고 별도의 재질 파일
OBJ는 Wavefront Technologies에서 나온 형식으로, 1980년대 후반 이 회사의 Advanced Visualizer 소프트웨어가 사용했고, 1990년대를 거치며 거의 모든 3D 프로그램이 주고받을 수 있는 일반 텍스트 형식으로 퍼졌습니다. STL과 달리 정점 목록을 따로 두고 인덱스로 면을 구성하므로 공유 꼭짓점은 한 번만 저장되며, 면은 삼각형, 사각형 또는 더 큰 폴리곤일 수 있습니다. v로 시작하는 줄은 위치, vt는 텍스처 좌표(UV), vn은 노멀, f는 면을 담습니다. 그룹(g)과 개체(o)가 파트에 이름을 붙이기 때문에 OBJ는 Blender, Maya, ZBrush를 오가도 구조가 그대로 유지됩니다.
모양새(색과 질감) 정보는 .obj 파일 바깥에 있습니다. mtllib 줄이 짝이 되는 .mtl 파일을 지정하고, usemtl 줄이 면에 재질을 할당합니다. .mtl 파일은 Kd(확산색) 같은 색상을 저장하고, map_Kd wood.png 같은 항목으로 텍스처 이미지를 가리킵니다. 그래서 텍스처가 있는 OBJ는 최소 세 개의 파일, 즉 지오메트리, 재질 라이브러리, 하나 이상의 이미지로 이루어지며 모두 상대 경로로 연결됩니다. .obj만 보내면 받는 사람에게는 회색 모델만 보입니다. 이렇게 분리된 구조는 아티스트가 지오메트리를 건드리지 않고 텍스처만 바꾸는 게임·VFX 파이프라인에서 유용하지만, 내려받은 모델이 이상하게 보이는 가장 흔한 원인이기도 합니다.
OBJ는 스케일에 관해 STL과 같은 약점이 있습니다. 단위 없이 숫자만 저장합니다. 대부분의 모델링 도구는 미터나 센티미터로 쓰고 슬라이서는 밀리미터로 읽기 때문에, 게임 에셋 스토어에서 받은 OBJ는 10배나 1,000배 어긋난 크기로 들어올 수 있습니다. 출력 관점에서 OBJ는 일부 도구의 정점별 색상을 빼면 슬라이서가 쓰는 정보를 더해 주지 않습니다. 그래서 아트 에셋을 출력해야 한다면 텍스처는 렌더링용으로 남겨 두고 슬라이서에는 깨끗한 메시를 보내는 편이 대개 가장 간단합니다. 반대 방향으로는 STL을 OBJ로 변환하는 것이 출력용 모델을 렌더링이나 게임 작업으로 가져가는 가장 빠른 길입니다.
3MF: 출력용으로 설계된 ZIP 패키지
3MF는 2015년 3MF Consortium이 발표했습니다. Microsoft가 출력·CAD 업계 기업들과 함께 만든 단체입니다. .3mf 파일은 ZIP 압축 파일로, ZIP vs RAR vs 7z에서 다룬 것과 같은 컨테이너 형식입니다. 확장자를 .zip으로 바꿔 열어 보면 메시가 들어 있는 3D/3dmodel.model XML 파일, 콘텐츠 유형 파일, 관계(relationship) 파일, 그리고 흔히 썸네일과 슬라이서 설정이 들어 있습니다. 모든 모델은 단위(마이크론, 밀리미터, 센티미터, 인치, 피트, 미터)를 선언하므로 STL과 OBJ를 괴롭히는 스케일 문제가 아예 생기지 않습니다. 색상, 기본 재질, 여러 개체와 빌드 플레이트 위의 배치도 모두 사양에 포함됩니다.
사양은 또한 메시가 매니폴드이고 방향이 일관되어야 한다고 규정합니다. 모든 모서리는 정확히 두 삼각형이 공유해야 하고, 모든 삼각형은 바깥을 향해야 합니다. 규칙을 지키는 내보내기 도구는 STL이 아무렇지 않게 담는 열린 지오메트리나 자기 교차 지오메트리를 쓸 수 없습니다. 현재 도구들은 대부분 지원합니다. PrusaSlicer, Bambu Studio, OrcaSlicer, UltiMaker Cura가 3MF를 읽고, PrusaSlicer와 Bambu Studio는 출력 설정과 칠한 색상을 포함한 프로젝트 전체를 .3mf로 저장하며, Windows의 Microsoft 3D Builder 앱은 3MF를 바로 엽니다. 약점은 아직 STL을 기대하는 구형 펌웨어, 출력 대행 포털, CAD 가져오기 기능입니다. 이런 곳에는 3MF를 STL로 변환하되, 부가 정보는 남겨진다는 점을 감수해야 합니다.
| from ↓ · to → | 단위 | 색상 | 텍스처 | 여러 파트 | 출력 설정 | 매니폴드 규칙 |
|---|---|---|---|---|---|---|
| STL | – STL to 단위: no | – STL to 색상: no | – STL to 텍스처: no | – STL to 여러 파트: no | – STL to 출력 설정: no | – STL to 매니폴드 규칙: no |
| OBJ | – OBJ to 단위: no | OBJ to 색상: yes | OBJ to 텍스처: yes | OBJ to 여러 파트: yes | – OBJ to 출력 설정: no | – OBJ to 매니폴드 규칙: no |
| 3MF | 3MF to 단위: yes | 3MF to 색상: yes | 3MF to 텍스처: yes | 3MF to 여러 파트: yes | 3MF to 출력 설정: yes | 3MF to 매니폴드 규칙: yes |
작업에 맞는 3D 파일 형식 고르기
알맞은 형식은 어느 쪽이 더 새로운지가 아니라 파일이 다음에 어디로 가는지에 달려 있습니다. 다음 목적지가 슬라이서이고 단색 파트라면 STL로 충분하며, STL은 여전히 모든 커뮤니티, 모델 라이브러리, 출력 서비스가 알아듣는 형식입니다. 다음 목적지가 렌더러, 게임 엔진, 다른 아티스트의 모델링 도구라면 OBJ가 STL이 버리는 UV, 노멀, 이름 붙은 그룹을 지켜 주고, 텍스트 형식이라 문제를 들여다보기도 쉽습니다.
3MF는 파일에 지오메트리 이상의 정보가 담길 때 진가를 발휘합니다. Bambu Studio에서 색을 칠한 다색 출력물, 한 번에 출력하려고 배치한 파트 12개짜리 플레이트, 인치로 설계한 파트, 같은 레이어 높이와 내부 채움으로 다시 열고 싶은 프로젝트에는 모두 3MF가 필요합니다. 여기서 다룬 형식 중 그 정보를 담을 수 있는 것은 3MF뿐이기 때문입니다. 여러 곳에 보내야 한다면 가장 정보가 많은 버전을 원본으로 보관하고, 변환을 연달아 거치지 말고 3D 모델 변환기로 그 원본에서 단순한 버전을 내보내세요.
일반 출력은 STL
파트 하나, 색 하나, 밀리미터로 내보낸 모델. 모든 슬라이서, CAD 가져오기 창, 출력 서비스 업로드 양식에서 열립니다.
텍스처 모델은 OBJ
Blender, Maya, Unity, Unreal에서 쓸 UV, 노멀, 이름 붙은 그룹. .mtl 파일과 텍스처 이미지를 함께 보내세요.
최신 슬라이서는 3MF
실제 단위, 색상, 여러 개체, 출력 설정을 ZIP 하나에 담습니다. PrusaSlicer와 Bambu Studio의 기본 프로젝트 형식입니다.
3D 파일이 문제를 일으키는 다섯 가지 경우
형식 탓으로 돌리는 출력 실패와 가져오기 오류는 대부분 사실 메시 자체의 문제이거나, 받는 프로그램이 메시에 대해 잘못 가정한 결과입니다. STL은 실수를 잡아 줄 메타데이터가 없어서 가장 취약하고, OBJ는 스케일 문제와 파일 누락 문제를 함께 안고 있습니다. 3MF는 설계상 대부분을 피하지만, 부주의한 내보내기 도구라면 여전히 잘못된 메시를 쓸 수 있습니다. 아래 항목을 펼치면 각 문제가 어떻게 나타나고 주로 어디서 생기는지 볼 수 있습니다.
논매니폴드 메시
삼각형 하나만 걸친 모서리나 세 개 이상이 공유하는 모서리, 면 사이의 틈, 두께가 0인 벽이 있는 경우입니다. 슬라이서에서 레이어가 빠지거나 군데군데 구멍이 생기거나 열린 모서리 경고가 뜹니다. 원인은 모델링이나 내보내기 과정에 있으며, 맞닿기만 한 파트를 합칠 때 자주 생깁니다.
뒤집힌 노멀
일부 삼각형이 안쪽을 향하는 경우입니다. 렌더러에서는 검거나 비치는 얼룩으로 보이고, 슬라이서는 그 영역을 빈 공간으로 처리할 수 있습니다. Blender, Meshmixer의 노멀 재계산 기능이나 슬라이서의 복구 도구로 고칠 수 있습니다.
밀리미터와 인치 혼동
인치로 그린 파트는 밀리미터를 가정하는 슬라이서에서 25.4배 작게 들어오고, 센티미터를 밀리미터로 읽으면 10배 차이가 납니다. STL과 OBJ는 단위를 기록할 수 없으므로 내보내거나 변환할 때 직접 지정해야 합니다.
.mtl 파일이나 텍스처 누락
회색이나 자홍색으로 불러와지는 OBJ는 재질 라이브러리나 이미지를 잃어버렸거나, .mtl 안의 경로가 원작자 컴퓨터의 폴더를 가리키고 있는 것입니다. 모든 파일을 한 폴더에 두고 함께 ZIP으로 묶으세요.
지나치게 큰 ASCII STL 파일
정밀한 스캔 데이터를 ASCII STL로 저장하면 수백 MB를 넘기기도 해서, 슬라이서가 느려지고 업로드 한도에 걸립니다. 같은 메시를 바이너리 STL로 다시 내보내면 삼각형 하나 바꾸지 않고 약 5분의 1로 줄어듭니다.
STL·OBJ·3MF 형식별 일반적인 파일 용량
용량은 구조에서 나옵니다. 바이너리 STL은 삼각형당 50바이트로 고정이라 내보내기 전에 계산할 수 있습니다. ASCII STL은 꼭짓점마다 텍스트로 반복해 쓰기 때문에 보통 바이너리의 4~6배가 됩니다. OBJ는 공유 정점을 한 번만 저장하고 인덱스로 참조하므로, 일반적인 닫힌 메시라면 ASCII STL보다 작고 바이너리 STL과 비슷한 수준이며, UV와 노멀까지 담으면 더 커집니다. 3MF는 인덱스 방식의 XML을 ZIP 안에서 압축하므로 같은 지오메트리라면 대개 셋 중 가장 작습니다.
아래 수치는 정밀한 피규어처럼 삼각형이 약 50만 개인 닫힌 메시의 일반적인 값입니다. 실제 파일은 좌표 정밀도와 내보내기 도구에 따라 달라지므로 대략적인 규모로만 보세요. 출력 서비스에 업로드 용량 제한이 있거나, 3MF에서 내보낸 STL이 몇 배나 커졌을 때 참고하기 좋습니다.
- 바이너리 STL (삼각형 500,000개 × 50바이트)
- ≈ 25 MB
- 같은 메시의 ASCII STL, 일반적인 값
- ≈ 100–150 MB
- UV 없는 OBJ, 일반적인 값
- ≈ 15–30 MB
- ZIP 압축 후 3MF, 일반적인 값
- ≈ 5–12 MB
3D 파일 변환으로 해결되는 것과 절대 안 되는 것
변환은 한 컨테이너에서 삼각형을 읽어 다른 컨테이너에 쓰는 작업입니다. 대상 형식이 표현할 수 있는 것은 함께 옮겨지고, 표현할 수 없는 것은 버려집니다. 그래서 STL을 OBJ로 바꾸면 지오메트리 손실이 없고, 3MF를 STL로 바꾸면 색상, 단위, 플레이트 배치가 사라지며, OBJ를 STL로 바꾸면 텍스처와 파트 이름이 사라집니다. UltKit의 3D 도구는 이런 추가 결정을 명시적으로 묻습니다. 모델 단위는 원본이 어떤 스케일을 쓰는지 변환기에 알려 주고, 위쪽 축은 게임 엔진과 슬라이서 사이의 Y-up과 Z-up 차이를 처리하며, 메시 하나로 합치기는 따로 떨어진 파트를 분리된 채로 둘지 정합니다.
어떤 변환도 메시를 고쳐 주지는 않습니다. STL에 구멍이 있으면 그것으로 만든 OBJ에도 같은 구멍이 있고, 3MF 내보내기 도구는 이를 거부하거나 그대로 기록합니다. 복구는 메시 편집 도구나 슬라이서 내장 복구 기능에서 하는 별도의 단계이며, 다른 형식으로 내보내기 전에 원본 파일에서 한 번만 하는 것이 가장 좋습니다. 스케일도 마찬가지입니다. 파트가 원래 인치 단위였다는 사실은 직접 알려 주지 않으면 변환기가 알 수 없습니다. 디테일도 같습니다. 폴리곤이 적은 STL은 폴리곤이 적은 OBJ나 3MF가 될 뿐이므로, 품질이 중요하다면 원본 모델에서 다시 내보내세요.
형식 변환이 해 주는 일
- 같은 삼각형을 다른 프로그램이 받아 주는 컨테이너로 옮깁니다
- 모델 단위에서 고른 단위를 적용해 25.4배나 10배 스케일 오류를 바로잡습니다
- 위쪽 축으로 모델을 Y-up과 Z-up 사이에서 회전합니다
- ASCII STL을 바이너리로 다시 써서 용량을 줄입니다
- 메시 하나로 합치기 설정에 따라 파트를 따로 두거나 합칩니다
변환해도 그대로 남는 것
- 구멍, 열린 모서리, 논매니폴드 지오메트리
- 뒤집히거나 방향이 제각각인 노멀
- 자기 교차하는 파트와 두께가 0인 벽
- 메시를 처음 내보낼 때 이미 잃어버린 디테일
- 대상 형식에 담을 자리가 없는 색상과 텍스처
선택 기준표: STL, OBJ, 3MF 중 무엇을 쓸까
이 질문이 나올 때마다 함께 언급되는 형식이 두 가지 더 있습니다. STEP(ISO 10303)은 삼각형이 아니라 정확한 솔리드와 곡면을 저장하므로, 파트를 Fusion 360, SolidWorks, FreeCAD로 다시 가져가 편집해야 할 때 쓰는 형식입니다. Khronos Group의 glTF 2.0 바이너리 형태인 GLB는 메시와 재질, 텍스처를 미터 단위의 파일 하나에 담으며, 웹이나 Android AR에서 모델을 보여 줄 때 쓰는 형식입니다.
이 글에서 다룬 세 형식에 대해서는 아래 표가 목적지별 선택을 정리합니다. 두 줄이 모두 해당한다면 정보를 더 많이 담는 형식을 고르고 단순한 형식은 나중에 내보내세요. 3MF에서 STL로 가는 것은 쉽지만, 잃어버린 색상이나 단위를 되살리는 것은 손으로 해야 하는 일입니다.
| 상황 | 추천 형식 | 이유 |
|---|---|---|
| 아무 슬라이서로 보낼 단색 파트 | STL (바이너리) | 어디서나 지원되고, 슬라이서에 다른 정보가 필요 없음 |
| 모델 라이브러리나 출력 서비스에 업로드 | STL, 가능하면 3MF도 함께 | STL은 항상 받아 주고, 3MF는 단위와 색상을 유지함 |
| 다색 또는 다중 재료 출력 | 3MF | 여기서 슬라이서용 색상과 파트별 재질을 저장하는 유일한 형식 |
| 출력 설정이 포함된 여러 파트 플레이트 | 3MF | 개체 배치와 슬라이서 설정을 파일 하나에 저장함 |
| 인치로 설계한 파트 | 3MF | 단위를 선언하므로 25.4배로 잘못 스케일되지 않음 |
| Blender, Unity, Unreal용 텍스처 모델 | OBJ (+ .mtl과 이미지) | UV, 노멀, 재질 할당을 유지함 |
| 텍스트 편집기로 빠르게 확인 | OBJ 또는 ASCII STL | 한 줄씩 읽을 수 있는 일반 텍스트 |
| STL만 지원하는 구형 펌웨어나 소프트웨어 | STL | 부가 정보를 빼고 메시만 보냄 |
핵심 정리
- STL은 삼각형만 저장합니다. 단위도 색상도 없고, 바이너리 형식에서는 삼각형당 50바이트입니다.
- OBJ는 UV, 노멀, 이름 붙은 그룹을 더하지만, 색상과 텍스처는 별도의 .mtl 파일과 이미지 파일에 의존합니다.
- 3MF는 XML을 묶은 ZIP으로 단위, 색상, 여러 개체, 출력 설정을 기록하며 닫힌 메시를 요구합니다.
- 단색 일반 출력에는 STL, 아트·게임 파이프라인의 텍스처 모델에는 OBJ, 슬라이서가 지원한다면 언제든 3MF를 쓰세요.
- 변환은 메시가 아니라 컨테이너를 바꿉니다. 구멍과 노멀은 메시 도구에서 고치고, 단위는 직접 지정하세요.
자주 묻는 질문
STL은 3MF로 대체되고 있나요?
출력 작업 흐름에서는 서서히 그렇습니다. PrusaSlicer와 Bambu Studio는 이미 프로젝트를 3MF로 저장하지만, STL은 여전히 모든 도구와 모델 라이브러리가 받아 주는 형식이라 두 형식은 앞으로 몇 년간 함께 쓰일 것입니다.
바이너리 STL에 색상을 저장할 수 있나요?
표준적인 방법은 없습니다. 일부 프로그램이 삼각형마다 있는 2바이트 속성 필드에 색상을 기록하지만 대부분의 슬라이서는 이를 무시하므로, 색상이 중요하다면 3MF나 OBJ를 쓰세요.
내려받은 OBJ가 회색으로 보이는 이유는 무엇인가요?
.mtl 파일이나 텍스처 이미지가 빠졌거나, .mtl 안의 경로가 내 컴퓨터에 없는 폴더를 가리키고 있기 때문입니다. .obj, .mtl, 이미지를 한 폴더에 넣고 모델을 다시 불러오세요.
ASCII STL과 바이너리 STL 중 어느 쪽이 더 정확하게 출력되나요?
실제로는 어느 쪽도 더 정확하지 않습니다. 둘 다 같은 삼각형을 표현하며, 바이너리는 좌표를 32비트 부동소수점으로, ASCII는 텍스트로 저장합니다. 바이너리 파일이 보통 몇 배 더 작습니다.
출력하려고 OBJ를 다시 STL로 바꿀 수 있나요?
네. 삼각형은 그대로 옮겨지고, UV와 재질, 텍스처는 STL에 담을 자리가 없어 빠집니다. 모델링 도구에서 만든 OBJ는 미터나 센티미터 단위인 경우가 많으니 변환 후 스케일을 확인하세요.
다른 사람이 출력할 수 있게 모델을 공유하려면 어떤 형식이 좋나요?
호환성이 가장 넓은 STL을 제공하고, 모델에 파트가 여러 개이거나 색상이 있거나 인치로 설계했다면 3MF를 함께 올리세요. 최신 슬라이서를 쓰는 사람은 전체 설정을 그대로 받을 수 있습니다.
함께 읽을 글
ZIP vs RAR vs 7z: 어떤 압축 형식을 써야 할까
ZIP은 어디서나 열리고, 7z는 가장 작고 파일 이름까지 숨기며, RAR은 복구 레코드가 있습니다. 압축률·암호화·지원 기기를 비교합니다.
Lucas Ferreira · 2026년 9월 27일 · 11 분 분량
TTF vs OTF vs WOFF: 글꼴 형식 차이와 선택법
컴퓨터에는 TTF·OTF를 설치하고 웹사이트에는 WOFF2를 쓰세요. 글꼴 형식별 구조, 파일 용량, 변환할 때 달라지는 점을 정리합니다.
Jonas Weber · 2026년 9월 10일 · 11 분 분량
PNG SVG 변환 방법: 로고·아이콘 벡터 변환
PNG는 트레이싱을 거쳐야 진짜 SVG가 됩니다. 잘 변환되는 이미지, PNG 준비법, 색상·임계값 설정, 패스 확인법까지 정리했습니다.
Jonas Weber · 2026년 10월 4일 · 12 분 분량