Пока вы читаете этот абзац, классический 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. Давайте объединим усилия и покажем, что передовую аддитивную технологию вполне реально поднять своими руками.


