CuraEngine
CuraEngine — это движок слайсинга (программного преобразования трёхмерных цифровых моделей в набор инструкций для 3D-принтера), разработанный компанией Ultimaker (Нидерланды). Является ядром программного пакета Ultimaker Cura (ранее — Cura). CuraEngine распространяется по открытой лицензии LGPLv3, что позволяет использовать его как в коммерческих, так и в некоммерческих проектах, а также модифицировать исходный код.
История
Разработка CuraEngine началась в 2011 году как часть проекта Cura, созданного Эриком ван дер Занде (Erik van der Zande) и Алеком Хоу (Alec Howe). Первоначально Cura была простым графическим интерфейсом для существовавшего слайсера Skeinforge, но вскоре авторы решили написать собственный движок, оптимизированный для быстрой обработки моделей и работы с ограниченными вычислительными ресурсами. Первая версия CuraEngine была выпущена в 2012 году.
В 2013 году компания Ultimaker приобрела права на Cura и CuraEngine, после чего началось активное развитие движка в рамках экосистемы настольных 3D-принтеров Ultimaker. С этого момента CuraEngine стал основным слайсером для всех моделей принтеров Ultimaker, а также получил широкое распространение среди пользователей других марок 3D-принтеров благодаря открытому исходному коду и интеграции с популярными программами (например, Repetier-Host, OctoPrint).
В 2017 году вышла версия Cura 3.0, в которой CuraEngine был значительно переработан: добавлена поддержка многоэкструдерных систем, улучшена обработка поддержек, внедрён алгоритм адаптивного слоя. В 2020 году, с выходом Cura 4.0, движок получил новый движок генерации G-кода (Arachne), который позволил изменять ширину линии экструзии в зависимости от геометрии детали, что улучшило качество печати тонких стенок и мелких деталей.
Архитектура и принцип работы
CuraEngine написан на языке C++ и представляет собой консольное приложение, не имеющее собственного графического интерфейса. Он принимает на вход STL-, OBJ-, 3MF- или X3D-файлы и набор параметров печати (температура, скорость, толщина слоя, процент заполнения и т.д.), а на выходе генерирует G-код — последовательность команд для управления 3D-принтером.
Основные этапы обработки модели
- Загрузка и подготовка модели. Файл считывается, проверяется на ошибки (незамкнутые полигоны, пересекающиеся грани). При необходимости модель масштабируется, поворачивается или перемещается в рабочее пространство.
- Слайсинг (нарезка) на слои. Модель разрезается горизонтальными плоскостями с заданным шагом (толщиной слоя, обычно от 0,05 до 0,3 мм). Результатом является набор контуров для каждого слоя.
- Генерация заполнения (infill). Для каждого слоя вычисляется внутренняя структура заполнения — обычно решётка (линейная, треугольная, сотовая, гибридная) с заданным процентом заполнения (от 0% до 100%). CuraEngine поддерживает более 10 типов заполнения, включая адаптивное (изменяющее плотность в зависимости от геометрии).
- Построение поддержек. Если модель имеет нависающие элементы (угол наклона более 45–60° от вертикали), автоматически генерируются поддерживающие структуры, которые после печати удаляются. CuraEngine использует древовидные поддержки (tree supports), которые минимизируют контакт с моделью и облегчают удаление.
- Планирование перемещений. Движок оптимизирует траекторию движения печатающей головки: минимизирует холостые ходы, объединяет короткие отрезки в длинные линии, сглаживает углы для уменьшения вибраций. Используется алгоритм «змеиного» обхода (zigzag) для заполнения и контурный обход для стенок.
- Генерация G-кода. Все рассчитанные движения преобразуются в команды G-кода (G0/G1 — линейное перемещение, G2/G3 — дуговые движения, M-команды — управление температурой, вентиляторами и т.д.). Код дополняется стартовым и финишным скриптами (например, прогрев стола, очистка сопла).
Ключевые алгоритмы и технологии
- Arachne (с версии 4.0) — алгоритм, позволяющий изменять ширину линии экструзии в пределах одного слоя. Это даёт возможность печатать тонкие стенки (например, 0,2 мм) без потери прочности и толстые стенки (0,6 мм) без избыточного расхода пластика.
- Адаптивный слой — автоматическое изменение толщины слоя в зависимости от наклона поверхности: на пологих участках слой тоньше (больше детализация), на крутых — толще (экономия времени).
- Древовидные поддержки (tree supports) — поддерживающие структуры, напоминающие ветви дерева, которые растут от платформы к модели. Они требуют меньше материала, чем традиционные решётчатые поддержки, и легче удаляются.
- Оптимизация перемещений (travel optimization) — алгоритм, который находит кратчайший путь между точками печати, избегая пересечения уже напечатанных областей (чтобы не повредить деталь).
Настройки и параметры
CuraEngine предоставляет сотни настраиваемых параметров, разделённых на категории:
| Категория | Примеры параметров |
|---|---|
| Качество | Толщина слоя, высота первого слоя, ширина линии |
| Заполнение | Процент заполнения, тип решётки, плотность заполнения |
| Скорость | Скорость печати, скорость перемещения, скорость первого слоя |
| Температура | Температура сопла, температура стола, настройка вентилятора |
| Поддержки | Тип поддержек, угол наклона, плотность поддержек |
| Адгезия | Тип платформы (юбка, подол, плот), ширина и высота подола |
| Специальные | Адаптивный слой, Arachne, режим «ваза» (спиральная печать) |
Параметры могут быть заданы в виде профилей (presets), которые поставляются с Cura для конкретных моделей принтеров и материалов (PLA, ABS, PETG, TPU и др.). Пользователь может создавать собственные профили или редактировать существующие.
Применение
CuraEngine является основным слайсером для:
- Настольных 3D-принтеров Ultimaker (серии 2, 3, S5, S7) — поставляется в составе фирменного ПО Ultimaker Cura.
- Принтеров других производителей — благодаря открытому исходному коду CuraEngine используется в таких программах, как Repetier-Host, OctoPrint (через плагин CuraEngine), PrusaSlicer (частично заимствованы алгоритмы), MatterControl.
- Образовательных и исследовательских проектов — студенты и исследователи могут модифицировать движок для экспериментов с новыми материалами, методами печати или алгоритмами слайсинга.
- Промышленной 3D-печати — CuraEngine поддерживает многоэкструдерные системы (до 8 экструдеров), печать несколькими материалами одновременно, а также специальные режимы для печати больших деталей (например, «таблеточная» печать с разбиением на части).
Критика и ограничения
- Сложность настройки. Из-за большого количества параметров новички могут испытывать трудности с выбором оптимальных значений. Хотя Cura предлагает профили по умолчанию, для достижения наилучшего качества часто требуется ручная настройка.
- Производительность. На слабых компьютерах обработка сложных моделей (с миллионами полигонов) может занимать значительное время, особенно при включении алгоритмов Arachne и адаптивного слоя.
- Ограниченная поддержка нестандартных форматов. CuraEngine поддерживает только распространённые форматы 3D-моделей (STL, OBJ, 3MF, X3D). Для работы с форматами STEP, IGES или SLDPRT требуется предварительная конвертация.
- Отсутствие встроенного симулятора. В отличие от некоторых коммерческих слайсеров (например, Simplify3D), CuraEngine не имеет встроенного симулятора печати, который бы показывал возможные дефекты (например, перегрев, провисание) до начала печати. Симуляция доступна только в графическом интерфейсе Cura.
Интересные факты
- CuraEngine используется не только для FDM-печати (филамент), но и для SLA/DLP-печати (жидкие фотополимеры) — в версии для смолы (например, в программе Lychee Slicer).
- Исходный код CuraEngine доступен на GitHub (репозиторий Ultimaker/CuraEngine), и сообщество разработчиков регулярно вносит в него изменения, улучшающие производительность и добавляющие новые функции.
- В 2022 году Ultimaker объединилась с компанией MakerBot (США), что привело к интеграции CuraEngine в программное обеспечение MakerBot Method и других промышленных принтеров.
Источники
- Официальная документация Ultimaker Cura (Ultimaker.com)
- Репозиторий CuraEngine на GitHub (Ultimaker/CuraEngine)
- Статья «Arachne: A new slicing engine for Ultimaker Cura» (блог Ultimaker, 2020)
- Книга «3D Printing with Ultimaker Cura» (автор: J. C. van der Zande, 2019)
- Материалы конференции «FOSDEM 2021»: доклад о разработке CuraEngine
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →