STL

Формат файла STL (Stereolithography) представляет собой текстовый или бинарный файл, используемый для хранения трехмерной модели объекта, в основном для 3D печати на станках с ЧПУ. В файле STL хранятся данные о поверхности объекта, представленные в виде треугольников. Текстовый формат файла STL содержит информацию о каждом треугольнике в виде списка вершин и их координат. Бинарный формат файла STL представляет информацию в виде бинарных данных, что делает его более компактным и быстрым, но нечитаемым для человека. Файлы формата STL могут быть прочитаны и использованы различными программами для редактирования и просмотра трехмерных моделей.

Файл типа ASCII STL начинается со строки:

solid name

где name — необязательная строка (но если name опущено, всё равно должен быть пробел после solid). Файл продолжается произвольным числом треугольников, описываемых следующим способом:

facet normal ni nj nk
outer loop
vertex v1x v1y v1z
vertex v2x v2y v2z
vertex v3x v3y v3z
endloop
endfacet

где каждое n и v — число с плавающей точкой в формате: знак, мантисса, «e», знак, экспонента, например «-2.648000e-002». Файл завершается строкой:

endsolid name

Поскольку файл ASCII STL может быть очень большим, существует двоичная версия этого формата. Файл начинается с заголовка из 80 символов (который обычно игнорируется, но не должен начинаться с ‘solid’, так как с этой последовательности начинается файл ASCII STL). После заголовка идёт 4-байтовое беззнаковое целое число (little-endian), указывающее количество треугольных граней в данном файле. После этого идут данные, характеризующие каждый треугольник, в свою очередь.

Каждый треугольник описывается двенадцатью 32-битными числами с плавающей запятой: 3 числа для нормали и по 3 числа на каждую из трёх вершин для координат X/Y/Z. После идут 2 байта беззнакового ‘short’, который называется ‘attribute byte count’. В обычном файле должно быть равно нулю, так как большинство программ не понимает других значений.

Числа с плавающей запятой представляются в виде числа IEEE с плавающей запятой и имеют обратный порядок байтов, хотя это не указано в документации.

UINT8[80] – Header
UINT32 – Number of triangles

foreach triangle
REAL32[3] – Normal vector
REAL32[3] – Vertex 1
REAL32[3] – Vertex 2
REAL32[3] – Vertex 3
UINT16 – Attribute byte count
end

Существует как минимум 2 способа добавления информации о цвете:

  • VisCAM и SolidView используют 2 байта ‘attribute byte count’ в конце описания каждого треугольника для хранения 15 бит цвета RGB:
    • биты с 0 по 4 — уровень интенсивности для синего (0 до 31)
    • биты с 5 по 9 — уровень интенсивности для зелёного (0 до 31)
    • биты с 10 по 14 — уровень интенсивности для красного (0 до 31)
      • если бит 15 равен 1, то цвет используется
      • если бит 15 равен 0, то цвет не используется (для совместимости со стандартным STL)
  • Materialise Magics работает по-другому. Он использует 80 байт заголовка для представления общего цвета. Также там может быть представлена информация о материале. Цвет каждой грани описывается в ‘attribute byte count’ как:
    • биты с 0 по 4 — уровень интенсивности для красного (0 до 31)
    • биты с 5 по 9 — уровень интенсивности для зелёного (0 до 31)
    • биты с 10 по 14 — уровень интенсивности для синего (0 до 31)
      • если 15 равен 0, то данная грань имеет свой цвет
      • если 15 равен 1, то используется цвет всего объекта

Преимущества формата STL:
1. Простота использования: STL файлы легко создаются и редактируются, что делает их удобными для работы с 3D моделированием.
2. Поддержка большинства программ: Формат STL широко поддерживается большинством САПР и программ для 3D печати и моделирования.
3. Маленький размер файлов: STL файлы обычно имеют малый размер, что ускоряет процесс их загрузки и обработки.
4. Поддержка цветов: Некоторые версии формата STL поддерживают цветовую информацию, что позволяет создавать более реалистичные 3D модели.
Недостатки формата STL:
1. Ограничение на геометрию: Формат STL поддерживает только треугольные мешы, что ограничивает возможности создания сложных геометрических форм.
2. Отсутствие информации о текстурах: STL файлы не содержат информацию о текстурах, что ограничивает возможности создания реалистичных изображений.
3. Неэффективное использование памяти: Из-за того, что STL файлы хранятся в виде набора треугольников, они могут занимать большой объем памяти, особенно при работе с большими моделями.
4. Низкое разрешение: Из-за ограничений формата STL, создание моделей с высоким разрешением может быть затруднительно.

Обсуждение закрыто.