Руководство

Что такое STL: конвертер OBJ в STL

Обновлено · Только меш OBJ в STL

Треугольники STL, масштаб без единиц, бинарные файлы и путь слайсера. Потом получи STL из OBJ приватно: конвертер OBJ в STL в браузере.

STL — файл треугольников, которого ждут слайсеры. Имя часто расшифровывают как стереолитография, по раннему смоляному процессу, но формат пережил ту одну машину. Сегодня это скучный надёжный способ отдать форму в Bambu Studio, UltiMaker Cura или PrusaSlicer. Это не формат моделирования. Он не помнит материалы. Он не помнит единицы. Он помнит углы.

Треугольники, и только треугольники

Каждая запись — грань: нормаль и три вершины. Квад сохранить негде, n-угольника нет, кривой нет. Когда этот сайт читает OBJ, многоугольники сначала режутся на треугольники, затем эти треугольники записываются. Число треугольников на странице инструмента — это это число. Оно не совпадёт со «счётом полигонов» редактора, который ещё считал квад одной гранью. Куб с шестью квадами — двенадцать треугольников. Это верно, а не ошибка удвоения.

Нормаль — направление грани. Слайсерам важнее, замкнута ли оболочка и согласован ли обход, чем точные числа нормали. Согласованный обход всё ещё важен, когда инструмент решает, где внутри, а где снаружи. Этот экспорт считает нормали по порядку углов. Недостающие грани он не выдумывает.

В STL, который мы пишем, нет текстурной координаты и нет цвета. В мире существуют малоизвестные расширения. Этот конвертер их не производит, и на то, что слайсер их почтит, рассчитывать не стоит. Одна мысль, которая совпадает с файлом: один цвет филамента.

Без единиц нарочно

Спецификация, которую люди реально реализуют, не содержит флага миллиметров. Привычка сообщества в FDM: одна единица равна одному миллиметру. Вершина на 25 при этой привычке — вершина в 25 mm, даже если автор имел в виду 25 метров или 25 дюймов. Пособие миллиметры и метры про то, как запечь верную привычку в числа. После этого STL всё ещё «не знает». Следующая программа должна разделить ту же привычку.

Поэтому габариты в конвертере полезнее фразы в заголовке файла. Бинарные заголовки — 80 байт, и они часто пустые или заполнены именем инструмента. Не храни там единственную копию «это были дюймы». Храни это в своих заметках и в координатах, которые уже совпадают с миллиметрами.

Бинарный, ASCII и слайсеры

Те же треугольники можно упаковать бинарно или выписать текстом ASCII. Бинарный меньше, и это скачивание по умолчанию. ASCII читается и громоздок. Бинарный и ASCII STL разбирает выбор. Оба открываются в названных слайсерах, когда байты целы. Файл ASCII, который попортил текстовый редактор, сменив концы строк или десятичные знаки, может не открыться. Экспортируй снова, а не правь большой STL руками.

Импорт в слайсер — не последняя проверка. Посмотри заявленный размер. Посмотри, стоит ли модель. Посмотри предпросмотр слоёв на щели, которых ты не хотел. STL может быть геометрически годным и всё равно плохой печатью. Тонкие стенки, пересекающиеся тела и открытое дно всплывают там. Эти проблемы возвращай в меш, а не в надежду, что повторный экспорт той же сломанной поверхности её залечит.

Откуда STL должен браться

На этом сайте STL должен браться из меша Wavefront OBJ. Это файл со строками v и f, описанный в что такое OBJ. Он не должен браться из PNG, JPG или твёрдого тела STEP. Мы не вокселизируем картинки и не тесселируем граничные модели CAD. Если в инструменте проектирования только тело, тесселируй или экспортируй OBJ там, с допуском хорды, который тебя устраивает, затем конвертируй. Число треугольников, которое получишь, — тесселяция, которую ты попросил у того инструмента. Мы не добавим треугольники, чтобы сделать поверхность глаже.

Когда файл есть, путь печати обычный. Подтверди миллиметры, сориентируй, поставь поддержки, если без них нельзя, нарежь и печатай. Оставь OBJ, если форму ещё будешь править. OBJ и STL объясняет, почему эти два файла должны лежать рядом, а не заменять друг друга. Пошагово из Blender — как конвертировать OBJ в STL.

Вопросы

STL знает, что модель в миллиметрах?

Нет. Формат хранит координаты и нормали граней. Слайсеры обычно считают их миллиметрами. Меню единиц на этом сайте меняет числа до записи.

Годный STL всегда печатается?

Нет. Файл может быть правильным списком треугольников и всё равно иметь дыры, пересекающиеся оболочки или слишком тонкие стенки. Конвертация ничего из этого не чинит.

Бинарный или текст?

Оба — STL. Здесь по умолчанию бинарный, потому что его ждут слайсеры и файл меньше. ASCII — текстовая форма. Смотри пособие про бинарный и ASCII.

Получить STL из OBJ