STL vs OBJ: какой формат выбрать?
Выбирайте STL, когда нужна только печатная форма, и OBJ, когда модель содержит UV, текстуры или цвета. Оба формата открывает любой слайсер, и конвертировать их можно бесплатно.
- Измеренные размеры файлов
- Проверка работы слайсеров
- Бесплатные просмотрщики и конвертеры
STL vs OBJ: короткий ответ
Для одноцветной 3D-печати STL — более безопасный выбор по умолчанию: это самый старый и универсально поддерживаемый формат сетки, и он хранит только треугольники, поэтому слайсеру нечего прочитать неправильно. Выбирайте OBJ, когда тот же файл должен ещё и правильно выглядеть на экране — в Blender, игровом движке или рендерере, потому что OBJ сохраняет текстурные координаты (UV), нормали вершин и ссылку на файл материала.
Выбор STL vs OBJ на самом деле сводится к тому, что должно пережить экспорт. Только форма? STL. Форма плюс внешний вид поверхности? OBJ. Если нужен цвет на самом принтере, ни тот ни другой не идеален: используйте 3MF, который слайсеры читают как назначения филамента.
У обоих форматов есть две общие ловушки. В них нет поля единиц, поэтому модель может прийти в 25,4 раза меньше (сохранена в дюймах) или в 1 000 раз меньше (сохранена в метрах). И оба — простые треугольные сетки, поэтому кривые уже разбиты на грани; ни один не сохраняет точные CAD-поверхности, как STEP-файл.
Сравнительная таблица STL vs OBJ
Что каждый формат может и не может хранить — по описаниям форматов и тому, как современные инструменты их реально читают.
| STL | OBJ | |
|---|---|---|
| Тип геометрии | Только треугольники; каждый треугольник перечисляет свои 3 вершины плюс нормаль грани | Полигоны (треугольники, квады, n-угольники) с общими индексированными вершинами; спецификация также допускает NURBS-кривые и поверхности, которые читают немногие инструменты |
| Цвет / текстура | В стандарте нет; два несовместимых вендорских хака хранят 15-битный цвет на грань | UV-координаты в файле; цвета и изображения текстур подключаются через отдельный .mtl-файл |
| Единицы | Нет; слайсеры считают, что это миллиметры | Нет; решает принимающее приложение |
| Материалы | Нет | Диффузный цвет, зеркальность, прозрачность и карты текстур в .mtl; PBR metal/roughness только через неофициальные расширения |
| Размер файла | Бинарный: 84 байта + 50 байт на треугольник. ASCII: примерно в 6 раз больше | Только текст; для одной геометрии меньше бинарного STL, но больше, как только записаны UV и нормали |
| Редактируемость | Сложно редактировать: «суп» из несвязанных треугольников | Проще: связная топология, группы и квады сохраняются |
| Поддержка в ПО | Любой слайсер, CAD- и mesh-инструмент | Любой слайсер, Blender, Maya, 3ds Max, Unity, Unreal, большинство просмотрщиков |
| Использование в печати | Де-факто стандарт для одноцветной печати | Подходит для печати; PrusaSlicer игнорирует его материалы, Bambu Studio может сопоставить его цвета с филаментами |
Структура бинарного STL по описанию формата: 80-байтовый заголовок, 4-байтовое число треугольников, затем 50 байт на треугольник.
Что внутри STL- и OBJ-файла
STL-файл, созданный в 1987 году для первых стереолитографических машин 3D Systems, — это список треугольников. Каждый треугольник несёт вектор нормали и три угловые точки, записанные полностью. Поскольку соседние треугольники никак не связаны, вершина, общая для шести треугольников, хранится шесть раз, и принимающему ПО приходится заново восстанавливать связность, прежде чем что-либо исправить или упростить.
OBJ-файл от Wavefront Technologies — это текстовый файл с отдельными списками: строки v для позиций вершин, vt для текстурных координат, vn для нормалей и строки f, которые строят грани, ссылаясь на эти списки. Строка mtllib называет .mtl-файл, в котором хранятся цвета и пути к изображениям текстур. Именно благодаря этой индексации OBJ сохраняет сетку связной и может нести UV-развёртки, для которых в STL просто нет места.
- STL: одна запись на треугольник, и ничего больше
- OBJ: вершины, UV и нормали перечислены один раз и переиспользуются
- Текстуры OBJ лежат в отдельных файлах, которые нужно держать рядом с ним
Размер файлов STL vs OBJ: одна модель, сохранённая обоими способами
Мы экспортировали одну и ту же модель, сгенерированную ИИ, — стимпанк-робота-рыцаря из нашей галереи с 500 000 треугольников, 287 963 вершинами и цветной текстурой 2048 x 2048 — в каждый вариант и измерили файлы.
| Экспорт | Что содержит | Размер |
|---|---|---|
| Бинарный STL | Треугольники и нормали граней | 25.0 MB |
| ASCII STL | Те же данные в виде читаемого текста | 150.9 MB |
| OBJ, только геометрия | Позиции вершин и грани | 21.4 MB |
| OBJ с UV и нормалями | Позиции, UV, нормали, грани | 38.6 MB |
| OBJ с текстурами, полный набор | .obj + .mtl (198 байт) + PNG-текстура (5.0 MB) | 43.6 MB в 3 файлах |
| 3MF, только геометрия (для справки) | Сжатая XML-сетка в миллиметрах | 10.3 MB |
Размер бинарного STL точен: 84 + 50 x 500 000 = 25 000 084 байта. OBJ выигрывает на одной геометрии, потому что каждая из 287 963 вершин записана один раз, а не по разу на треугольник.
OBJ vs STL для 3D-печати
Слайсеры воспринимают оба формата как сетку для нарезки, поэтому корректный файл печатается одинаково в любом случае. Разница в том, что выбрасывается. В документации PrusaSlicer сказано, что информация о материалах и текстурах в OBJ при импорте игнорируется, и он читает как ASCII, так и бинарный STL. UltiMaker Cura включает STL и OBJ в список поддерживаемых типов моделей наряду с 3MF, PLY и glTF. Bambu Studio умеет читать цвета из OBJ и предлагает сопоставить их с филаментами AMS, поэтому на принтере Bambu OBJ полезнее STL, хотя 3MF всё равно остаётся более надёжным путём для многоцветной печати.
Что на самом деле ломает печать — это геометрия, а не формат: дыры, перевёрнутые нормали и самопересечения. Прогоните подозрительный файл через бесплатный инструмент ремонта STL перед нарезкой; он принимает сетку и возвращает водонепроницаемый STL.
- Та же сетка, та же траектория: формат не меняет качество печати
- Текстуры в OBJ большинство слайсеров отбрасывают
- Для цветной печати экспортируйте 3MF
Когда использовать STL, а когда OBJ
Решите STL vs OBJ, исходя из того, куда файл отправится дальше.
Одноцветная FDM- или смоляная печать
Модель с текстурами для Blender или игры
Многоцветная печать на Bambu AMS или Prusa MMU
Отправка детали механику или CAD-пользователю
Быстрый предпросмотр для отправки
Архивирование готовой к печати версии
Конвертация между STL и OBJ без сюрпризов
В одну сторону конвертация без потерь для формы, в другую — с потерей внешнего вида.
- Держите .mtl и изображения текстур в одной папке с OBJ и архивируйте их вместе при передаче
- Проверьте размер модели сразу после импорта; если он отличается в 25.4 раза, файл был сохранён в дюймах
- Используйте бинарный STL, а не ASCII, если инструмент специально не просит текст
- Просмотрите результат в просмотрщике, прежде чем нарезать или отправлять
- Не ждите, что конвертация STL в OBJ вернёт цвета или UV: их никогда не было в STL
- Не отправляйте голый .obj, когда важен внешний вид; без .mtl он откроется серым
- Не считайте, что меньший файл — худшего качества; геометрия OBJ меньше, потому что вершины общие
- Не переименовывайте .obj в .stl; внутренняя структура отличается, и файл не загрузится
Бесплатные просмотрщики и конвертеры STL и OBJ
Все они работают в браузере без входа, и ваш файл не покидает устройство.
FAQ
Частые вопросы
Что лучше для 3D-печати: STL или OBJ?
Сохраняет ли OBJ-файл цвет и текстуры?
Почему мой STL-файл намного больше OBJ?
Можно ли конвертировать STL в OBJ без потери качества?
STL или OBJ: что предпочтёт Blender?
Почему модель импортируется крошечной или гигантской?
Может ли файл STL содержать цвет?
Как получить STL или OBJ из фотографии?
Похожие инструменты и руководства
Продолжить
Начать бесплатно
Разобрались со STL и OBJ? Теперь создайте модель
Превратите фото в 3D-модель обычно меньше чем за минуту, затем экспортируйте её в STL, OBJ или 3MF на платном тарифе — или бесплатно просматривайте и конвертируйте файлы здесь.
Без банковской карты · 3 бесплатных кредита на старте