Interested Article - STL (формат файла)

STL (от англ. stereolithography ) — формат файла , широко используемый для хранения трёхмерных моделей объектов для использования в аддитивных технологиях . Информация об объекте хранится как список треугольных граней, которые описывают его поверхность, и их нормалей . STL-файл может быть текстовым ( ASCII ) или двоичным . Свое название получил от сокращения термина «Stereolithography», поскольку изначально применялся именно в этой технологии трехмерной печати.

ASCII 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

Двоичный формат

3D-модель аэроплана братьев Райт в формате STL

Поскольку файл 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

Цвета в двоичном STL

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

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

Нормали граней

В двоичной и ASCII-версиях STL нормаль грани должна быть единичным вектором, направленным от объекта. В большинстве программ она может быть установлена в (0,0,0), и программа автоматически рассчитает нормаль на основе порядка вершин треугольника, используя правило правой руки. Некоторые загрузчики STL (к примеру, плагин STL для Art of Illusion ) сверяют нормали в файле с рассчитанными по правилу правой руки и предупреждают при несовпадении. Другое ПО может игнорировать и использовать только правило правой руки.

Недостатки

  • Невысокая точность геометрии (в версии ASCII можно задавать произвольную точность).
  • Большой объём файла для сложных моделей.

Поддержка приложениями

См. также

  • (Additive Manufacturing File Format)
  • (Polygon File Format, Stanford Triangle Format.)

Примечания

  1. . Дата обращения: 22 октября 2011. 20 октября 2011 года.
  2. . Дата обращения: 22 октября 2011. 30 апреля 2012 года.
  3. . Дата обращения: 2 октября 2017. 26 сентября 2014 года.
  4. (недоступная ссылка)
  5. Burns, Marshall. Automated Fabrication (неопр.) . — Prentice Hall , 1993. — ISBN 978-0-13-119462-5 .
  6. от 15 мая 2014 на Wayback Machine This conversion usually creates a much larger file with less accuracy than the original 3D model.
  7. . ascon.net. Дата обращения: 27 сентября 2019. 26 сентября 2019 года.

Ссылки

Источник —

Same as STL (формат файла)