Субпиксельное сглаживание SLA DLP распечаток на практике или правильный антиалиас

moto-big

Всем привет! Продолжаю писать в своем блоге про фотополимерную печать с использованием проекционной технологии DLP. Сегодня хотел бы затронуть вопрос об улучшении качества поверхности распечаток. Не так давно компания Autodesk рассказала про так называемое субпиксельное сглаживание — это способ, при котором используется различная глубина пикселей(полутона), чтобы сгладить «артефакты» получающиеся при преобразовании векторной 3д модели в дискретную нарезку из растровых картинок. На 3dtoday был перевод данной статьи, его можно почитать по ссылкеhttp://3dtoday.ru/blogs/news3dtoday/50-shades-of-gray-or-subpixel-smoothing-for-the-projection-of-3d-print/

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

ishod1

Ну что же давайте попробуем проиллюстрировать проблему на практике, для этого я взял модель мотоцикла(можно скачать у меня в профиле) и распечатал без применения каких либо сглаживаний. Печать проводилась на принтере EGL2 на максимально возможном разрешении XY — 22 микрона, толщина слоя по Z — 20 микрон.

moto

Выберем нужный угол падения света и постараемся максимально приблизить крыло. Как видно, несмотря на высокое разрешение печати по осям XY мы имеем пиксельную лесенку на крыле и некоторых других частях.

moto-big

Давайте посмотрим откуда она получается, для этого я взял файл слоя на соответствующей высоте нарезки и посмотрел, как же представлено крыло:

sloy

Крыло находится под углом и соответственно очень наглядно видно откуда эта лесенка получается, т.е. фактически мы видим артефакты преобразования векторного представления модели в растровое.
Давайте попробуем применить различные типы сглаживания к модели. У меня в распоряжении оказалось 3 слайсера способных применять Anti-alias или сглаживание — это всем известный Creation Workshop, слайсер NanoDLP(или утилита SLC2PNG) и коммерческий слайсер Envisiontec Perfactory RP. Выполнив нарезку модели этими программами я получил следующую картинку:

sravnenie-antialias

Уже по этим результатам можно было делать некоторые выводы, алгоритм, который описан Autodesk применяется только в NanoDLP и слайсере от Envisiontec. Creation Workshop применяет другой алгоритм. Сглаживание в CW применяется уже непосредственно к картинкам без анализа исходной векторной информации, возможно это размытие по Гаусу или какой-либо другой растровый алгоритм, которые также доступны в многочисленных графических программах. А если алгоритм применяется к уже графической нарезке, без учета векторной информации, то становится не возможным определить, угол, образованный 3мя пикселями — это реальная деталь модели или это артефакт, возникший при преобразовании вектора в растр. Соответственно применение подобных алгоримов, на мой взгляд, не просто не решает задачу сглаживания лесенок(судя по картинке просто получили другую конфигурацию лесенки), а к тому же размывает реальные детали модели. Ну что же давайте распечатаем модели и проверим мои предположения. Ввиду того, что слайсер от Envisiontec не свободно распространяемая программа и не доступна общественности, я сделал распечатку моделей, нарезанных Creation Workshop и NanoDLP и сравнил их с моделью без сглаживания:

motos

Первое что бросилось в глаза модель, нарезанная NanoDLP гораздо более глянцевая, чем обычная модель и модель, нарезанная CreationWorkshop, в то время как модель CW на вид имеет «рыхлую» поверхность. К сожалению обычное фото не способно передать этих впечатлений, поэтому я взял электронный микроскоп:

Для начала CreationWorkshop(вверху) и обычная модель:

1

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

Теперь NanoDLP(вверху) и обычная:

2

Хоть лесенка и видна в микроскоп, однако она гораздо менее выражена и как результат глянцевая поверхность модели, особенно хорошо разница видна на колесе.
На мой взгляд алгоритм описанный Autodesk и используемый по умолчанию NanoDLP работает хорошо. Программная реализация его довольно сложна, в отличие от растровых алгоритмов применяемых к картинкам, т.к. закладывать его нужно на этапе нарезки и анализировать геометрию исходной модели. На данный момент NanoDLP или их же утилита SLC2PNG — единственная свободно распространяемая реализация данного алгоритма, при этом реализован он только по осям XY. Анализ результатов нарезки слайсера Envisiontec Perfactory RP показал, что там этот алгоритм реализован по всем 3м осям XYZ, при этом в распоряжении у меня была версия 2014 года, т.е. задолго до того, как AutoDesk рассказал об этом общественности, так что можно сделать вывод, что AutoDesk в этом плане далеко не новатор:)