01.10.2024 • C3D PolyShaper

Полигональное моделирование: обзор возможностей C3D PolyShaper

Александр Лонин, руководитель группы полигонального моделирования C3D Labs, к.ф.-м.н, представляет новую разработку компании — полигональное ядро C3D PolyShaper — и рассказывает о новых возможностях инструментов реверс-инжиниринга, алгоритмах модификации при процессинге сеток, диагностике и лечении сеток.

Новый полигональный объект с топологией MbPolyMesh
Рис. 1 Новый полигональный объект с топологией MbPolyMesh

С технической точки зрения компания C3D Labs сделала новый полигональный объект топологии на основе half-edge. По своей сути продукт является наследником Item’a и устроен аналогично всем хорошо знакомому Solid’у. Внутри PolyShaper лежит топология, которая агрегирует в себе функции работы с собственной сеткой, а также сегментации, которая может существовать поверх нее. И все дальнейшее развитие функционала в полигональной теме будет вестись в рамках этого объекта, а все новые функции и классы, которые позволяют с ним работать, будут находиться в файле action_polymesh.h, который тоже сделан по аналогии с другими action-файлами.

Масштабируемость
Рис. 2 Масштабируемость

Для понимания масштабируемости решения и также понимания, с какими сетками мы можем иметь дело, эксперты компании C3D Labs провели особый стресс-тест. На рисунке изображен результат томографии грудной клетки. Это обычный STL-файл, состоящий из 25 миллионов треугольников. Сшивка, то есть непосредственно создание топологии на нем, занимает около 100 секунд. Далее с такой сеткой могут работать разные алгоритмы. Например, обрезка плоскостью занимает около 50 секунд. Другими словами, с такими сетками можно иметь дело, но они уже выглядят на грани того, что возможно для среднестатистического компьютера.

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

Совмещение (регистрация). Два частично совпадающих скана (RangeVision)
Рис. 3 Совмещение (регистрация). Два частично совпадающих скана (RangeVision)

На слайде можно увидеть работу новой функции совмещения или регистрации двух объектов в разных вариантах. Сейчас доступны 2 варианта реализации функции: «сетка-сетка» и «сетка-оболочка». Здесь представлен результат работы совмещения частично совпадающих сканов, которые были получены с разных ракурсов.

Автоматическое совмещение (регистрация). Параметрическая модель и ее полный скан (RangeVision)
Рис. 4 Автоматическое совмещение (регистрация). Параметрическая модель и ее полный скан (RangeVision)

Мы сделали самое простое автоматическое совмещение априори одинаковых объектов, например модели и ее скана. Такое совмещение возможно применять для объекта, находящегося в любом положении.

Вписывание с ограничениями. Цилиндр, перпендикулярный заданной плоскости
Рис. 5 Вписывание с ограничениями. Цилиндр, перпендикулярный заданной плоскости

Продукт Polyshaper предоставляет возможность осуществлять вписывание аналитических поверхностей с ограничениями на положение объекта и/или на его размеры. Выше, например, представлен результат вписывания цилиндра, который должен быть перпендикулярен заданной плоскости.

Вписывание поверхностей вращения и выдавливания
Рис. 6 Вписывание поверхностей вращения и выдавливания

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

Реверс органических форм. Модель Bone.stl (Artec3D) — скан кости
Рис. 7 Реверс органических форм. Модель Bone.stl (Artec3D) — скан кости

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

Реверс органических форм
Рис. 8 Реверс органических форм

Алгоритм автоматически разбивает поверхность на четырехугольные участки, аппроксимирует на них NURBs-поверхности и объединяет их водонепроницаемую оболочку с достаточно хорошим качеством G1. На этой модели можно увидеть достаточно много Т-контактов, то есть участков, где один патч по одной стороне граничит с несколькими другими. Существуют методы, которые позволяют построить регулярную сетку, но они не всегда гарантируют результат. Поэтому сначала было сделано построение оболочки с учетом Т-контактов.

Реверс органических форм
Рис. 9 Реверс органических форм

Выше представлена та же самая оболочка, но только без отрисовки ребер, чтобы можно было оценить гладкость такого решения.

Следующий ряд алгоритмов связан с модификацией и препроцессингом сеток.

Драпировка оболочек тканью
Рис. 10 Драпировка оболочек тканью

Одна из новых для C3D Labs задач — моделирование драпировки оболочек тканью. На рисунке выше в центре мы видим оригинальную оболочку с некими надрезами, которые были сделаны на основе предыдущего анализа. Слева — смоделированные ячейки двунаправленной ткани, а справа — получающаяся развертка. Если ее приложить в зеленой точке и разгладить, то она должна накрыть эту оболочку без складок.

Уточнение триангуляции. Задание области уточнения габаритным кубом (кубами)
Рис. 11 Уточнение триангуляции. Задание области уточнения габаритным кубом (кубами)

Еще одно улучшение продукта — функция уточнения триангуляции. Предположим, что у нас есть некий параметрический цилиндр, с которого мы неким способом получили вот такую грубую триангуляцию, как показано выше на рисунке слева. Далее мы понимаем, что в некой области сетку нужно сделать более подробной. Задать эту область можно, например, габаритным кубом, который можно здесь видеть. Алгоритм внутри куба делает размер треугольников не более, чем заданный изначально размер, а снаружи обеспечивает плавное распространение этого размера для уменьшения числа резких переходов.

Уточнение триангуляции. Использование параметрической подложки
Рис. 12 Уточнение триангуляции. Использование параметрической подложки

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

Однородный ремешинг. С параметрической подложкой (оболочкой, из которой была создана сетка)
Рис. 13 Однородный ремешинг. С параметрической подложкой (оболочкой, из которой была создана сетка)

Развитием темы триангуляции является однородный ремешинг. Известно, что все стандартные методы получения линеаризации оболочек создают сетку с большим количеством плохих треугольников, сетку плохого качества, достаточного для отрисовки, но непригодного в ряде других приложений. С помощью ремешинга можно существенно улучшить качество этой сетки, которая будет состоять из треугольников, максимально близких к равносторонним и с заданным размером ребра.

Однородный ремешинг
Рис. 14 Однородный ремешинг

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

Ремешинг по кривизне. С параметрической подложкой (оболочкой, из которой была создана сетка)
Рис. 15 Ремешинг по кривизне. С параметрической подложкой (оболочкой, из которой была создана сетка)

Но в ряде случаев у пользователя должна быть возможность как-то варьировать размер треугольников в разных частях модели. Для этого существует вариант ремешинга по кривизне. Его можно оценить на примере рисунка кусочка некой турбинной лопатки. В районе ее лезвия кривизна большая. Поэтому желательно, чтобы там треугольники были малого размера, а дальше их размер увеличивается для упрощения модели без потери качества.

Оценка кривизны по сетке
Рис.16 Оценка кривизны по сетке

Чтобы такую же схему использовать для сеток без подложки, надо уметь оценивать кривизну этой сетки. Классический способ оценки с помощью дискретного дифференциального оператора на сканах дает плохие результаты. Это можно увидеть на изображении слева. Для того чтобы можно было с ними работать, добавлен еще один вариант оценки кривизны сетки путем вписывания полиномиальной поверхности. Такой способ дает более гладкий итоговый результат, как видно на изображении справа.

Ремешинг по кривизне
Рис. 17 Ремешинг по кривизне

Полученный результат может быть использован в качестве управляющей функции размера треугольников. В итоге мы получаем ремешинг по кривизне.

Ремешинг по кривизне
Рис. 18 Ремешинг по кривизне

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

Реверс. Модель Head Sculpture (Artec3D)
Рис. 19 Реверс. Модель Head Sculpture (Artec3D)

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

Ремешинг четырехугольниками. Возможность задания размера ячейки
Рис. 20 Ремешинг четырехугольниками. Возможность задания размера ячейки

Еще одна интересная тема, которую мы все еще изучаем, — это quad или quad-dominant ремешинг. По сути, от разбиения поверхности на четырехугольные патчи для реверса нужен всего один шаг до того, чтобы сделать вот такой quad mesh. На рисунке выше представлены объекты, полученные в результате минимальных усилий, с возможностью регулирования размера ячейки: слева она больше, справа меньше.

Лечение вырожденных треугольников
Рис. 21 Лечение вырожденных треугольников

Остановимся подробнее на диагностике и лечении сеток. Первое, что было сделано инженерами C3D Labs, — это создание автоматических алгоритмов лечения вырожденных треугольников. Такие треугольники бывают двух типов. Первый — иглообразный, так называемый Needle, второй — Cap (от слова «шляпа», они похожи на вьетнамскую шляпу). Существует и третий тип вырожденных треугольников, смешение первых двух. И если Needle лечится более-менее просто, то лечение Cap-варианта оказывается нетривиальным, когда такие треугольники собираются рядом. C3D PolyShaper имеет встроенный автоматический алгоритм, который исправляет такие ситуации.

Закрытие открытых контуров в сетке
Рис. 22 Закрытие открытых контуров в сетке

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

Закрытие открытых контуров в сетке
Рис. 23 Закрытие открытых контуров в сетке

Этот алгоритм также подходит для «ремонта» отверстий различной формы и сложности.

Закрытие открытых контуров в сетке
Рис. 24 Закрытие открытых контуров в сетке

Он имеет большие перспективы развития. Ведь также важно уметь частично закрывать дырки, строить мостики и учитывать аналитичность окрестности, если ее можно нащупать.

В заключение несколько слов о дальнейшем развитии продукта C3D PolyShaper. В первую очередь это модернизация булевых операций, перевод их на half-edge с учетом неманифолдности.

Далее C3D Lab продолжит работу над реверс-инжинирингом органических форм с учетом границ и возможности ручного редактирования патчей. Планируется создание разного рода умных кистей (smart brush). Кроме того, будет активно продолжаться работа по диагностике и лечении сеток.

Компоненты геометрического ядра C3D
Рис. 25 Компоненты геометрического ядра C3D

И в заключение расскажем о положении нашего нового модуля внутри C3D Toolkit. Он не является изолированным, а живет в симбиозе со всеми остальными модулями комплексного решения. Для того чтобы читать и писать файлы разных форматов, существует модуль Converter. Модули Modeler и Solver включают в себя разнообразный параметрический или алгоритмический функционал. Результаты надо уметь хорошо рисовать, для этого используются модули Vision и Web Vision. И все это работает в рамках единого концепта под названием С3D Toolkit.

Александр Лонин, Руководитель группы полигонального моделирования, к.ф.-м.н, C3D Labs
Александр Лонин
Руководитель группы полигонального моделирования, к.ф.-м.н
C3D Labs
Поделиться материалом
Вверх