STL формат файлов (от англ. STereoLithography -объемная литография) — STL формат файлов широко используется для хранения трехмерных моделей объектов и для использования в технологиях быстрого прототипирования.
Информация об объекте в STL формате хранится, как список треугольных граней, которые описывают его поверхность, и их нормалей. Для всех послойных систем необходимо, чтобы 3Dмодель была “нарезана” горизонтальными ломтиками, чтобы затем можно было воспроизвести её геометрию в виде физической модели слой за слоем. STL – это “мозаичный” формат, в котором для представления формы цифровой 3D-модели используется последовательность треугольников (фасетов).
Каждый фасет описывается четырьмя наборами данных: координаты XYZ каждой из трех вершин и нормальный вектор, который описывает ориентацию фасета, указывая направление наружу модели.
Все координаты представлены в декартовой системе координат и записаны в виде чисел с плавающей точкой:
solid < комментарий > ...
facet normal 0.319575 -0.175216 -0.93122
outer
loop
vertex 2.22934 -0.992723 -0.862826
vertex 2.41037 -0.777999 -0.841105
vertex 2.40731 -0.97498 -0.805091
endloop
endfacet ... endsolid
Бинарный STL-файл условно можно изобразить следующим образом:
struct facet { float normal[3];
// 12 байт float vertex[3][3];
// 36 байт unsigned short attr;
// 2 байта }; struct stl_file { char head[80];
// комментарий - 80 байт unsigned long n;
// к-во граней - 4 байта facet arr[n];
// массив граней - n * 50 байт };