Пока вы читаете этот абзац, классический FDM-принтер успеет положить от силы пару линий пластика, а фотополимерник оторвёт от плёнки один 50-микронный слой. А теперь представьте принципиально иной процесс: стеклянная банка с прозрачной жидкостью вращается на платформе, в неё бьёт луч проектора с меняющимся узором, и через несколько десятков секунд прямо в толще смолы возникает готовая монолитная деталь. В ней нет ступенек по высоте, нет межслойных дефектов и нет леса поддержек, который потом приходится часами срезать ножом. Вы просто извлекаете готовое изделие пинцетом и промываете в изопропиловом спирте.

Это не рендер из фантастического кино, а технология Computed Axial Lithography (CAL) — объёмная томографическая печать. Научные основы метода описаны в журналах Science и Nature Communications командами из Беркли и Федеральной политехнической школы Лозанны ещё в 2019–2020 годах. Физический принцип давно доказан и многократно воспроизведён в лабораториях, но за их пределами технология до сих пор остаётся экзотикой: открытый проект OpenCAL существует, однако собрать по нему принтер дорого и непросто. Мы с другом решили разобраться, почему вокруг столь многообещающего метода нет доступной открытой экосистемы, и начали делать собственный слайсер с открытым исходным кодом — SpinSlicer.

Томография наоборот

Принцип работы CAL проще всего объяснить через медицинскую томографию, только запущенную в обратном направлении. В привычном компьютерном томографе рентгеновская трубка делает серию теневых снимков пациента под разными углами, а алгоритм обратного преобразования Радона восстанавливает по ним трёхмерную структуру органов.

В объёмной печати мы идём строго от обратного: берём цифровую 3D-модель и считаем такие кадры для всех углов от 0 до 360°, чтобы их сумма дала нужную дозу света в объёме. Проектор показывает эти кадры синхронно с вращением банки, и каждый луч проходит через весь объём насквозь. Один кадр отдаёт материалу лишь малую долю энергии и не вызывает затвердевания. Но там, где сходятся лучи со всех сторон, суммарная доза превышает порог гелеобразования, и деталь формируется целиком, сразу во всём объёме.

Важная подробность: простое «обратное преобразование Радона» для печати не подходит. Свет не бывает отрицательным, поэтому кадры приходится подбирать оптимизацией: чтобы внутри детали доза была выше порога, а снаружи — заметно ниже. Именно здесь решается, будет ли печать чёткой или превратится в кашу. Подробно метод описан в работе Kelly et al., Science 2019.

Железо: проще, чем кажется

При знакомстве с академическими установками вроде OpenCAL первое, что отпугивает мейкера, — смета: по нашим подсчётам, она уходит за полторы тысячи долларов. Эта цифра объясняется не сложностью устройства, а академической привычкой собирать всё из каталогов лабораторной оптики, где даже простой крепёж стоит десятки долларов.

Механика CAL-принтера проще любого настольного принтера. Здесь нет осей X и Y, ремней, кареток и концевиков: вся кинематика — один поворотный стол на шаговом двигателе NEMA 17 с тихим драйвером TMC2209. Корпус печатается на домашнем принтере, а из оптики нужны проектор и иммерсионная ванна.

Ванна нужна для оптического согласования. Круглая банка в воздухе работает как цилиндрическая линза и искажает пучок, поэтому её ставят в прямоугольную стеклянную кювету с глицерином или другой жидкостью, чей показатель преломления близок к стеклу и смоле. При сборке придётся повозиться с юстировкой оптики и радиальным биением банки, но, по нашим прикидкам, бюджет такого стенда укладывается в 20–35 тысяч рублей.

Самое тонкое место — синхронизация кадров с вращением. Если просто проиграть видео и надеяться, что мотор крутится с той же скоростью, ошибка копится с каждым оборотом, и кадры уезжают относительно банки. Поэтому в SpinSlicer кадр на проекторе выбирается по часам, а не по счётчику показанных кадров: вывод не накапливает отставания, а когда расчётная доза набрана, проектор гаснет сам.

Софт: SpinSlicer и движок FastCAL

Обычные слайсеры вроде PrusaSlicer или Chitubox здесь неприменимы в принципе: они режут модель на плоские слои, а CAL нужно решить обратную задачу — подобрать свет для всех углов сразу. Для этого мы делаем SpinSlicer: бесплатный слайсер под лицензией MIT, с готовыми установщиками для Windows и Linux. Актуальная версия — 0.8.0.

Работа в нём идёт в три шага: Модель (загрузить и расставить STL), Свет (рассчитать кадры) и Печать (вывести на проектор, сохранить видео или отдельные кадры).

В первых версиях мы считали кадры классическим SIRT, теперь у SpinSlicer свой движок FastCAL. Идея в том, что в круглой банке все углы оптически одинаковы. Лучи достаточно проследить для одного угла, а большая задача после преобразования Фурье по углу распадается на много маленьких независимых. В оптической модели учтены:

  • преломление на границах сред (закон Снеллиуса) и потери Френеля;

  • затухание света в глубине смолы (закон Бугера–Ламберта–Бера);

  • профиль пикселя и конус лучей проектора;

  • поворот банки за время показа одного кадра.

Расчёт идёт на обычном процессоре, без видеокарты, и держится в сотнях мегабайт памяти (от 160 до 768 МБ в зависимости от свободной оперативки). Мы сравнили FastCAL с алгоритмом OSMO из научных работ на одних и тех же моделях. Совпадение напечатанного с моделью (IoU, 1 = идеально) и время расчёта — в симуляции:

Модель

FastCAL: IoU / время

OSMO: IoU / время

Benchy

0,982 / 10 с

0,967 / 149 с

Гайка, иммерсионная ванна

0,995 / 11 с

0,990 / 175 с

Гайка, банка в воздухе

0,982 / 10 с

0,929 / 189 с

Подробная методика и остальные результаты — в репозитории.

Кроме расчёта кадров, в SpinSlicer есть:

  • виртуальная печать: кадры в том виде, как их покажет проектор, превращаются обратно в дозу, и затвердевшая деталь показывается в 3D рядом с моделью;

  • план печати: время и число оборотов из свойств смолы и проектора, плюс калибровочная печать для новой смолы;

  • вывод на проектор: кадры 1:1 на родном разрешении и автоостановка, когда доза набрана.

Мы отдаём себе отчёт, что все цифры выше получены в симуляции. Математика сходится, но алгоритму ещё предстоит калибровка под искажения настоящих объективов и проверка живой печатью.

Смола — главный барьер

Именно смола, а не железо и не софт, чаще всего останавливает открытые проекты. Если залить в банку обычную смолу для LCD- или DLP-принтера, эксперимент, скорее всего, провалится: она либо останется жидкой, либо застынет целиком. Такие смолы сделаны для слоёв толщиной в десятки микрон, поэтому в них нарочно добавляют поглотители света. В томографической печати луч должен проходить банку диаметром в несколько сантиметров почти без потерь, иначе края пересветятся, а сердцевина не наберёт дозу.

Второе требование — резкий порог. Фонового света в CAL много, и если смола застывает постепенно, весь объём превратится в студень раньше, чем появится деталь. Здесь помогает растворённый в смоле кислород: на малых дозах он перехватывает свободные радикалы и держит мономер жидким. Затвердевание начинается только там, где кислород выработался, то есть в зонах максимальной дозы. Этот механизм описан ещё в первой работе по CAL. Наконец, раз поддержек нет, смола должна быть густой, как мёд: иначе застывающий фрагмент утонет прямо во время экспозиции.

Специальная смола для OpenCAL продаётся за рубежом, и с доставкой в Россию она становится почти золотой. При этом рецептуры таких составов не секретны и опубликованы в научных статьях:

  • основа: вязкие мономеры, например диакрилаты полиэтиленгликоля (PEGDA) и уретанакрилаты;

  • фотоинициаторы в микродозах: TPO для 405 нм или камфорхинон с амином для синего света;

  • ингибитор: TEMPO, чтобы порог был резким и стабильным.

По нашим данным, эти вещества можно купить в России у поставщиков, работающих с производителями клеёв, композитов и лаков. Изобретать их не нужно: нужно рассчитать концентрации, измерить поглощение на рабочей длине волны и подобрать баланс ингибирования. Только не забывайте о безопасности: акрилатные мономеры вызывают аллергию при контакте с кожей, поэтому работайте в нитриловых перчатках, очках и с вентиляцией.

Ищем единомышленников

SpinSlicer уже лежит на GitHub под открытой лицензией MIT, но в одиночку закрыть все узлы такого проекта невозможно. Нам очень нужны:

  • инженеры и мейкеры — чтобы вместе довести поворотный стенд и оптику и провести первые печати;

  • химики, материаловеды и сотрудники университетских лабораторий — чтобы сварить и проверить открытую рецептуру смолы;

  • все, у кого уже есть CAL-установка — чтобы протестировать SpinSlicer на живой печати.

Репозиторий: github.com/redbluecarrot/SpinSlicer. Пишите в комментариях или напрямую в Telegram: @Schiaparellli. Давайте объединим усилия и покажем, что передовую аддитивную технологию вполне реально поднять своими руками.