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

shusy
Идет загрузка
Загрузка
22.09.2018
4129
28
печатает на Hercules 2018
3D-моделирование

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

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

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

106
В этой статье я хочу рассказать о методе создания моделей цилиндрических печатей для нужд подсобного хозяйства. Это может пригодиться как на кухне - делать забавные персональные печеньки, на стройплощадке - создавать уникальные или не очень декор штукатурки под различные материалы или оформлять обои, ткани повторяющимися рисунками. Словом, на что есть потребность. Для чего-же вообще была нужно цилиндрическая печать раньше?

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

Сразу должен оговориться, материал создан и адаптирован на русский язык на основе статьи 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 файл

Рассмотрим на примере как это всё работает. Сначала ищем подходящую картинку. Например такую:

Далее приводим её к формату подходящего для модели. Из цветной в черно-белую программа преобразует сама, но нужно понимать пару моментов. В картинку не должно быть альфа-канала или прозрачных пикселов. Нужно подобрать разрешение картинки: высокое разрешение даст большой файл модели и будет долго обрабатываться, так что нужен компромисс. По моему опыту размер 500-800 пикселов по одной стороне дает вполне хорошие результаты. Далее при полноцветной картинке нужно чтобы цвет пиксела не сильно отличался от соседей, иначе будет шумно. Поэтому лучше всего картинку переделать в каком-нибудь редакторе, убрать резкие переходы от светлого к темному. Это лучше всего сделать, пройдясь фильтром Blur. Я пользовался Gausian blur с размером 2 пиксела. В итоге получилась такая картинка:

Скармливаем её программе и получаем модель. Модель можно покрутить, увеличить или уменьшить, поиграться с параметром alpha, его величиной и знаком.

После этого делаем экспорт в .STL файл. Отправляем на печать и прокатав по кусочку теста получием примерно вот такой результат.

Еще пример. Слева исходная картинка, справа обработанная, на основе которой создавалась модель.

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

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

Результат работы на тесте,

Это отпечаток модели Эшеровской картинки созданный автором методики. Авторские модели можно скачать со страницы указанной в начале статьи, я напечатал только одну из предложеных.
Это все использованные печати.

Ссылки на модели:

Роллер 'Пошалим' - 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/



Что еще можно сделать?

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

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

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

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

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

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

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

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

106
Комментарии к статье

Комментарии

22.09.2018 в 20:28
2

Красивая адаптация промышленного способа производства печенья -
- был давным-давно на экскурсии на фабрике 'Большевик'.

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

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

Благодарю!
В Избранном.
Очень полезный пост.
С Уважением,
Ski.

ski
22.09.2018 в 20:33
2

Вот отлично. Если кто-то занимается полупромышленным изготовлением печенья, то по этой методике вполне можн делать мастер модели и мелкосерийные печеньки. Слоистость модели при отпечатке практически не проявляется.

22.09.2018 в 20:39
2

+ Вот ещё полезное видео для любого заинтересовавшегося,
включая рецепты теста и всего процесса:

https://youtu.be/u85ckBpY3j0

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

Главное - что показана необходимость наличия ДВУХ подносов.

ski
22.09.2018 в 20:46
1

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

22.09.2018 в 20:49
1

Спасибо, не видел его раньше.
Так - всё по Вашей-же ссылке...

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

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

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

Ссылка на WiKi-Большевик.

ski
22.09.2018 в 20:53
1

Так - всё по Вашей-же ссылке...
Да я понимаю. Там мнооого видео. С десяток пересмотрел, до этого конкретно не добрался. Статей на сайте тоже предостаточно интересных, но нужно понимать английский.

23.09.2018 в 20:48
1

Рецепт самый обычный. Фишка в том чтобы подержать тесто в холодильнике.

24.09.2018 в 05:50
0

подержать тесто в холодильнике.
Не для всех очевидная фишка.

23.09.2018 в 06:04
2

А где форма для лепки пельменей!!???

23.09.2018 в 06:56
2

Это домашнее задание. Упражнение для самостоятельной работы. :-)

23.09.2018 в 07:37
1

:D

23.09.2018 в 08:03
0

Подсказка. Один из возможных вариантов:

23.09.2018 в 11:57
1

Мне вот такую варенишницу - пельменницу как то давно довелось делать. Не нравились женщине те что в магазинах продают.

Правда не цилиндр :) 

23.09.2018 в 12:07
1

Хорошая. Для дома самое оно. Но для непрерывного производства цилиндр лучше. :-)

23.09.2018 в 11:50
0

Ну есть маленький нюанс, программа режет рисунок перпендикулярно окружности, а надо бы с небольшим уклоном, да и древние жители Месапотамии, делали рисунок на печатях более округлым... Теоретически валики для краски могут получиться неплохие... Печенюшки, надо посмотреть, но возможно надо будет немного форму доработать... Кстати, в 'Компас' есть возможность сделать текст на цилиндре... С рисунком, может сложнее...

23.09.2018 в 12:01
0

Я такие штуки делаю по другому. Просто не знал о существовании такой программы. В каде разворачиваю целиндр на плоскость, на нем моделирую, бульеню и сворачиваю обратно в целиндр (в некоторых кадах проецированием называется)

23.09.2018 в 12:35
1

Я такие штуки делаю по другому.
Безусловно и SolidWorks и КОМПАС позволяют сделать такую печать, но для этого нужно обладать навыками работы и моделирования. В предлагаемом скрипте, ничего особенного не нужно. Картинка (она нужна и в предыдущем случае) и подергать один параметр, для подбора глубины. Это просто еще один способ. Не лучше не хуже. Кто-то предпочтет SolidWorls кто-то этот скрипт.

23.09.2018 в 16:50
1

Ну такая опция была, ещё в Компасе 'десятке', учебное видео видел для него, теоретически  и в пятнадцатом оно применимо... Енота надо бы немного подправить, именно на уровне рисунка... Куски фактурных поверхностей накатывать довольно занятная приспособа… В своё время делал мостовую на пластилине, потом заливал гипсом... Но тут нужно что то самотвердеющее...

23.09.2018 в 12:10
1

надо бы с небольшим уклоном,
Вот Gaussian blur как раз для это и применяется. Если граница резкая в одном пикселе 0, в другом 255 то будет так ка вы говорите. Если добавить размытие, тем самым сделать переход то будет плавно. Ширину можно регулировать. В качестве подтверждения - смотрите модель для пельменй несколькими комментариями выше.

24.09.2018 в 10:42
0

Отличная статья!!!
Никогда гне слышал о подобном пакете!!!
Спасибо огромное!!!

24.09.2018 в 11:48
1

не слышал о подобном пакете
Это пакет для научных вычислений. Ближайшие родственники Matlab, Mapple, Mathcad. Wolfram Mathematica в этом году испоняется (или уже исполнилось) 30 лет.

25.09.2018 в 07:45
1

Очень интересно. Надо попробовать.
Спасибо!

25.09.2018 в 08:34
0

Попробуйте. Это гораздо проще, чем моделировать в CAD. Есть варианты для легального доступа к полнофункционально версии.

25.09.2018 в 20:38
0

поподробнее про легальные методы дудьте бобры ...

26.09.2018 в 06:25
0

Бесплатная лицензия Wolfram Mathematica последней версии входит в состав свободного дитрибутива Raspbian дляRaspberry Pi. В сети много инструкций как поставить ее на ПК.

Пробная полнофункциональная 15-дневная версия для ПК  доступна через сайт [url]https://www.wolfram.com/mathematica/trial/ . Раньше вообще диски с дистрибутивом присылали.

26.09.2018 в 14:16
0

1. Если вместо
SetDirectory[$UserDocumentsDirectory];
использовать:

dir = NotebookDirectory[]
SetDirectory[dir];

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

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

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

26.09.2018 в 14:34
0

. Если вместо
Можно так. В общем-то сделать настройку под свои предпочтения не проблема, все возможности для этого есть.
В названии неплохо было бы уточнить
В текущем варианте есть небольшая игра слов. Рассматривал и предложеный вами вариант, но потом остановился на текущем. В тексте сататьи есть упоминание про Wolfram.
 добавить в саму статью
К сожалению, редактирование статьи после ее опубликования невозможно.

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

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

Схема CoreYZ+CoreXYZ ну или наверно CoreXYZ

Продолжение работы с моделькой паровоза

Delta дома или побюджетней на мечту

Upgrade 3D принтеров PICASO Designer X series. Создаем 3D печатные Фермы. Удаленное управление.

Старт тестирования 3D принтера WanHao GR 1

Закусывание китайских кареток MGN9H