Всем привет! Мы разрабатываем «умные пайетки» - электромеханические цветовоспроизводящие устройства для дизайнерской одежды. С результатами предыдущих этапов работы можно ознакомиться здесь, здесь и здесь. После не слишком удачного завершения нашей краудфандинговой компании, мы продолжили работу. Сегодня расскажу о том, как мы напечатали наше первое платье на 3D принтере! Начитавшись фантастики, мы решили, что сможем сделать одежду, которая сможет менять свой цвет и текстуру по желанию хозяина! Для этого были придуманы миниатюрные электромеханические устройства, предназначенные для размещения на ткани, называли мы их «умные пайетки» (по аналогии с известными всем блестящими пластиковыми чешуйками). Объединённые в матрицу, они образуют подобие монохромного LED дисплея. Отличие в том, что каждый пиксель работает на отражённом свете. Такой принцип позволяет максимально снизить энергопотребление матрицы при отображении статических картинок. Энергия тратится только в момент переключения пайеток. Вот что уже получилось: Индустрия моды одна из самых динамично развивающихся областей. На каждом очередном показе дизайнеры представляют свои уникальные работы. Некоторые из моделей… имеют мало общего с реальностью… Но дизайн одежды – своего рода искусство, поэтому утилитарностью оно отличаться не должно. Неудивительно, что мы были не первыми, кому пришла идея использовать 3D печать для изготовления предметов одежды. Ниже представлен далеко неполный перечень проектов, но эти примеры дают хорошее представление о концепциях и технологиях, лежащих в основе 3D печати предметов гардероба. В 2014 году компания Nervous System представила миру своё платье, напечатанное с использованием SLS 3D принтера. Ключевая особенность проекта заключается в том, что платье состоит из множества треугольных элементов, соединённых друг с другом посредством шарниров. Всё платье печаталось в сложенном виде единой деталью. А затем «расправлялось». На сайте компании даже есть небольшой 3D редактор, позволяющий вам создать собственное платье или аксессуар.  В 2016 году студентка из Израиля Danit Peleg создала целую коллекцию одежды, напечатанную на 3D принтере. Ключевая особенность – печать эластичными пластиками для создания гибких полотен, с которыми можно работать, как с тканевыми заготовками. Каждое полотно состоит из отдельных фрагментов (ограниченных областью печати принтера), которые вручную соединяются между собой. Не очень технологично, зато дёшево! В 2015 году компания Airwolf 3D, занимающаяся производством оборудования для 3D печати, представила довольно интересное платье. Изготовленное на FDM принтере из ABS пластика, оно состоит из множества жёстких шестиугольных «чешуек», которые соединяются друг с другом посредством шарниров. Как и в предыдущем проекте, отдельные фрагменты платья печатаются отдельно, а затем соединяются друг с другом. Ещё одна интересная концепция от SHOREY DESIGNS. Платья изготавливаются путём печати обычным FDM принтером на сетчатой ткани. Хотя затем они перешли на «запечатывание» маленьких пластиковых колец, чтобы создать шарнирное соединение между деталями платья.  Отрадно видеть в этом списке и отечественных разработчиков. Команда Московского авиационного института изготовила платье, которое было представлено на Geek Picnic 2019. Жаль, что информации по этому проекту в интернете исчезающе малое количество. Мне трудно определить, что за технология лежит в основе этого изделия… Кстати, вы заметили, что почти все печатают именно платья? Интересно, с чего бы это… После изучения всех доступных технологий изготовления одежды на 3D принтере, выбор был сделан в пользу формирования структур на эластичной подложке. Я уже рассказывал о методе 3D печати на сетчатой ткани с целью получения отдельных заготовок для элементов одежды. Этот метод и лёг в основу производства нашего платья. Почему мы выбрали именно его? Во-первых, доступность FDM 3D печати. А также богатый выбор материалов с различными свойствами. Во-вторых, возможность предварительно вплетать в материал-положку токопроводящие нити для последующего соединения отдельных пайеток между собой. Поскольку в развёрнутом виде материал-подложка имеет значительную площадь, то печатать платье целиком за один заход не представляется возможным. Если только у вас нет в соседней комнате принтера с рабочей областью больше одного квадратного метра... Существует вариант, когда мы делим модель на несколько частей, печатаем отдельные секции, а затем соединяем их друг с другом. Но это довольно трудоёмкий процесс. Мы решили, что будем объединять два подхода. Печать производилась отдельными секциями, но материал-подложка предварительно не разрезался. Т.е. после формирования одной секции, она отодвигалась в сторону и печаталась следующая. После завершения печати всех секций они оказывались частью целого полотна. С технологией производства определились, время поговорить о дизайне. Надо ли говорить, что существует огромное количество различных видов платьев. Они различаются по длине, посадке, конструкции и т.д. При выборе фасона будем руководствоваться двумя тезисами: концептуальным и конструкторским. Концептуальный: одежда не обязаны являться точным повторением формы тела, она представляет собой отдельную форму, которая гармонично сочетается с фигурой человека Конструкторский: одежда не существует отдельно от человека и опирается на его тело в различных ключевых точках Платье из пластиковых элементов с электроникой внутри будет иметь массу бОльшую, чем традиционные текстильные изделия (но не все), поэтому обязательно предусмотрим широкие лямки, а также фиксацию изделия на талии.  Поскольку традиционные замочки для платьев здесь не подходят, будет выполняться шнуровка по шву на спинке, как это делается у корсетов. Вот, собственно, и все хитрости… Определившись с фасоном нам необходимо определиться формой будущих элементов, составляющих матрицу. Причём матрица должна быть гибкой, чтобы повторять изгибы фигуры. Экспериментальным путём установлено, что наибольшей гибкостью обладают матрицы с круглыми элементами. Однако они же обладают и минимальной «укрывистостью» (зазоры между элементами). Поэтому оптимальной формой элементов матрицы является правильные шестиугольники (соты). Нам необходимо выполнить следующие действия: взять базовую форму выкройки платья и «замостить» её шестиугольными элементами, соблюдая зазоры между ними; разбить получившуюся матрицу на фрагменты по размеру области печати нашего принтера; преобразовать каждый фрагмент в STL файл, пропустить через слайсер, получить G-код для принтера; провести модификацию G-кода, чтобы в процессе печати принтер сделал паузу, и мы могли проложить между слоями тканевую подложку. Первые два пункта можно выполнить в любимой САПР, однако перестраивать матрицы вручную – довольно трудоёмкий процесс. К тому же, с ростом количества элементов матрицы растёт и нагрузка на вычислительные мощности компьютера. Поэтому мы разработали утилиту, позволяющую производить проектирование матриц и значительно упростить этот процесс. Программа представляет собой графический редактор, на выходе которого мы получаем набор STL файлов с фрагментами для печати, адаптированные под область печати нашего принтера. Программа создана в среде Processing.  Небольшой экскурс по интерфейсу программы. Рабочая область представляет собой сетчатое поле. Каждая ячейка может оставаться пустой или быть «закрашенной» одним из 4 видов пайеток.  Как это работает. Мы создаём несколько 3D моделей одиночных элементов будущей матрицы и преобразуем их в формат STL с необходимой нам размером фасет (я использую КОМПАС3D). Получившиеся STL модели являются базовыми. Габаритные размеры пайеток следующие. Диаметр вписанной окружности шестиугольного основания 10мм, общая высота пайетки 3мм. Обращаю внимание, что начало координат находится на нижней грани и располагается в центре шестиугольника (это важно!). Получившиеся STL файлы проверяем в слайсере Cura и смотрим что всё напечатается правильно. Далее в графическом редакторе программы мы рисуем конфигурацию матрицы (разным цветом обозначаются разные виды элементов). При желании нарисованный паттерн можно сохранить в текстовый файл через «SAVE PATTERN» и затем использовать в новых проектах. Затем указываем габариты области печати «FRAGMENT SIZE» (сколько элементов мы можем напечатать за один заход). Программа автоматически разбивает вашу матрицу на фрагменты для печати после нажатия на кнопку «SPLIT». В рабочей области подсвечиваются получившиеся фрагменты для печати и их порядковые номера. После этого жмём на кнопку «CREATE STL», и программа генерирует набор STL файлов с фрагментами для печати. При этом базовые модели копируются в координаты центров ячеек матрицы и получается новый STL файл. В данном случае автоматически создаётся 4 файла. Проверяем как выглядят получившиеся файлы в Cura. Вроде мозаика собирается воедино. Причём основное поле заполнилось базовыми моделями одной формы. А по краям (где мы и нарисовали) встали базовые модели с отверстиями. Если открыть один из фрагментов в КОМПАС и измерить зазор между пайетками, получается около 1мм (погрешность в пару соток нас не смущает). Подготавливаем G-код и переходим к его модификации. Наибольший интерес, как мне кажется, представляет работа с STL файлами. Немного теории.  STL – формат хранения трёхмерных моделей объектов. Особенностью его является, что модель в нём хранится как поверхность, состоящая, как правило, из треугольных граней (фасет).  Откроем один из файлов через блокнот и посмотрим, что там внутри. Файл должен иметь текстовый (ASCII) формат. Начинается с ключевого слова «solid» и заканчивается ключевым словом «endsolid». Всё что располагается между этими ключевыми словами и является нашей моделью. Дальше по очереди описываются координаты вершин и векторов нормали каждой фасеты модели.  «facet normal» - координаты вектора нормали к текущей фасете. Между ключевыми словами «outer loop» и «endloop» перечислены вершины фасеты (vertex) с координатами X Y Z, разделёнными пробелами. Можно просто читать этот файл и располагать треугольные плоскости по указанным координатам и, таким образом, отображать трёхмерные модели. По сути, вам не нужны даже нормали. Но Cura очень привередлива, поэтому если не будет хоть одного вектора, она выдаст ошибку чтения файла. То же самое произойдёт в том случае, если хоть одна фасета потеряется. Координаты вершин фасет заданы в миллиметрах (указывается при экспорте). Отсчёт ведётся от центра модели (надо смотреть, где у вас располагалось начало координат при построении). Чтобы сдвинуть STL модельку относительно этих координат, необходимо к соответствующей координате каждой точки прибавить величину смещения. Вектора нормали не трогаем, потому что их сдвиг в пространстве не меняет их направления. Координаты центров ячеек матрицы рассчитываются предварительно. GcodeCorrector Несколько слов о модификации G-кода. Вот здесь я подробно рассказывал про весь процесс, повторяться не буду.  Скажу только, что для того, чтобы проложить тканевую подложку между слоями при печати нам необходимо вставить команду паузы (M25) в G-код перед отправкой на принтер. Для этого также была написана небольшая утилита, которая позволяет просматривать траектории. В ней можно указать перед каким слоем нужно вставить паузу и сохранить модифицированный файл. Подготовка завершена, можем печатать! Печать заняла около 6 часов (по полтора часа на каждый из четырёх фрагментов). Печать производилась на стекле. Стол с подогревом. Температура стола 60⁰С, температура сопла 220⁰С, одув выключен. Материал печати - PLA пластик. Высота слоя 0,2мм.   Для того чтобы выявить все возможные проблемы, не затрачивая слишком много времени на печать, было принято решение отработать все нюансы в миниатюре. Данную модель мы разрабатывали специально для манекена в масштабе 1:4. Благодаря зазорам между пайетками и эластичным свойствам ткани-подложки, платье хорошо село по фигуре манекена. В вогнутых местах расстояние между пайетками сократилось, в выпуклых наоборот увеличилось. Для «приталивания» применён небольшой поясок, который проходит с изнаночной стороны платья. Не всё получилось идеально, со стороны спинки видны несколько дефектов печати… Но результатом мы довольны. Можно переходить к полноразмерным моделям! Ссылки на исходники программ. А также на диск с релизом.