3D

STL для 3D-печати: что это и как подготовить модель

Вы нашли крутую модель на Printables или сделали свою в CAD — а на выходе принтер выдаёт кашу, пропуски или отказывается печатать вовсе. В девяти случаях из десяти виноват не принтер, а STL-файл. Разберёмся, что это за формат, почему сетка должна быть «водонепроницаемой» и как довести модель до слайсера без сюрпризов.

Хотенд 3D-принтера печатает деталь в синей подсветке мастерской
STL — это мост между 3D-моделью на экране и реальной деталью на столе принтера. Фото: Pexels

Что такое STL простыми словами

STL — это формат, который описывает поверхность 3D-модели как сплошную «чешую» из треугольников. Аббревиатуру расшифровывают по-разному: чаще всего как STereoLithography (в честь технологии, для которой формат создали в 1987 году), иногда как «Standard Tessellation Language». Суть одна: любую форму — от шестерёнки до фигурки дракона — STL представляет как множество плоских треугольных граней, стыкующихся друг с другом.

Каждый треугольник задаётся тремя вершинами и вектором нормали, который показывает, где у грани «наружная» сторона. Больше в файле нет практически ничего — и в этом вся философия STL: дать принтеру ровно то, что ему нужно, и ни байтом больше.

Коротко

STL — это «форма без содержания»: только геометрия поверхности в виде треугольников. Ни цвета, ни материала, ни единиц измерения. Зато этот формат понимает любой слайсер и любой 3D-принтер на планете.

Почему в STL нет цвета и текстур

Новичков это удивляет: как так, я вижу на экране модель, а цвет в файл не сохранился? Ответ прост — обычному FDM-принтеру цвет не нужен. Он строит деталь, выдавливая расплавленный пластик слой за слоем, а какого цвета будет объект, решает катушка филамента, а не файл. Текстуры и материалы — это язык рендеринга и игр, а не физического производства.

Поэтому STL сознательно выбросил всё лишнее. Если вам нужна цветная печать (например, на многоматериальном принтере или для полноцветной фотополимерной модели), используют другие форматы — 3MF или OBJ, которые умеют хранить цвет. Но для 99% домашней печати STL остаётся оптимальным.

Расширение
.stl
Что хранит
Треугольную сетку
Появился
1987 (3D Systems)
Цвет / текстуры
Нет
Единицы
Нет (обычно мм)
Две версии
ASCII и бинарная

Водонепроницаемая сетка: главное правило

Вот самое важное, что нужно знать про STL перед печатью: сетка должна быть водонепроницаемой (по-английски watertight, технически — manifold, «многообразие»). Представьте, что модель — это надувной шарик: если налить внутрь воду, она не должна вытекать. Никаких дыр, щелей и «висящих» краёв.

Формально это означает: каждое ребро сетки принадлежит ровно двум треугольникам, все нормали смотрят наружу, нет самопересечений и продублированных вершин. Только у такой замкнутой поверхности слайсер способен однозначно ответить на главный вопрос: «где здесь пластик, а где пустота?».

Что ломает печать чаще всего

Типичные дефекты STL: дыры в сетке (ребро принадлежит одному треугольнику), перевёрнутые нормали (грань смотрит внутрь), самопересечения и «не-manifold» рёбра, где сходятся три и более грани. Слайсер на таких местах даёт пропуски, лишние стенки или странный заполнитель. Чинят это в Blender, Meshmixer, Microsoft 3D Builder или онлайн-репейрах.

Хотенд принтера Ender крупным планом с вентилятором и значком нагрева
Сопло не знает, что оно печатает, — оно слепо следует траектории из слайсера. А та зависит от корректности STL. Фото: Pexels

ASCII или бинарный STL

STL существует в двух вариантах, и разница только в способе записи одних и тех же треугольников. ASCII STL — это человекочитаемый текст: откройте файл в блокноте и увидите слова facet normal, vertex и координаты. Бинарный STL хранит те же числа как сырые 32-битные значения — компактно, но нечитаемо глазом.

Практический вывод простой: для печати почти всегда берите бинарный. Он примерно в 8 раз меньше при той же геометрии и быстрее открывается. ASCII-версия оправдана лишь тогда, когда вы хотите вручную заглянуть в очень простую модель для отладки — на реальной детали с миллионами треугольников текстовый файл раздувается до сотен мегабайт без всякого смысла.

Единицы, масштаб и тесселяция

Помните, что STL не хранит единиц измерения — внутри только голые числа. По негласному соглашению весь мир 3D-печати трактует их как миллиметры. Отсюда классическая ловушка: если модель нарисована в дюймах, при импорте она окажется в 25,4 раза мельче задуманного, а если в сантиметрах — в 10 раз крупнее. Поэтому первое, что нужно сделать после загрузки в слайсер, — проверить габариты по осям.

Второй важный параметр — тесселяция, то есть насколько мелко гладкая поверхность разбита на треугольники. Сфера из сотни граней выйдет «гранёной», как алмаз; из десятков тысяч — идеально круглой, но файл станет тяжёлым. Баланс задаётся при экспорте из CAD параметрами допуска (chord/angle tolerance): слишком грубо — видны фасетки, слишком мелко — принтер всё равно не воспроизведёт разницу, а файл распухнет.

STL — это компромисс между гладкостью формы и весом файла. Искусство в том, чтобы треугольников было ровно столько, сколько реально напечатает ваш принтер.
Хотенд принтера Ender укладывает нить филамента на стол слой за слоем
Слайсер превращает водонепроницаемую модель в траекторию, по которой сопло укладывает пластик слой за слоем. Фото: Pexels

Путь до принтера: слайсер и G-code

Сам по себе STL принтер не понимает — ему нужны конкретные команды: куда двигать сопло, с какой скоростью, сколько выдавить пластика. Превращает модель в эти команды программа-слайсер (Cura, PrusaSlicer, Bambu Studio, Orca). Она мысленно «нарезает» водонепроницаемую модель на горизонтальные слои толщиной, скажем, 0,2 мм и для каждого слоя рассчитывает контур, заполнение и поддержки.

Результат слайсер сохраняет в G-code — длинный список инструкций, который и уходит на принтер. Именно поэтому корректность STL так критична: если на этапе нарезки слайсер встретит дыру или вывернутую нормаль, ошибка «запечётся» в G-code, и принтер честно воспроизведёт брак в пластике.

1

Проверьте сетку

Убедитесь, что STL водонепроницаемый — почините дыры и нормали, если нужно.

2

Задайте масштаб

Сверьте габариты в мм: модель должна быть того размера, что задумывалась.

3

Нарежьте в слайсере

Настройте слой, заполнение и поддержки, получите G-code.

4

Печатайте

Отправьте G-code на принтер по USB, SD-карте или по сети.

Чек-лист перед печатью

Короткий список, который экономит часы и катушки филамента:

  • Сетка замкнута — нет дыр, нормали наружу, нет самопересечений.
  • Масштаб верный — габариты в миллиметрах совпадают с задумкой.
  • Формат бинарный — файл не раздут текстовым ASCII без нужды.
  • Тесселяция адекватна — гладкие поверхности без грубых фасеток, но и не гигабайтные.
  • Ориентация продумана — модель повёрнута так, чтобы минимизировать поддержки.

Нужно подготовить не только модель, но и картинки к ней?

FormatZ конвертирует изображения и документы прямо в браузере — быстро и без установки. Пригодится для инструкций, превью и обложек ваших моделей.

Открыть все форматы

Если вы только выбираете, в каком формате хранить модель, загляните в наше сравнение OBJ, FBX, STL и glTF. А чтобы просто посмотреть чужой STL перед печатью, пригодится обзор чем открыть 3D-модель.

STL появился в 1987 году вместе с первыми стереолитографическими принтерами и оказался предельно простым: он описывает поверхность модели треугольниками и ничего лишнего не хранит. Принтеру не нужны ни цвет, ни история правок — только форма. Эта простота и совместимость со всеми слайсерами закрепили STL как формат по умолчанию.
Это сетка без дыр и логических ошибок: каждое ребро принадлежит ровно двум треугольникам, нормали смотрят наружу, нет самопересечений и «висящих» граней. Только у такой замкнутой поверхности слайсер может однозначно определить, где внутренность модели, а где воздух. Иначе печать сорвётся или выйдет с дефектами.
Для печати почти всегда бинарный: он примерно в 8 раз меньше при той же геометрии и быстрее читается. ASCII-версию (обычный текст с координатами) удобно открыть в блокноте для отладки простой модели, но на реальных деталях она раздувает файл без всякой пользы.
В самом файле единиц нет — есть только числа. По негласному соглашению в 3D-печати числа трактуют как миллиметры. Поэтому если модель нарисована в дюймах или сантиметрах, при импорте в слайсер она окажется в 25,4 или 10 раз не того размера. Всегда проверяйте габариты после загрузки.
Гладкие поверхности CAD-модели при экспорте в STL разбиваются (тесселируются) на плоские треугольники. Чем их больше, тем ровнее выглядит сфера или цилиндр, но тем тяжелее файл. Слишком грубая тесселяция даёт «гранёный» результат, слишком мелкая — огромный файл без видимой пользы. Разумный компромисс задаётся параметрами экспорта (допуск хорды/угла).