Металл2024 Реклама
Метобр2024 Реклама

STL формат (моделирование в блокнот)

prototype3d
Идет загрузка
Загрузка
19.11.2016
28627
19
3D-моделирование

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

24
Здравствуете уважаемое 3D сообщество. Сегодня немного информации о формате STL.

Этот формат был разработан достаточно давно, специально для создания моделей с последующим выводом их, на аппаратуру ЧПУ. Не будем углубляться в историю, так как этот сайт не википедия. Тем более классический синтаксис со временем претерпел изменения. Разные программы по разному справляются с ними. Некоторые, например Netfabb, не понимают не классический синтаксис.
STL формат (моделирование в блокнот)
А другие, например Blender3D, читают без проблем. Модели в этом формате состоят из треугольников. В прошлом было ограничение на их количество. Из-за чего было ограничение на детализацию модели. Наверное это было связано с мощностями оборудования. Также координаты модели не могли иметь отрицательные значения. Теперь этих ограничений нет. Во всяком случае я с ними не сталкивался. И скорее всего любой принтер справится с любым весом файла модели.

Файл STL содержит описание модели, которое состоит из набора координат трех точек по трем осям. Каждая группа из трех точек образует полигон, в этом формате он называется фасет.

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

Для того чтобы построить модель, в этом формате, нам нужны координаты ключевых точек. Допусти нам нужен треугольник - фасет с координатами :

v 1 1 0

v 1 -1 0

v -1 -1 0
STL формат (моделирование в блокнот)
STL формат (моделирование в блокнот)
Порядок описания вершин важен, Так как от этого зависит ориентация нормали. Нумерация выполняется по правилу правой руки.
STL формат (моделирование в блокнот)
Поднятый большой палец определяет направление нормали, а согнутые четыре пальца, направление нумерации и порядок описания вершин. Иными словами, если мы хотим чтобы фасет был обращен к нам, описывать его вершины нужно против часовой стрелки.
STL формат (моделирование в блокнот)
STL формат (моделирование в блокнот)
Так как STL достаточно серьезный формат, в нем естественно есть компонент отвечающий за ориентацию нормалей - facet normal n1 n2 n3. Но так как подавляющее большинство использует только правило правой руки, его параметры обычно ровняются нулю (facet normal 0 0 0 ). А для некоторых программ, его наличие вовсе необязательно.

Для демонстрации построим октаэдр. точнее фигуру напоминающую его, потому что не все его ребра будут одинаковой длинны. Октаэдр это две пирамиды соединенные по основанию. Поэтому и моделировать его будем из двух пирамид. Пирамида, если смотреть на нее сверху вниз, представляет из себя четыре прямоугольника вершины которых соединены в одной точке.
STL формат (моделирование в блокнот)
Соблюдая правило правой правой руки, моделируем пирамиду начиная с красного треугольника.
STL формат (моделирование в блокнот)
Результат получаем следующий.
STL формат (моделирование в блокнот)
Получился квадрат. Потому что центральная точка имеет такую же координату Z как и другие, исправим это. Ниже правильный листинг файла:

solid Octahedron_Created_by_Prototyre3D

facet normal 0 0 0

outer loop

vertex 0 0 -1

vertex 1 1 0

vertex 1 -1 0

endloop

endfacet

facet normal 0 0 0

outer loop

vertex 0 0 -1

vertex 1 -1 0

vertex -1 -1 0

endloop

endfacet

facet normal 0 0 0

outer loop

vertex 0 0 -1

vertex -1 -1 0

vertex -1 1 0

endloop

endfacet

facet normal 0 0 0

outer loop

vertex 0 0 -1

vertex -1 1 0

vertex 1 1 0

endloop

endfacet

endsolid Octahedron_Created_by_Prototyre3D
STL формат (моделирование в блокнот)
Построим нижнюю часть. Если мы просто перепишем все и изменим Z на противоположное значение у нас получится фигура, но нормали нижней части будут перевернуты. Поэтому для нижней части мы описываем треугольники почасовой стрелке.

Файл целиком:

solid Octahedron_Created_by_Prototyre3D

facet normal 0 0 0

outer loop

vertex 0 0 -1

vertex 1 1 0

vertex 1 -1 0

endloop

endfacet

facet normal 0 0 0

outer loop

vertex 0 0 -1

vertex 1 -1 0

vertex -1 -1 0

endloop

endfacet

facet normal 0 0 0

outer loop

vertex 0 0 -1

vertex -1 -1 0

vertex -1 1 0

endloop

endfacet

facet normal 0 0 0

outer loop

vertex 0 0 -1

vertex -1 1 0

vertex 1 1 0

endloop

endfacet

facet normal 0 0 0

outer loop

vertex 0 0 1

vertex 1 -1 0

vertex 1 1 0

endloop

endfacet

facet normal 0 0 0

outer loop

vertex 0 0 1

vertex -1 -1 0

vertex 1 -1 0

endloop

endfacet

facet normal 0 0 0

outer loop

vertex 0 0 1

vertex -1 1 0

vertex -1 -1 0

endloop

endfacet

facet normal 0 0 0

outer loop

vertex 0 0 1

vertex 1 1 0

vertex -1 1 0

endloop

endfacet

endsolid Octahedron_Created_by_Prototyre3D
STL формат (моделирование в блокнот)
STL формат (моделирование в блокнот)
Листинг приведен в классическом синтаксисе. Также он может выглядеть несколько иначе, но не все программы понимают такое написание.

Не классический синтаксис STL:

vertex 0 0 -1

vertex 1 1 0

vertex 1 -1 0

vertex 0 0 -1

vertex 1 -1 0

vertex -1 -1 0

vertex 0 0 -1

vertex -1 -1 0

vertex -1 1 0

vertex 0 0 -1

vertex -1 1 0

vertex 1 1 0

vertex 0 0 1

vertex 1 -1 0

vertex 1 1 0

vertex 0 0 1

vertex -1 -1 0

vertex 1 -1 0

vertex 0 0 1

vertex -1 1 0

vertex -1 -1 0

vertex 0 0 1

vertex 1 1 0

vertex -1 1 0

Так же если мы конвертируем его в бинарный формат, то увидим следующее:
STL формат (моделирование в блокнот)
И если сравним размер текстового и бинарного файла то увидим такую картину:

Текстовый файл
STL формат (моделирование в блокнот)
Бинарный файл.
STL формат (моделирование в блокнот)
Разница практически в два раза. На этом буду заканчивать. Спасибо за внимание. Спасибо за отзывы.

подготовлено специально для Вас.
STL формат (моделирование в блокнот)

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

24
Комментарии к статье
Кремень КБ Реклама
Кремень КМ Реклама