Формат STL
STL (от англ. stereolithography или Standard Tessellation Language) — это формат файла для хранения трёхмерной геометрии объектов, широко используемый в аддитивных технологиях (3D-печати), системах автоматизированного проектирования (САПР) и компьютерной графике. Он описывает поверхность трёхмерной модели как набор непересекающихся треугольников (триангуляцию), каждый из которых задаётся координатами трёх вершин и вектором нормали, указывающим внешнюю сторону поверхности. Формат не хранит информацию о цвете, текстуре, материале или масштабе, что делает его простым и универсальным, но ограниченным по функциональности.
История
Формат STL был разработан компанией 3D Systems в 1987 году для использования в технологии стереолитографии — одном из первых методов 3D-печати. Создателем формата считается Чарльз Халл, основатель 3D Systems и изобретатель стереолитографии. Первоначально STL расшифровывался как Stereolithography Interface Specification, но позже закрепилась расшифровка Standard Tessellation Language.
В 1980-х годах STL стал де-факто стандартом для обмена данными между САПР и 3D-принтерами благодаря своей простоте и лёгкости реализации. С развитием аддитивных технологий в 1990-х и 2000-х годах формат получил массовое распространение, однако его ограничения (отсутствие поддержки цвета, текстур, точных кривых) привели к появлению альтернативных форматов, таких как OBJ, AMF и 3MF. Тем не менее, STL остаётся наиболее распространённым форматом в любительской и профессиональной 3D-печати.
Структура файла
Файл STL может быть представлен в двух вариантах: текстовом (ASCII) и двоичном (binary).
ASCII-формат
Текстовый формат STL начинается со строки solid <имя>, за которой следуют описания треугольников. Каждый треугольник задаётся ключевым словом facet normal, за которым указываются три компонента вектора нормали (X, Y, Z). Затем следует блок outer loop, содержащий три вершины (vertex), каждая с координатами X, Y, Z. Завершается треугольник ключевым словом endfacet. Файл заканчивается строкой endsolid <имя>.
Пример фрагмента ASCII STL: `` solid cube facet normal 0.0 0.0 1.0 outer loop vertex 0.0 0.0 1.0 vertex 1.0 0.0 1.0 vertex 0.0 1.0 1.0 endloop endfacet ... endsolid cube ``
ASCII-формат читается человеком, но занимает значительно больше места (в 5–10 раз) по сравнению с двоичным.
Двоичный формат
Двоичный STL начинается с 80-байтового заголовка (обычно содержит имя модели или произвольную информацию, часто не используется). За ним следует 4-байтовое целое число без знака (uint32), указывающее количество треугольников. Далее для каждого треугольника записываются:
- 12 байт (три числа с плавающей запятой по 4 байта) — вектор нормали;
- 36 байт (девять чисел с плавающей запятой) — координаты трёх вершин;
- 2 байта (uint16) — атрибут (обычно не используется и равен нулю).
Таким образом, каждый треугольник занимает 50 байт. Двоичный формат компактен и быстрее обрабатывается программным обеспечением.
Ограничения и недостатки
Несмотря на широкое распространение, формат STL имеет ряд существенных ограничений:
- Отсутствие цвета и текстуры. STL хранит только геометрию поверхности. Для цветной 3D-печати требуются дополнительные файлы (например, OBJ с MTL) или специализированные форматы (AMF, 3MF).
- Отсутствие масштаба. Файл не содержит информации о единицах измерения (миллиметры, дюймы и т.д.). Это часто приводит к ошибкам масштабирования при переносе между программами.
- Триангуляция. Поверхность аппроксимируется треугольниками, что при недостаточном разрешении приводит к видимым граням (ступенчатости). Для гладких кривых требуется большое количество треугольников, увеличивающее размер файла.
- Отсутствие топологии. STL не хранит информацию о связях между треугольниками (рёбра, вершины). Это затрудняет автоматическое исправление ошибок (например, разрывов или перевёрнутых нормалей).
- Неэффективность для сложных моделей. Для детализированных объектов с высокой точностью размер файла может стать огромным (сотни мегабайт или гигабайты).
Применение
Основная область применения STL — 3D-печать. Большинство слайсеров (программ, преобразующих 3D-модель в G-код для принтера) поддерживают этот формат. STL также используется в:
- Инженерном анализе. Для импорта геометрии в программы конечно-элементного анализа (CAE).
- Компьютерной графике. Как простой формат для обмена моделями, не требующими текстур.
- Медицине. Для хранения данных компьютерной томографии (КТ) и магнитно-резонансной томографии (МРТ) после сегментации, например, моделей костей или органов для хирургического планирования.
- Археологии и реставрации. Для цифрового копирования и воспроизведения объектов культурного наследия.
Альтернативные форматы
С развитием аддитивных технологий появились более совершенные форматы:
- OBJ — хранит геометрию, цвет, текстуры и материал. Широко используется в компьютерной графике.
- AMF (Additive Manufacturing File Format) — стандарт ASTM, поддерживающий цвет, градиенты, материалы, решётки и метаданные.
- 3MF (3D Manufacturing Format) — разработан консорциумом 3MF, включает цвет, текстуры, масштаб, поддержку нескольких материалов и сжатие. Позиционируется как замена STL.
- PLY (Polygon File Format) — хранит как геометрию, так и атрибуты (цвет, нормали), часто используется в 3D-сканировании.
Несмотря на преимущества альтернатив, STL остаётся популярным благодаря простоте, широкой поддержке и устоявшейся экосистеме программного обеспечения.
Интересные факты
- Формат STL не имеет официальной спецификации, опубликованной международным стандартом. Однако он де-факто стандартизирован благодаря многолетнему использованию.
- В двоичном формате 80-байтовый заголовок часто содержит строку "solid" или имя модели, но многие программы игнорируют его содержимое.
- Существует распространённая ошибка: перевёрнутые нормали (когда вектор нормали направлен внутрь модели). Это приводит к неправильной визуализации и проблемам при печати (например, слайсер может не распознать внутреннюю полость).
- Для проверки и исправления STL-файлов существуют специализированные утилиты (например, Netfabb, Meshmixer, Blender). Они могут автоматически исправлять разрывы, перевёрнутые нормали и другие дефекты.
Источники
- 3D Systems, Inc. — Stereolithography Interface Specification (1988).
- ASTM F2915-12 — Standard Specification for Additive Manufacturing File Format (AMF).
- 3D Manufacturing Format (3MF) Consortium — 3MF Specification.
- Чалмерс, Дж. — «3D-печать: практическое руководство» (2020).
- Официальная документация слайсеров Cura и PrusaSlicer.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →