Печатные пряники и Mathematica

Подписаться на 3Dtoday
shusy
Идет загрузка
Загрузка
22.09.18
2698
31
печатает на Hercules 2018
3D-моделирование
104
В этой статье я хочу рассказать о методе создания моделей цилиндрических печатей для нужд подсобного хозяйства. Это может пригодиться как на кухне - делать забавные персональные печеньки, на стройплощадке - создавать уникальные или не очень декор штукатурки под различные материалы или оформлять обои, ткани повторяющимися рисунками. Словом, на что есть потребность. Для чего-же вообще была нужно цилиндрическая печать раньше?

Цилиндрическая печать — выточенный из различных материалов небольшой цилиндр с продольным осевым отверстием, который использовался в Древнем мире в качестве удостоверения личности автора документа или свидетеля его подписания. Боковая поверхность цилиндра содержала уникальную резьбу по камню. Наибольшее распространение цилиндрические печати получили в Месопотамии, где, начиная с шумерского периода, такая печать являлась важнейшим, всегда носимым с собой, атрибутом человека. Цилиндрические печати обычно изготавливались мастерами из твердого материала. Известны печати из аметиста, гематита, мыльного камня, известняка, обсидиана, нефрита, сердолика, карнеола, халцедона и других природных минералов. Большинство цилиндрических печатей изготавливались таким образом, чтобы после прокатывания по мягкому материалу получалось выпуклое изображение. Рисунки и орнаменты самой печати при этом делались вдавленными. Однако, некоторые цилиндрические печати, предназначенные в основном для других письменных материалов, сами изготавливались выпуклыми и использовались, например, для нанесения краски на документ из пергамента, или папируса.

Сразу должен оговориться, материал создан и адаптирован на русский язык на основе статьи George W. Hart - "3D-Printed Rollers for Making Escher-Cookies".

Для создания моделей нам понадобится программный пакет Wolfram Mathematica. Пакет существует уже достаточно давно (в этом году 30 лет) и хорошо известен в среде профессионалов, но функциями поддержки 3D печати обзавелся относительно недавно.

Итак, для создания модели нам понадобится картинка, и программа, написанная на языке Wolfram Language. Скачать ее можно со страницы по ссылке выше. Ниже я привожу ее текст с комментариями работы.

SetDirectory[$UserDocumentsDirectory];
img = ColorConvert[Import[SystemDialogInput["FileOpen"]], "Grayscale"]
(* загрузить файл с картинкой в градациях серого в диапазоне цветов 0..1 *)
height = 2.0; (* высота цилиндра, величина будет задаваться слайсером как мм или дюймы *)
alpha = 0.1; (* максимальный размер рельефа, в долях от высоты цилиндра, используйте отрицательное значения для инверсии *)
{n, m} = ImageDimensions[img];
rMid = n * height/(2 Pi m) ; (* средний диаметр*)
r = Map[rMid - alpha height (# - 0.5) &, ImageData[img], {2}]; (* пересчет в полярные координатах *)
xyz = Table[{r[[j, i]] Sin[2 Pi i/n], r[[j, i]] Cos[2 Pi i/n], (1 - j/m) height}, {i, 1, n}, {j, 1, m}]; (* конвертация в декартовы координаты *)
(* цилиндр состоит из трех частей - рельефной поверхности и круглых верха и низа *)
surface = Table[{xyz[[i, j]], xyz[[Mod[i + 1, n, 1], j]], xyz[[Mod[i + 1, n, 1], j + 1]], xyz[[i, j + 1]]}, {i, 1, n}, {j, 1, m - 1}];
bottom = Table[{{0, 0, 0}, xyz[[i, m]], xyz[[Mod[i + 1, n, 1], m]]}, {i, 1, n}];
top = Table[{{0, 0, (1 - 1/m) height}, xyz[[Mod[i + 1, n, 1], 1]], xyz[[i, 1]]}, {i, 1, n}];
g = Graphics3D[{EdgeForm[], Map[Polygon, Join[surface, top, bottom]]}] (* построение 3d модели *)
Export[SystemDialogInput["FileSave", "roller.stl"], g] (* экспорт в файл *)

Эта программа выполняет математическое преобразование градаций серого с картинки в координаты, а затем выполняет операции преобразования систем координат. Изначально файл (полноценная картинка при импорте преобразуется в градации серого) с изображением представляется как таблица, которая кодирует величину почернения пиксела как функцию x и y координат на картинке. Программа преобразует x и y в угол и высоту в цилиндрической системе координат в полном диапазоне x, растянутым до одного полного оборота, при этом правая и левая стороны изображения объединяются. Радиус цилиндра выбирается так, чтобы отношение высоты цилиндра к длине окружности равнялось отношению высоте изображения к его ширине. Затем этот радиус изменяется в каждой точке путем добавления приращения соответствующего градации серого в соответствующем пикселе.

Параметр alpha, используется для масштабирования глубины рельефа. Большое значение alpha соответствует тому, что белые области изображения будут глубже утоплены в цилиндре, оставляя черный, чтобы выступать из цилиндра и делать более глубокие отступы в печенье. Задание alpha равное 0 на выходе создаст гладкий цилиндр без текстуры. Отрицательное значение параметра alpha меняет направление приращения, т.е. светлые области на изображения будут выступать из цилиндра.
Далее цилиндрические координаты преобразуются в трехмерные декартовы координаты. Сверху и снизу цилиндра добавляются круглые колпачки, для получения замкнутой модели. Затем модель экспортируются в STL файл
Рассмотрим на примере как это всё работает. Сначала ищем подходящую картинку. Например такую:
fe7a0eb842833ab75969d3130a17fcba.jpg
Далее приводим её к формату подходящего для модели. Из цветной в черно-белую программа преобразует сама, но нужно понимать пару моментов. В картинку не должно быть альфа-канала или прозрачных пикселов. Нужно подобрать разрешение картинки: высокое разрешение даст большой файл модели и будет долго обрабатываться, так что нужен компромисс. По моему опыту размер 500-800 пикселов по одной стороне дает вполне хорошие результаты. Далее при полноцветной картинке нужно чтобы цвет пиксела не сильно отличался от соседей, иначе будет шумно. Поэтому лучше всего картинку переделать в каком-нибудь редакторе, убрать резкие переходы от светлого к темному. Это лучше всего сделать, пройдясь фильтром Blur. Я пользовался Gausian blur с размером 2 пиксела. В итоге получилась такая картинка:
8f91a77839e756036fe61b41fdbc2451.jpg
Скармливаем её программе и получаем модель. Модель можно покрутить, увеличить или уменьшить, поиграться с параметром alpha, его величиной и знаком.
4ef96678a6d6c973364a420aa03674b7.jpg
После этого делаем экспорт в .STL файл. Отправляем на печать и прокатав по кусочку теста получием примерно вот такой результат.
a97abf0be7961e28fe8550302240e285.jpg
Еще пример. Слева исходная картинка, справа обработанная, на основе которой создавалась модель.
666be485662bc76b5b497c57b079ae34.jpg
Результат на тесте. Финальная картинка получилась не контрастная, поэтому результат тоже не очень. Кроме того, надо было бы сделать инверсию, тогда было бы лучше видно Ракету, но хуже надпись.
545dc3dbe8fcd39b0285d01a45c0814f.jpg
Это, с моей точки зрения, самая удачная модель. Снова сверху оригинал картинки. Ниже обработанная, на основе которой создана печать.
56a317a7bc50918cf8c68d60beadef68.jpg
Результат работы на тесте,
PREVIEW
831de81fdefc4f883a179c0a7f2ee576.jpg
Это отпечаток модели Эшеровской картинки созданный автором методики. Авторские модели можно скачать со страницы указанной в начале статьи, я напечатал только одну из предложеных.
60b8feaaed159769b5b4e5a24bf12cea.jpg
Это все использованные печати.
f892ee745ad7fa5ba2b4aafab9e473b5.jpg
Ссылки на модели:
Роллер "Пошалим" - http://3dtoday.ru/3d-models/for-home/kitchen/rolik_dlya_pechenya_poshalim/
Роллер "Vault boy" - https://www.thingiverse.com/thing:3113926
Роллер "San Andrés" - https://www.thingiverse.com/thing:3103580
Эшеровские всадники - http://georgehart.com/rollers/
Что еще можно сделать?

Например, легко и просто получаются валики для структурной штукатурки, их сейчас в большом количестве можно найти в интернете.

Например, такие:
7a77884f6fdab61d11cb3ac5bbce3de4.jpg
Что для этого нужно? Берем паттерны узоров
c60aae0001e0e1295ad48903a1b4a643.jpg
Переводим их в модель цилиндрической печати, распечатываем и пользуемся. Правда для удобства ещё придется смоделировать ручку. Но для посетителей этого сайта это точно не проблема.

В качестве бонуса, не печеньки. Давайте сделаем печать для имитации кирпичной кладки.

Ищем подходящую картинку. Здесь я не заботился о том, чтобы кирпичи были одинаковой длины. Из-за того, что правый край соединится с левыми в модели в нечетных кирпичах будет очень большой кирпич, а в четный очень маленький.
405e8b515f50399a43c6a9dc1b7b36b5.jpg
Обрабатываем как было описано выше. Gausian blur, 2 пиксела
94e00eee2fba0ff4ef90a22d45bba2ec.jpg
Пропускаем через программу.
f41f05ca053b891c17a6007cb20eddfa.png
Это два варианта с одной и той же исходной картинкой, где параметр alpha положительный и отрицательный. Очень хорошо виден цифровой шум.
546703dbef6f9dc292511ee6e86327ed.jpg
А это тоже самое, но уже с обработанной картинкой в качестве исходника. Шум гораздо меньше.
d6a1918a55e42e21a016dd083536ac5b.jpg
Выбираем понравившийся вариант. В общем этот простой скрипт открывает большое поле для экспериментов, где каждый сможет сделать что-то полезное для себя.

В этой статье даже и не начинал рассматривать всех возможностей Wolfram Mathematica. Из всего многообразия был использован только экспорт в STL. Очень многое осталось за рамками этой статьи. Если будет интерес к этой теме, то можно будет рассмотреть и другие особенности, и возможности этого пакета.
Подписаться на 3Dtoday
104
Комментарии к статье

Комментарии

22.09.18 в 19:51
14
Куда бы еще пару-тройку плюсов поставить не знаю... :-(

Думаю эту же самую статью можно еще в пару-тройку рубрик поместить, и в "Применение", и в "Творчество", и в "Мы печатаем", везде можно.
Супер статья и адаптация! Отличная работа!
258faf7479cff6b840ffeaec82c33c9c.jpg

СПАСИБО!
22.09.18 в 19:57
3
Спасибо за отзыв. Тоже долго думал в какой раздел поместить. Но все же решил сюда, поскольку основной смысл касается созданию модели - значит моделирование, вернее автоматизация моделирования.
22.09.18 в 20:28
2
Красивая адаптация промышленного способа производства печенья -
- был давным-давно на экскурсии на фабрике "Большевик".

9b0b50154ca4215cee8de1e565bd3e58.jpg


Подобный рисунок нанесён на валы розового биосовместимого пластика диаметром около 150 мм и длиной около 5000 мм.

Если посмотреть на эти валы - издали - узор - кажется как раз показанной Вами "кирпичной кладкой" ;-)

Благодарю!
В Избранном.
Очень полезный пост.
С Уважением,
Ski.
22.09.18 в 20:33
2
Вот отлично. Если кто-то занимается полупромышленным изготовлением печенья, то по этой методике вполне можн делать мастер модели и мелкосерийные печеньки. Слоистость модели при отпечатке практически не проявляется.
22.09.18 в 20:39
2
+ Вот ещё полезное видео для любого заинтересовавшегося,
включая рецепты теста и всего процесса:

https://youtu.be/u85ckBpY3j0
Ньюансы иноязыков, разных мер, фаренгейтов-там и прочих унций - в таком деле - не должны смущать никак ;-)

Главное - что показана необходимость наличия ДВУХ подносов.
22.09.18 в 20:46
1
Да, отличное. Спасибо, не видел его раньше. Особенно полезен рецепт теста. Не на любом рисунок будет хорошо держаться при выпечке.
22.09.18 в 20:49
1
Спасибо, не видел его раньше.
Так - всё по Вашей-же ссылке...

Просто чуть "копнул" - поглубже, ради пущей наглядности.

Благодарю Вас ещё раз за очень правильный пост.

По-русски - вроде-бы подобное тесто - может называться "сахарным".

Ссылка на WiKi-Большевик.
22.09.18 в 20:53
1
Так - всё по Вашей-же ссылке...
Да я понимаю. Там мнооого видео. С десяток пересмотрел, до этого конкретно не добрался. Статей на сайте тоже предостаточно интересных, но нужно понимать английский.
23.09.18 в 20:48
1
Рецепт самый обычный. Фишка в том чтобы подержать тесто в холодильнике.
24.09.18 в 05:50
0
подержать тесто в холодильнике.
Не для всех очевидная фишка.
23.09.18 в 06:04
2
А где форма для лепки пельменей!!???
23.09.18 в 06:56
2
Это домашнее задание. Упражнение для самостоятельной работы. :-)
23.09.18 в 07:37
1
:D
23.09.18 в 08:03
0
Подсказка. Один из возможных вариантов:
5d806ef99947c3ba015747903e63029f.jpg
23.09.18 в 11:57
1
Мне вот такую варенишницу - пельменницу как то давно довелось делать. Не нравились женщине те что в магазинах продают.
453d485e1486f47b5336233b48cb4222.jpg


Правда не цилиндр :)
23.09.18 в 12:07
1
Хорошая. Для дома самое оно. Но для непрерывного производства цилиндр лучше. :-)
23.09.18 в 11:50
0
Ну есть маленький нюанс, программа режет рисунок перпендикулярно окружности, а надо бы с небольшим уклоном, да и древние жители Месапотамии, делали рисунок на печатях более округлым... Теоретически валики для краски могут получиться неплохие... Печенюшки, надо посмотреть, но возможно надо будет немного форму доработать... Кстати, в "Компас" есть возможность сделать текст на цилиндре... С рисунком, может сложнее...
23.09.18 в 12:01
0
Я такие штуки делаю по другому. Просто не знал о существовании такой программы. В каде разворачиваю целиндр на плоскость, на нем моделирую, бульеню и сворачиваю обратно в целиндр (в некоторых кадах проецированием называется)
23.09.18 в 12:35
1
Я такие штуки делаю по другому.
Безусловно и SolidWorks и КОМПАС позволяют сделать такую печать, но для этого нужно обладать навыками работы и моделирования. В предлагаемом скрипте, ничего особенного не нужно. Картинка (она нужна и в предыдущем случае) и подергать один параметр, для подбора глубины. Это просто еще один способ. Не лучше не хуже. Кто-то предпочтет SolidWorls кто-то этот скрипт.
23.09.18 в 16:50
1
Ну такая опция была, ещё в Компасе "десятке", учебное видео видел для него, теоретически и в пятнадцатом оно применимо... Енота надо бы немного подправить, именно на уровне рисунка... Куски фактурных поверхностей накатывать довольно занятная приспособа… В своё время делал мостовую на пластилине, потом заливал гипсом... Но тут нужно что то самотвердеющее...
23.09.18 в 12:10
1
надо бы с небольшим уклоном,
Вот Gaussian blur как раз для это и применяется. Если граница резкая в одном пикселе 0, в другом 255 то будет так ка вы говорите. Если добавить размытие, тем самым сделать переход то будет плавно. Ширину можно регулировать. В качестве подтверждения - смотрите модель для пельменй несколькими комментариями выше.
24.09.18 в 10:42
0
Отличная статья!!!
Никогда гне слышал о подобном пакете!!!
Спасибо огромное!!!
24.09.18 в 11:48
1
не слышал о подобном пакете
Это пакет для научных вычислений. Ближайшие родственники Matlab, Mapple, Mathcad. Wolfram Mathematica в этом году испоняется (или уже исполнилось) 30 лет.
25.09.18 в 07:45
1
Очень интересно. Надо попробовать.
Спасибо!
25.09.18 в 08:34
0
Попробуйте. Это гораздо проще, чем моделировать в CAD. Есть варианты для легального доступа к полнофункционально версии.
25.09.18 в 20:38
0
поподробнее про легальные методы дудьте бобры ...
26.09.18 в 06:25
0
Бесплатная лицензия Wolfram Mathematica последней версии входит в состав свободного дитрибутива Raspbian дляRaspberry Pi. В сети много инструкций как поставить ее на ПК.

Пробная полнофункциональная 15-дневная версия для ПК доступна через сайт https://www.wolfram.com/mathematica/trial/ . Раньше вообще диски с дистрибутивом присылали.
26.09.18 в 14:16
0
1. Если вместо
SetDirectory[$UserDocumentsDirectory];
использовать:

dir = NotebookDirectory[]
SetDirectory[dir];

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

2. В названии неплохо было бы уточнить: Mathematica -> Wolfram Mathematica

3. Можно было бы Ваш комментарий добавить в саму статью: Бесплатная лицензия Wolfram Mathematica последней версии входит в состав свободного дитрибутива Raspbian дляRaspberry Pi. В сети много инструкций как поставить ее на ПК. Пробная полнофункциональная 15-дневная версия для ПК доступна через сайт https://www.wolfram.com/mathematica/trial/
26.09.18 в 14:34
0
. Если вместо
Можно так. В общем-то сделать настройку под свои предпочтения не проблема, все возможности для этого есть.
В названии неплохо было бы уточнить
В текущем варианте есть небольшая игра слов. Рассматривал и предложеный вами вариант, но потом остановился на текущем. В тексте сататьи есть упоминание про Wolfram.
добавить в саму статью
К сожалению, редактирование статьи после ее опубликования невозможно.

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Шаровая защита – легко 2.0

Ремонт/стайлинг габаритных огней вилочного электропогрузчика HELI

Сборка Creality CR-10S

Тест на излом прутка PLA, ABS, SBS, HIPS и PET-G

Самодельный 3D принтер из CD/DVD приводов

Калибровка Anycubic Photon не по феншую