STL-файл
STL-файл (от англ. stereolithography — стереолитография; также Standard Triangle Language и Standard Tessellation Language) — это формат файла, предназначенный для хранения трёхмерных моделей объектов и широко используемый в технологиях аддитивного производства (3D-печати), а также в системах автоматизированного проектирования (САПР), быстрого прототипирования и компьютерной графики. STL-файл описывает только геометрию поверхности трёхмерного объекта без какой-либо информации о цвете, текстуре, материале или других атрибутах, представляя её в виде набора треугольных граней (фасеток), образующих замкнутую оболочку.
История
Формат STL был разработан компанией 3D Systems в 1987 году для использования в технологии стереолитографии, которая была одной из первых коммерчески доступных технологий 3D-печати. Создателем формата считается Чарльз Халл, основатель 3D Systems и изобретатель стереолитографии. Изначально STL предназначался для передачи данных от САПР к стереолитографическим установкам, где лазерный луч засвечивал жидкий фотополимер, послойно формируя объект.
В 1990-е годы, с развитием других технологий аддитивного производства (FDM, SLS, SLA и других), STL стал де-факто стандартным форматом для 3D-печати. Его простота и открытость способствовали широкому распространению, несмотря на наличие более совершенных форматов (например, OBJ, AMF, 3MF). В 2009 году была опубликована спецификация формата, уточняющая его синтаксис и структуру.
Структура и формат
STL-файл представляет собой описание поверхности трёхмерного объекта с помощью треугольников (фасеток). Каждый треугольник задаётся координатами трёх своих вершин в трёхмерном пространстве (X, Y, Z) и вектором нормали, указывающим направление наружу от поверхности. Вектор нормали необходим для определения ориентации грани (лицевая или изнаночная сторона) и используется для корректного отображения и расчётов в программном обеспечении.
Существует два основных варианта формата:
- ASCII-формат (текстовый): Человекочитаемый, но занимает значительно больше места (примерно в 5–6 раз больше, чем двоичный). Начинается со строки
solid <имя>, содержит последовательность ключевых словfacet normal,outer loop,vertex,endloop,endfacetи заканчивается строкойendsolid <имя>. Используется для отладки и проверки файлов. - Двоичный формат (binary): Компактный и быстрый для обработки. Начинается с 80-байтового заголовка (обычно содержит имя модели, но может быть пустым), за которым следует 4-байтовое целое число без знака, указывающее количество треугольников. Далее идут 50-байтовые блоки для каждого треугольника: 12 байт на вектор нормали (3 числа с плавающей запятой по 4 байта), 36 байт на координаты трёх вершин (9 чисел с плавающей запятой по 4 байта) и 2 байта, которые обычно не используются (атрибуты).
Ограничения формата
- Только геометрия: STL не хранит информацию о цвете, текстуре, материале, прозрачности, весе, имени детали или других свойствах. Это делает его непригодным для задач, где важна визуализация или физические характеристики.
- Треугольная аппроксимация: Любая криволинейная поверхность представляется набором плоских треугольников. Чем больше треугольников, тем точнее аппроксимация, но тем больше размер файла. Это приводит к появлению «ступенчатости» на изогнутых поверхностях.
- Замкнутость: Для корректной 3D-печати модель должна быть «водонепроницаемой» (герметичной), то есть все треугольники должны образовывать замкнутую оболочку без разрывов, дыр и пересечений. Нарушение этого правила (например, несовпадение рёбер треугольников) приводит к ошибкам при печати.
- Отсутствие единиц измерения: В STL-файле не указываются единицы измерения (миллиметры, дюймы и т. д.). Интерпретация масштаба зависит от программного обеспечения и настроек слайсера (программы, преобразующей 3D-модель в инструкции для принтера).
Применение
3D-печать
Основная и наиболее массовая область применения STL-файлов — это 3D-печать. Практически все слайсеры (например, Cura, PrusaSlicer, Simplify3D, Slic3r) поддерживают импорт STL-файлов для последующей генерации G-кода. Пользователи загружают STL-модели на специализированные платформы (Thingiverse, MyMiniFactory, Cults3D и другие), делятся ими и скачивают для печати.
Системы автоматизированного проектирования (САПР)
Большинство современных САПР (SolidWorks, AutoCAD, Fusion 360, Blender, FreeCAD и другие) позволяют экспортировать трёхмерные модели в формат STL. При экспорте пользователь может задать точность аппроксимации (разрешение), что влияет на количество треугольников и качество модели. Экспорт в STL часто используется для передачи моделей из САПР в программы для 3D-печати или для визуализации.
Быстрое прототипирование и инжиниринг
STL-файлы используются в процессах быстрого прототипирования для создания физических прототипов деталей и изделий. В инженерных расчётах (например, метод конечных элементов) STL может применяться для создания сетки, хотя для этой цели чаще используются более специализированные форматы.
Компьютерная графика и анимация
Хотя STL не предназначен для хранения текстур и цветов, он может использоваться в некоторых программах для 3D-моделирования и анимации (например, Blender, 3ds Max) как простой формат для импорта/экспорта геометрии. Однако для полноценной работы с визуализацией обычно применяются более функциональные форматы (OBJ, FBX, COLLADA).
Обработка и исправление ошибок
STL-файлы, особенно созданные вручную или полученные из сложных САПР, часто содержат ошибки, которые делают их непригодными для 3D-печати. К распространённым проблемам относятся:
- Незамкнутые оболочки: Наличие отверстий или разрывов в сетке.
- Пересекающиеся грани: Треугольники, которые проходят друг через друга.
- Несовпадающие нормали: Векторы нормали, направленные внутрь модели, а не наружу.
- Вырожденные треугольники: Треугольники с нулевой площадью (например, когда все три вершины лежат на одной прямой).
- Избыточные вершины: Дублирующиеся вершины, которые не соединены с соседними треугольниками.
Для исправления таких ошибок существуют специализированные программы и инструменты, встроенные в слайсеры и САПР:
- Netfabb (Autodesk) — мощный инструмент для анализа и ремонта STL-файлов.
- Meshmixer (Autodesk) — бесплатная программа для редактирования и ремонта сеток.
- Blender — универсальный 3D-редактор с функциями для работы с сетками.
- Cura — слайсер, имеющий встроенный модуль для исправления некоторых ошибок.
- PrusaSlicer — слайсер с функцией автоматического ремонта.
Альтернативные форматы
Несмотря на широкое распространение, STL имеет ряд недостатков, что привело к появлению более современных форматов:
- OBJ — формат, поддерживающий хранение геометрии (полигоны), цветов, текстур и нормалей. Широко используется в компьютерной графике.
- AMF (Additive Manufacturing File Format) — стандарт ASTM ISO/ASTM 52915, разработанный специально для аддитивного производства. Поддерживает цвета, материалы, текстуры, градиенты, а также более сложные геометрические примитивы (например, кривые).
- 3MF (3D Manufacturing Format) — формат, разработанный консорциумом 3MF Consortium (Microsoft, HP, Autodesk, Stratasys и другие). Ориентирован на устранение недостатков STL: поддерживает цвета, материалы, метаданные, сжатие, а также обеспечивает целостность данных. Активно внедряется в Windows и программное обеспечение для 3D-печати.
- STEP (ISO 10303) — стандартный формат для обмена данными между САПР, хранящий не только геометрию, но и параметрическую информацию, допуски, сборки и другие инженерные данные. Не используется непосредственно для 3D-печати, но может быть конвертирован в STL.
Интересные факты
- Название «STL» часто расшифровывают как «Standard Triangle Language» или «Standard Tessellation Language», хотя официально это аббревиатура от «stereolithography».
- Формат STL является открытым и не защищён патентами, что способствовало его широкому распространению.
- В двоичном формате STL последние 2 байта каждого треугольника зарезервированы для атрибутов, но в подавляющем большинстве случаев они не используются и заполняются нулями.
- Для создания STL-файла можно использовать не только САПР, но и 3D-сканеры, которые преобразуют сканированные данные в сетку треугольников.
- Существуют онлайн-сервисы и программы для конвертации STL-файлов в другие форматы (например, OBJ, 3MF, PLY) и обратно.
Источники
- Спецификация формата STL (3D Systems, 1987, 2009).
- ISO/ASTM 52915:2016 — Standard Specification for Additive Manufacturing File Format (AMF).
- 3MF Consortium Specification.
- Документация к программам Cura, PrusaSlicer, Netfabb, Blender.
- Материалы сайтов All3DP, 3D Printing Industry, Wikipedia (англоязычная версия).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →