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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
STL
Розширення файлу: .stl
MIME-тип: application/sla [1]
Рік випуску: 1987[2]
Тип формату: 3д-модели
Стандарт(и): "StereoLithography Interface Specification"

STL (від англ. stereolithography) — формат файлу, який широко[3][4] застосовують для зберігання тривимірних моделей об'єктів для використання в адитивних технологіях. Інформація про об'єкт зберігається як список трикутних граней, які описують його поверхню, та їхніх нормалей. 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». Файл завершується рядком:

Двійковий формат[ред. | ред. код]

Тривимірна модель аероплана братів Райт у форматі STL

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

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

Числа з рухомою комою подають у вигляді числа IEEE з рухомою комою та мають зворотний порядок байтів, хоча цього не зазначено в документації.

UINT8[80] – заголовок
UINT32 – число трикутників

для кожного з трикутників
REAL32[3] – вектор нормалі
REAL32[3] – вершина 1
REAL32[3] – вершина 2
REAL32[3] – вершина 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].

Підтримка в застосунках[ред. | ред. код]

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. STL (.stl) — Wolfram Mathematica 8 Documentation. Архів оригіналу за 20 жовтня 2011. Процитовано 22 жовтня 2011.
  2. Wohlers Associates. Архів оригіналу за 30 квітня 2012. Процитовано 22 жовтня 2011.
  3. Mechanisms and Mechanical Devices. Архів оригіналу за 26 вересня 2014. Процитовано 2 жовтня 2017.
  4. STL file has been widely accepted as a de facto standard file format for the rapid prototyping industry[недоступне посилання]
  5. Burns, Marshall. Automated Fabrication. — Prentice Hall, 1993. — ISBN 978-0-13-119462-5.
  6. а б https://webspace.utexas.edu/reyesr/titanium/stl/stlmarch17.htm [Архівовано 2014-05-15 у Wayback Machine.] This conversion usually creates a much larger file with less accuracy than the original 3D model.
  7. KOMPAS-3D Home. ascon.net. Архів оригіналу за 26 вересня 2019. Процитовано 27 вересня 2019.

Посилання[ред. | ред. код]