Открыть сервис

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-принтером.

Основные этапы обработки модели

  1. Загрузка и подготовка модели. Файл считывается, проверяется на ошибки (незамкнутые полигоны, пересекающиеся грани). При необходимости модель масштабируется, поворачивается или перемещается в рабочее пространство.
  2. Слайсинг (нарезка) на слои. Модель разрезается горизонтальными плоскостями с заданным шагом (толщиной слоя, обычно от 0,05 до 0,3 мм). Результатом является набор контуров для каждого слоя.
  3. Генерация заполнения (infill). Для каждого слоя вычисляется внутренняя структура заполнения — обычно решётка (линейная, треугольная, сотовая, гибридная) с заданным процентом заполнения (от 0% до 100%). CuraEngine поддерживает более 10 типов заполнения, включая адаптивное (изменяющее плотность в зависимости от геометрии).
  4. Построение поддержек. Если модель имеет нависающие элементы (угол наклона более 45–60° от вертикали), автоматически генерируются поддерживающие структуры, которые после печати удаляются. CuraEngine использует древовидные поддержки (tree supports), которые минимизируют контакт с моделью и облегчают удаление.
  5. Планирование перемещений. Движок оптимизирует траекторию движения печатающей головки: минимизирует холостые ходы, объединяет короткие отрезки в длинные линии, сглаживает углы для уменьшения вибраций. Используется алгоритм «змеиного» обхода (zigzag) для заполнения и контурный обход для стенок.
  6. Генерация 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 →