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

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
STL
Сравнение форматов STL и CAD
Расширение

.stl

MIME-тип

application/sla [1]

Разработчик

3D Systems[d]

Опубликован

1987[2]

Тип формата

3д-модели

Стандарт(ы)

"StereoLithography Interface Specification"

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

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

Двоичный формат[править | править вики-текст]

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

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

Числа с плавающей запятой представляются в виде 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 способа добавления информации о цвете:

  • 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, то используется цвет всего объекта

Нормали граней[править | править вики-текст]

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

Недостатки[править | править вики-текст]

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

Поддержка приложениями[править | править вики-текст]

  • Meshlab

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

Ссылки[править | править вики-текст]