STL vs OBJ: який формат обрати?
Обирайте STL, коли потрібна лише форма для друку, і OBJ, коли модель містить UV, текстури чи кольори. Будь-який слайсер відкриває обидва формати, і конвертувати їх можна безкоштовно.
- Виміряні розміри файлів
- Перевірено роботу зі слайсерами
- Безкоштовні переглядачі та конвертери
STL vs OBJ: коротка відповідь
Для одноколірного 3D-друку STL — безпечніший вибір за замовчуванням: це найстаріший і найбільш універсально підтримуваний формат сітки, і він не зберігає нічого, крім трикутників, тож слайсеру нема чого прочитати неправильно. Обирайте OBJ, коли той самий файл має ще й добре виглядати на екрані, у Blender, ігровому рушії чи рендерері, бо OBJ зберігає текстурні координати (UV), нормалі вершин і посилання на файл матеріалу.
Вибір між STL і OBJ насправді залежить від того, що має пережити експорт. Лише форма? STL. Форма плюс зовнішній вигляд поверхні? OBJ. Якщо потрібен колір на самому принтері, жоден із них не ідеальний: використовуйте 3MF, який слайсери читають як призначення філаменту.
Обидва формати мають дві пастки. У них немає поля одиниць виміру, тож модель може надійти у 25,4 раза меншою (збережена в дюймах) або у 1 000 разів меншою (збережена в метрах). І обидва є простими трикутними сітками, тому криві вже розбиті на грані; жоден не зберігає точних CAD-поверхонь, як це робить файл STEP.
Порівняльна таблиця STL vs OBJ
Що кожен формат може і не може зберігати, згідно з описами форматів і тим, як сучасні інструменти насправді їх читають.
| STL | OBJ | |
|---|---|---|
| Тип геометрії | Лише трикутники; кожен трикутник перелічує власні 3 вершини плюс нормаль грані | Полігони (трикутники, квади, n-кутники) зі спільними індексованими вершинами; специфікація також дозволяє NURBS-криві та поверхні, які читають небагато інструментів |
| Колір / текстура | Немає у стандарті; два несумісні вендорські хакі зберігають 15-бітний колір на грань | UV-координати у файлі; кольори та зображення текстур через окремий файл .mtl |
| Одиниці виміру | Немає; слайсери припускають міліметри | Немає; вирішує програма, що приймає файл |
| Матеріали | Немає | Карти diffuse, specular, opacity і текстури в .mtl; PBR metal/roughness лише через неофіційні розширення |
| Розмір файлу | Binary: 84 байти + 50 байтів на трикутник. ASCII: приблизно у 6 разів більший | Лише текст; менший за binary STL для самої геометрії, більший щойно записано UV та нормалі |
| Редагованість | Важко редагувати: мішанина нез’єднаних трикутників | Простіше: зв'язна топологія, групи та квади зберігаються |
| Підтримка програмного забезпечення | Кожен слайсер, CAD- і mesh-інструмент | Кожен слайсер, Blender, Maya, 3ds Max, Unity, Unreal, більшість переглядачів |
| Використання для друку | Фактичний стандарт для одноматеріального друку | Підходить для друку; PrusaSlicer ігнорує його матеріали, Bambu Studio може зіставити його кольори з філаментами |
Структура binary 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: одна модель, збережена обома способами
Ми експортували ту саму AI-згенеровану модель — стимпанк-робота-лицаря з нашої галереї з 500 000 трикутників, 287 963 вершинами та кольоровою текстурою 2048 x 2048 — у кожен варіант і виміряли файли.
| Експорт | Що містить | Розмір |
|---|---|---|
| Binary 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 |
Розмір binary STL точний: 84 + 50 x 500 000 = 25 000 084 байти. OBJ виграє за самою геометрією, бо кожна з 287 963 вершин записана один раз, а не по разу на трикутник.
OBJ vs STL для 3D-друку
Слайсери сприймають обидва формати як сітку для нарізання, тож коректний файл друкується однаково в будь-якому разі. Різниця в тому, що відкидається. Документація PrusaSlicer каже, що інформацію про матеріали й текстури в OBJ під час імпорту ігнорують, і він читає як ASCII, так і binary STL. UltiMaker Cura перелічує STL та OBJ серед підтримуваних типів моделей разом із 3MF, PLY та glTF. Bambu Studio може читати кольори з OBJ і пропонує зіставити їх із вашими філаментами AMS, що робить OBJ кориснішим за STL на принтері Bambu, хоча 3MF усе ще надійніший шлях для багатоколірного друку.
Друк ламає не формат, а геометрія: отвори, перевернуті нормалі та самоперетини. Проженіть підозрілий файл через безкоштовний інструмент ремонту STL перед нарізанням; він приймає сітку й повертає герметичний STL.
- Та сама сітка, той самий шлях інструмента: формат не змінює якість друку
- Більшість слайсерів відкидає текстури в OBJ
- Для кольорового друку експортуйте 3MF
Коли використовувати STL, а коли OBJ
Вирішіть STL vs OBJ за тим, куди файл вирушить далі.
Одноколірний FDM- або смоловий друк
Модель із текстурами для Blender або гри
Багатоколірний друк на Bambu AMS або Prusa MMU
Передавання деталі фахівцю з механообробки або CAD-користувачу
Швидкий перегляд для поширення
Архівування версії, готової до друку
Конвертація між STL і OBJ без сюрпризів
Конвертація без втрат для форми в одному напрямку й із втратами для зовнішнього вигляду в іншому.
- Тримайте .mtl і зображення текстур в одній папці з OBJ і заархівуйте їх разом, коли ділитеся
- Перевірте розмір моделі одразу після імпорту; якщо він відрізняється у 25,4 раза, файл збережено в дюймах
- Використовуйте binary 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 безкоштовні кредити на старт