Кремень КД Реклама
Кремень КМ Реклама

STL и борьба с сеткой

Leoluch
Идет загрузка
Загрузка
06.07.2015
60940
23
3D-моделирование

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

24
Добрый день, дорогие посетители 3dtoday

Сегодня мне хочется поднять такую тему, как STL и ретопология. Данная статья будет полезна для новичков и людей, которые работают в таких системах, как Inventor, Компас, Solid и пр. В свое время мне бы очень пригодилось знание, которые я опишу в статье ниже. Я никоим образом не претендую на знатока в области сеток и буду очень рад, если кто-нибудь более знающий поправит или дополнит мой материал.

Для начала обсудим - что такое STL ? STL - это популярный формат представления 3d объектов, представляющий из себя треугольную полигональную сетку. При этом внутри эта сетка пустая, что довольно важно.

Так что такое полигон? ОЧЕНЬ условно, полигон - это некоторый геометрический элемент (многоугольник), который содержит face, edge, vertex. Между точками мы проводим грани, а грани формируют сторону полигона. Кроме этого у каждого полигона есть нормаль, которая показывает в какую сторону отражается свет от данной стороны. Из-за неправильного направления этих нормалей очень часто возникают проблемы с 3д печатью. Но мы отвлеклись. Как правило, используется квадратная и треугольная сетка - от многогранных сеток стараются избавляться. К сожалению, и с треугольной сеткой не все гладко и сейчас разберем почему.

Этап 1. Работа в инженерной САПР

Для тех, кто работает в инженерной системе привычно построить эскиз и совершить с ним операцию. Таким образом построим простейший квадратик. Для чистоты эксперимента буду использовать Inventor и Компас. После того, как построили геометрию - экспортируем ее в формате stl. С точки зрения обывателя, мы ожидаем что у нас будет 6 полигонов, формируемые 8 точками ( vertex). Но, к сожалению, это не так:
STL и борьба с сеткой
Рисунок 1. Stl из Компаса
STL и борьба с сеткой
Рисунок 2. Сетка из Inventor'a



Это связано с тем, что как я описал ранее, сетка STL является треугольной и наша программа в автоматическом режиме разбила квадраты на треугольники. И если для простого прямоугольника мы получаем не слишком критичный результат, то стоит добавить туда сопряжение и результат становится совсем плачевный.
STL и борьба с сеткой
Рисунок 3. STl прямоугольника со скруглениями

И если аппроксимация окружности на отрезки - это не слишком страшно, то такое количество элементов и потеря симметрии ( а у нас теперь нечетное количество столбцов) проблема довольно ощутимая (Да, в некотором софте можно редактировать настройки генерируемой сетки, но это все-равно происходит автоматически). Это почувствуется и как в расчетной программе на основе формата stl, так и в случае, если вы попробуете это редактировать в художественной программе. Работать с такой сеткой ужасно неудобно. А значит нам требуется какой-нибудь способ работать с этими сетками.

Этап 2. Работа с сеткой

Возьмем случайную модель с портала thingverse. В моем случае выбор пал на череп из игры Warhammer 40k. Откроем stl и посмотрим на первичную сетку.
STL и борьба с сеткой
Рисунок 4. Первичная STL сетка

Как видите, сетка не только вся мутная, она еще и асимметричная. В таком случае рекомендуется удалить половину детали и работать только с частью, но в данный момент не будем это делать.

Многие привыкли чинить свои модели с помощью различных программ. Возьмем meshmixer и посмотрим, как он повлияет на полигоны модели. Специально сохраним исправленную деталь в двух форматах - obj и stl.
STL и борьба с сеткой
Рисунок 5. OBJ и STL после Meshmixera

Как видим, ретопология модели практически не изменилась, а отличие между obj и stl вообще нулевое. Таким образом понимаем, что чинить аккуратность сетки нам придется руками. Для начала попробуем использовать инструментарий, который есть внутри Maya (уверен, что в Blender, Softimage, 3dsmax и пр. есть аналогичные функции). Первым этапом превратим сетку в квадратную, как показано на рисунке.
STL и борьба с сеткой
Рисунок 6. Квадратная сетка изначальной модели

Сетка стала чуть более удобной, хотя ее асимметричность стала более заметной. После этого попробуем воспользоваться опциями clean up и reduce.
STL и борьба с сеткой
Рисунок 7. Попытка использования clean up

К сожалению, опции clean up и reduce не привели к приемлемым результатам - так что смело забываем про чистку сетки в Maye и переходим к более подходящему инструментарию - Zbrush и Mudbox, благо передача данных осуществляется одной кнопкой. Начнем с Zbrusha. Выглядит это следующим образом:
STL и борьба с сеткой
Рисунок 8. Первичная сетка в Zbrush

Справа во вкладке Geometry используем функцию ZRemesher, которая прекрасно переделывает всю ретопологию модели. Спустя небольшое время получаем такой результат:
STL и борьба с сеткой
Рисунок 9. После первого автоматического редактирования Zremesher

Сетка выглядит прекрасно. Возможно она чуть мелковата и немного уехала симметричность модели, но в целом результат очень приемлемый. Вполне возможно в Zremesher можно установить симметричность, но что-то я не нашел данной функции. Следующим шагом уменьшим количество полигонов и сделаем еще одну переработку геометрии. Получаем следующий результат:
STL и борьба с сеткой
Рисунок 10. После второго автоматического редактирования Zremesher

Асимметрия стала более явной, но при этом сетка стала еще меньше (количество элементов), сохранив прежнюю геометрию. Экспортируем результат в формат stl и iges и отправляем это дело в Inventor. О том , как сделать из stl твердотельный объект останавливаться не буду - для этого не так давно была статья на сайте. Покажу финальный результат после передачи:
STL и борьба с сеткой
Рисунок 11. STL после конвертации в твердотельный

Как видите, это твердотельный объект, который состоит из кучи треугольников, но их намного меньше , чем могло бы быть в случае первичного экспорта - такая модель меньше грузит машину и с ней удобнее работать. Вообще, я надеялся, что при экспорте в формате iges получится сохранить квадратную сетку - с ней было бы работать намного удобнее, но при экспорте почему-то в Inventor приходит белый экран. Об этой проблеме есть пара разделов на форуме Autodeska, но данная тематика требует отдельной проработки, а углубляться в это не особо хочется. В любом случае, после Zbrusha мы получили очень приемлемую геометрию, которая намного удобнее той, что была в начале. Дальнейшее ее редактирование в любой художественной программе не вызовет никаких проблем.

Экспорт в Mudbox первичной stl сетки не дал никаких результатов - Mudbox отказался менять ретопологию модели, что меня немного огорчило. А вот поработать с геометрией из Zbrusha получилось довольно интересно. Я постарался сильно уменьшить количество полигонов, чтобы сильно упростить работу с данным объектом. Кроме этого в Mudboxe намного очевиднее сделать симметричность детали - вышло следующее:
STL и борьба с сеткой
Рисунок 12. До и после переработки Mudboxa

Да, мы слегка сжевали качество и нижняя часть потеряла свою остроту, но при этом мы добились симметрии в нашем объекте, сохранили форму черепа и сильно уменьшили количество полигонов. В Inventor это придет в следующем виде:
STL и борьба с сеткой
Рисунок 13. STL после Mudboxa в Inventor

Объект вышел немного грубоват, но геометрия вполне рабочая. Сделал тестовый элемент выдавливания, чтобы показать, что все отлично
STL и борьба с сеткой
Рисунок 14. Исправленная геометрия в Inventor

Выводы:

а) Как видите, слов много, а действий на самом деле мало. Для того, чтобы изменить сетку модели надо знать всего одну кнопку в Zbrush или найти альтернативы ( я уверен, они есть и может в комментариях кто скажет. Опыт от топогана например). Еще мы потеряли симметрию - но это лечится удалением и копированием половины модели на начальном этапе.

б) Теперь, надеюсь, вы понимаете, почему STL портит вашу геометрию и что деталь в stl формате может быть легко изменена.

в) Хотите нормально работать с STL файлами - легче уже выучить какой-либо художественный пакет, благо на рынке сейчас их много и еще больше курсов. Для того, чтобы подправлять сетки (если не хотите делать свои модели) достаточно знать 5-10 функций.

Надеюсь, что это было полезно и очень хочу, чтобы мой материал кто-нибудь дополнил или указал полезную литературу - с удовольствием ознакомлюсь. Все, что я написал - это личное понимание и опыт, которые сформировались после перехода на полигональное моделирования спустя 5 лет моделирования в Autodesk Inventor.

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

24
Комментарии к статье