CG for Simulation Tutorial
This commit is contained in:
parent
51ea3ce4c4
commit
8327e3304d
7 changed files with 191 additions and 62 deletions
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
id: cad-cg-pipeline
|
||||
title: 'Экспорт для технологии компьютерной графики и симуляции.'
|
||||
title: 'Tехнологии компьютерной графики для симуляции'
|
||||
---
|
||||
# Введение
|
||||
|
||||
## Основные методы описания трёхмерных объектов
|
||||
|
||||
### Полигональное моделирование
|
||||
|
@ -11,20 +11,21 @@ title: 'Экспорт для технологии компьютерной гр
|
|||
### САПР моделирование
|
||||
Описывает поверхность математической функцией в случае Конструктивной блочной геометрии (Constructive Solid Geometry, CSG) или Граничным представлением (Boundary representation, BREP). При визуализация САПР моделей происходит автоматическая **тесселяция**, которая дискретизирует поверхность в сетку из треугольников, при этом нужно выбирать баланс между избыточной **ресурсоемкостью** на визуализацию, либо **точностью** визуализации.
|
||||
|
||||
|
||||
# Технологии компьютерной графики и симуляции
|
||||
## Технологический цикл производства
|
||||
|
||||
Качественный 3D ассет имеет хороший баланс между точностью геометрии и реcурсоёмкостью. То есть, хочется точность геометрии иметь выше, а ресурсоемкость - ниже.
|
||||
|
||||
В общем виде технология подготовки ассетов к симуляции состоит из следующих этапов:
|
||||
1. Тесселяция САПР модели.
|
||||
2. Ретопология и оптимизация от результата тесселяции.
|
||||
3. Придание физических свойств объекту назначением материала.
|
||||
4. Параметрическое текстурирование фактуры физического материала модели.
|
||||
5. Запекание растровых текстур физического материала.
|
||||
6. Экспорт CG ассета (низкополигональная модель с материалом и набором текстур).
|
||||
6. Экспорт CG ассета (низко-полигональная модель с материалом и набором текстур).
|
||||
|
||||
Качественный 3D ассет имеет хороший баланс между точностью геометрии и реcурсоёмкостью. То есть, хочется точность геометрии иметь выше, а ресурсоемкость - ниже.
|
||||
Ниже данные этапы будут рассмотрены по-отдельности.
|
||||
|
||||
## 1. Тесселяция САПР модели
|
||||
## Тесселяция САПР модели
|
||||
|
||||
Наш технологический процесс использует графический редактор FreeCAD с САПР ядром на библиотеке Open CASCADE Technology (OCCT) и его аппаратно-программный интерфейс на ЯП Python.
|
||||
|
||||
|
@ -33,9 +34,9 @@ title: 'Экспорт для технологии компьютерной гр
|
|||
|
||||
")
|
||||
|
||||
### Алгоритмы тесселяции для **Визуализации**
|
||||
### Алгоритмы тесселяции для визуализации
|
||||
#### Алгоритм триангуляции Делоне с помощью алгоритма Ватсона
|
||||
Реализация алгоритма BRepMesh_IncrementalMesh является частью САПР библиотеки OCCT. Это инкрементный алгоритм, который разбивает треугольники до тех пор, пока результат тдискретизации не будет удовлетворять критериям отклонения **допуска** отклонения по расстоянию и углу. Результат для допустимой замкнутой оболочки, может считаться твердотельным, поскольку алгоритм учитывает закрытость оболочки.
|
||||
Реализация алгоритма BRepMesh_IncrementalMesh является частью САПР библиотеки OCCT. Это инкрементный алгоритм, который разбивает треугольники до тех пор, пока результат дискретизации не будет удовлетворять критериям отклонения **допуска** отклонения по расстоянию и углу. Результат для допустимой замкнутой оболочки, может считаться твердотельным, поскольку алгоритм учитывает закрытость оболочки.
|
||||
Сетка подходит для визуализации, машинного обучения, симуляции машин и механизмов и для многих алгоритмов с контролируемой точностью.
|
||||
|
||||
Подробнее в статье [OCCT User Guides](https://dev.opencascade.org/doc/overview/html/occt_user_guides__mesh.html)
|
||||
|
@ -43,10 +44,11 @@ title: 'Экспорт для технологии компьютерной гр
|
|||

|
||||

|
||||
|
||||
Как можно наблюдать на изображениях выше, резульиирующая полигональная модель имеет сетку только с формообразующими ребрами и ребрами, обусловленными триангуляцией. Полигональная сетка не равномерная, но визуально ровная и **немятая**, такая сетка хорошо позволяет уменьшить количество вершин/граней сетки с минимальными изменениями формы.
|
||||
Как можно наблюдать на изображениях выше, результирующая полигональная модель имеет сетку только с формообразующими ребрами и ребрами, обусловленными триангуляцией. Полигональная сетка не равномерная, но визуально ровная и **немятая**, такая сетка хорошо позволяет уменьшить количество вершин/граней сетки с минимальными изменениями формы.
|
||||
|
||||
### Алгоритмы тесселяции для **Метода Конечных Элементов** (FEM)
|
||||
### Алгоритмы тесселяции для Метода Конечных Элементов (FEM)
|
||||
Применяются для расчёта механики твёрдого деформируемого тела и других исследований, где используются FEM-методы. Приведем примеры некоторых из них.
|
||||
|
||||
#### Алгоритм Netgen
|
||||
Netgen использует несколько параметров, включая максимальный и минимальный размеры элементов, степень детализации сетки, количество шагов оптимизации и т.д. Netgen в основном работает в 3D. В зависимости от заданных параметров он может изготавливать элементы с размерами, адаптированными к локальным кривизнам - большими на участках плоской поверхности и меньшими на гнутых участках. Как только сетка построена для ребер и граней, Netgen выполняет дополнительные итерации для упрощения сетки. Установка этого параметра в 0 отключает упрощение. Netgen в целом медленнее, чем, например, Gmsh, и более чувствителен к качеству входных моделей.
|
||||
|
||||
|
@ -56,10 +58,10 @@ Netgen использует несколько параметров, включ
|
|||

|
||||
|
||||
Этот алгоритм можно рассмотреть, как частный случай полигональной модели по методу конечных элементов.
|
||||
Как можно наблюдать на изображениях выше, резульиирующая полигональная модель имеет сетку с равномерной дискретизацией, это применяется для случаев, когда модель требуется, например, изгибать или для проведения физических расчетов. Полигональная сетка визуально **мятая**, имеет избыточное количество вершин/граней, поэтому применение такого рода алгоритмов должно быть обосновано, для предупреждения перерасхода вычислительных ресурсов на процесс тесселяции.
|
||||
Как можно наблюдать на изображениях выше, результирующая полигональная модель имеет сетку с равномерной дискретизацией, это применяется для случаев, когда модель требуется, например, изгибать или для проведения физических расчетов. Полигональная сетка визуально **мятая**, имеет избыточное количество вершин/граней, поэтому применение такого рода алгоритмов должно быть обосновано, для предупреждения перерасхода вычислительных ресурсов на процесс тесселяции.
|
||||
|
||||
#### Алгоритм Gmsh
|
||||
Gmsh работает в 3D и делает 4 прохода: анализ геометрии, анализ сетки, тесселяция, постобработка. Gmsh использует упомянутую выше OCCT для функций конструктивной геометрии и взаимодействует с дополнительной внешней сеткой и библиотеками адаптации сетки Netgen и Mmg3d для упрощения на этапе постобработки.
|
||||
Gmsh работает в 3D и делает 4 прохода: анализ геометрии, анализ сетки, тесселяция, пост-обработка. Gmsh использует упомянутую выше OCCT для функций конструктивной геометрии и взаимодействует с дополнительной внешней сеткой и библиотеками адаптации сетки Netgen и Mmg3d для упрощения на этапе постобработки.
|
||||
|
||||
Подробнее на сайте проекта [gmsh.info](https://gmsh.info/)
|
||||
|
||||
|
@ -67,15 +69,17 @@ Gmsh работает в 3D и делает 4 прохода: анализ ге
|
|||

|
||||
|
||||
Результаты алгоритмов тесселяции по методу конечных элементов очень похожи.
|
||||
Можно сказать, что данный пример отличается от предидущего только повышенной плотностью полигональной сетки. Это было сделано намеренно для уменьшения эффекта мятых поверхностей. Эффект получен, но ресурсов затрачено в разы больше. Повторюсь, что применение такого рода алгоритмов должно быть обосновано.
|
||||
Можно сказать, что данный пример отличается от предыдущего только повышенной плотностью полигональной сетки. Это было сделано намеренно для уменьшения эффекта мятых поверхностей. Эффект получен, но ресурсов затрачено в разы больше. Повторюсь, что применение такого рода алгоритмов должно быть обосновано.
|
||||
|
||||
### Выбор алгоритма тесселяции
|
||||
|
||||
Основываясь на описанных выше результатах тесселяции, для экспорта виртуальные среды, симуляторы и прочих целей визуального характера **рекомендуется** выбирать **алгоритм триангуляции Делоне с помощью алгоритма Ватсона** в виде его реализации `BRepMesh_IncrementalMesh` из OCCT.
|
||||
Основываясь на описанном выше, для экспорта виртуальные среды, симуляторы и прочих целей визуального характера **рекомендуется** выбирать **алгоритм триангуляции Делоне с помощью алгоритма Ватсона** в виде его реализации `BRepMesh_IncrementalMesh` из OCCT.
|
||||
|
||||
Опционально допускается выбор любых альтернативных алгоритмов тесселяции, поддерживаемые в OCCT, для обоснованных случаев, либо при отрицательных результатах алгоритма триангуляции Делоне с помощью алгоритма Ватсона.
|
||||
|
||||
#### Обход недостаточной предсказуемости алгоритма триангуляции Делоне с помощью алгоритма Ватсона при высоких отклонениях
|
||||
(Опционально)
|
||||
|
||||
Для наглядного примера возьмем символ "O" шрифта Arial:
|
||||
|
||||

|
||||
|
@ -93,51 +97,74 @@ Gmsh работает в 3D и делает 4 прохода: анализ ге
|
|||
|
||||
Забегая вперед, посмотрим на следующий пример ретопологии:
|
||||
|
||||

|
||||

|
||||
|
||||
На примере выше видно, что и при таком минимуме способ показывает свою состоятельность. Результат получился симметричнее, так как кривизна левой и правой стороны, если не близка, то очень похожа. То есть результат предсказуемый.
|
||||
Для производственного 3D ассета нужно, конечно, выбирать уровень ретопологии с большим количеством полигонов, таким, чтобы обеспечить минимальное отклонение геометрии от САПР модели.
|
||||
|
||||
Вывод: проводить тесселяцию с минимальным допуском отклонения от истинной геометрии САПР модели, в ущерб ресурсоемкости.
|
||||
## Подготовка ассетов
|
||||
|
||||
## 2. Ретопология и оптимизация от результата тесселяции
|
||||
### 1. Обработка результата тесселяции (оригинальные модели)
|
||||
|
||||
Выше было сказано про предсказуемость результата алгоритмов тесселяции мы указали, что целесообразно выгонять детализированные 3д объекты, в ущерб их оптимизации. В этой части будет рассказано как добиться хорошего качества 3д модели при высокой ее оптимизации.
|
||||
По результату тесселяции рекомендуется произвести обработку геометрии полученных моделей, даже если внешне эти модели выглядят хорошо, они могут содержать сдвоенные точки, вывернутые наружу нормали. Эта процедура работы с ньюансами геометрии, довольно мелкая, и внешне никак не изменит облик детали, поэтому рзультат обработки примем как оригинальные модели (highpoly).
|
||||
|
||||
#### Ретопология комплексной сборочной 3д модели
|
||||
Механизм визуализации САПР редакторов отличается от того что используется в полигональных движках рендеринга, поэтому после тесселяции, наши оригинальные модели будут затенены самым плоским затенением (Flat Shading), при этом вся модель выглядит граненной. Поэтому важной деталью обработки результата тесселяции является сглаженное затенение (Smooth Shading) с выделением острых граней. Выделение острых граней еще называют группами затенения (Shading Groups). В нашем случае выбираются все грани, острота которых превышает 12 градусов.
|
||||
|
||||

|
||||

|
||||
|
||||
Весь внутренний состав сборочной модели задействуется только для производственных целей.
|
||||
### 2. Определение статичных сборок. Highpoly
|
||||
|
||||
Еще на этапе работы в САПР инженер помечает шарнирные соединения сборки, в нашем случае был выбран способ задания точек входа-выхода для узлов в месте шарнира. То есть все дочерние детали между точками входа-выхода принимаются как статично собранные.
|
||||
|
||||
После, статичные сборки будут обособленны группами по имени родительского локатора и считаться highpoly ассетами. Так же эти сборки будут использованы в качестве **рендер ассетов**.
|
||||
|
||||
### 3. Оптимизированные оригинальные детали. Midpoly
|
||||
|
||||
Опытным путем было установлено, что полный процесс технологии компьютерной графики неудобно использовать с движками симуляции типа Gazebo, так как они используют устаревший opengl-2, который не поддерживает физически корректный пак текстур. В итоге мы получаем в сцене однотонные серые детали. Было решено добавить для Gazebo (и подобных) дополнительный тип ассетов деталей - оптимизированные оригинальные детали (midpoly). Они содержат оригинальный цвет материалов, а этого уже достаточно для комфортной работы.
|
||||
|
||||
Весь состав оригинальной детали может быть довольно многочисленным
|
||||
|
||||

|
||||
|
||||
Весь внутренний состав сборочной детали задействуется только для производственных целей.
|
||||
Напротив, для целей компьютерной графики, в основном требуется получить только видимую оболочку 3д объекта
|
||||
Для midpoly мы предлагаем отсеять внутренние модели оценивая объем. В нашем случае берутся только модели, по объему превышающие 2 см3 (так как все видимые модели (корпус, панели и пр.) явно выше этого значения).
|
||||
|
||||

|
||||
В итоге получается тип ассетов, который будет считаться midpoly ассетами и использоваться для визуализации в движках симуляции. Так же эти детали будут использованы на этапе запекания текстур.
|
||||
|
||||
### 4. Оптимизированные неоригинальные детали. Lowpoly
|
||||
|
||||
Lowpoly - это самые оптимизированные ассеты, потому что они не содержат составных моделей, кусков, содержат только внешнюю оболочку, и вся информация об оригинальной поверхности и материалах для lowpoly запекается в физически корректный пак текстур (PBR).
|
||||
|
||||
Методика состоит в том чтобы найти отличительную особенность внешних граней сборки от внутренних. В данном случае мы предлагаем использовать метод ретопологии OpenVDB.
|
||||
OpenVDB — это программная библиотека с открытым исходным кодом для работы с разреженными объемными данными. Он предоставляет иерархическую структуру данных и связанные функции, помогающие вычислять объемные эффекты в приложениях компьютерной графики.
|
||||
В общем случае процесс можно представить как закваска теста. Можно регулировать степень разбухания, эффектом этого становится слияние деталей, щелей, отверстий размерами менее, чем размер разбухания. В итоге получается монолитное "тесто" которое можно представить в качестве "вакуумной упаковки", которая проецируется на оригинальную поверхность корпуса сборочной модели. В конце идет перестроение поверхности по на заданный предел по количеству точек 3д модели.
|
||||
|
||||

|
||||

|
||||
|
||||
Плюсы этого метода в том, что результат получается оптимизированным, качество модели хорошее. Минусы метода в том, что результат может вызвать проблемы на этапе 5. Запекание. Так же к минусам можно отнести точность поверхности, которая имеет ошибку до 10% от оригинальной поверхности.
|
||||
Плюсы этого метода в том, что результат получается оптимизированным, качество модели хорошее. К минусам можно отнести точность поверхности, которая имеет ошибку до 10% от оригинальной поверхности.
|
||||
|
||||
Для получения максимальной оптимизации при максимальной аккуратности формы модели, рекомендуется выполнять процесс ретопологии вручную, пользуясь услугами 3д художников компьютерной графики.
|
||||
|
||||
Нами будут искаться более совершенные методы ретопологии сборочных деталей.
|
||||
|
||||
#### Ретопология простой 3д модели
|
||||
|
||||
В отличие от сборочной модели, нет проблемы со внутренними деталями, и процесс сводится к простому перестроение поверхности по на заданный предел по количеству точек 3д модели для компенсации задатка при теселяции.
|
||||
В отличие от сборочной детали, нет проблемы со внутренними деталями, и процесс сводится к простому перестроение поверхности по на заданный предел по количеству точек 3д модели для компенсации задатка при тесселяции.
|
||||
|
||||
## 3. Придание физических свойств объекту назначением материала
|
||||
## Работа с материалами
|
||||
|
||||
На данном этапе предлагается для деталей применять FEM материалы, которые предназначены для описания физический свойств объекта, как типов (например: метал, пластик и др.) так и свойств (например: плотность, электропроводность и др.). Движки рендеринга разработанные для задач компьютерной графики, таких настроек не имеют, поэтому мы предлагаем назначать FEM материалы в САПР редакторе FreeCAD.
|
||||
### 1. Придание физических свойств объекту назначением материала
|
||||
|
||||
После экспорта из FreeCAD, наша технология предусматривает адаптацию FEM материала в 3д шейдер для рендеринга.
|
||||
Наша технология компьютерной графики предлагает задавать физические свойства материалов с при помощи стандарта FEM. Это устоявшийся стандарт, который который может описывать, как типы (например: метал, пластик и др.) так и физические свойства (например: плотность, электропроводность и др.). Движки рендеринга разработанные для задач компьютерной графики, таких настроек не имеют, поэтому мы предлагаем назначать FEM материалы в САПР редакторе FreeCAD.
|
||||
|
||||
После импорта из FreeCAD, наша технология предусматривает адаптацию FEM материала в 3д шейдер для рендеринга.
|
||||
|
||||

|
||||
|
||||
Как особенность нашей реализации, можно отметить "оплавление" острых граней объектов, как это обычно случается в реальной жизни - все острые грани либо обрабатываются, либо притупляются естественным путем, и никогда не бывают такими, как выглядят их производственные объекты в САПР редакторе. Этот момент мы считаем принципиальным.
|
||||
|
||||
## 4. Параметрическое текстурирование фактуры физического материала модели
|
||||
### 2. Параметрическое текстурирование фактуры физического материала модели
|
||||
|
||||
Задачи машинного обучения и компьютерного зрения требуют от объекта не только 3д шейдер, но и фактуру, неоднородность поверхности, или рисунок. Это помогает алгоритмам распознавания объектов точнее выполнить свою задачу.
|
||||
|
||||
|
@ -147,46 +174,151 @@ OpenVDB — это программная библиотека с открыты
|
|||
|
||||
На данном примере можно увидеть слоистую фактуру, как это бывает с напечатанными деталями по технология послойного плавления пластиком.
|
||||
|
||||
Плюсы процедурной параметрической генерации в том, что фактура получается объекто-независимой, легко переносится и адаптируется под любые формы, требуя минимальных доработок или вовсе без них. В минус можно записать требования к квалификации художника по текстурам и относительный порог вхождения по сравнению с традиционной пиксельной графикой.
|
||||
Плюсы процедурной параметрической генерации в том, что фактура получается объектно-независимой, легко переносится и адаптируется под любые формы, требуя минимальных доработок или вовсе без них. В минус можно записать требования к квалификации художника по текстурам и относительный порог вхождения по сравнению с традиционной пиксельной графикой.
|
||||
|
||||
## 5. Запекание растровых текстур физического материала
|
||||
Описанные материалы применяются для highpoly ассетов
|
||||
|
||||
Для этого шага нам потребуется ранее заготовленные 3д модели после этапов тесселяции и ретопологии. Попарно. Суть метода в том, чтобы перенести все параметрические данные и особенности формы поверхности с оригинального объекта, объекта после тесселяции, (высокополигональный объект) на оптимизированный объект (низкополигональный объект).
|
||||
Данный пункт обширен, и будет рассмотрен в качестве беглого обзора.
|
||||
## Запекание (Baking)
|
||||
|
||||
#### Развертка поверхности низкополигонального объекта
|
||||
### Источник и цель запекания
|
||||
|
||||
Для начала выполняется раскройка поверхности низкополигонального объекта (т.н. развертка).
|
||||
На предыдущих этапах мы получили 3 типа ассетов:
|
||||
- Высокополигональный (highpoly)
|
||||
- Среднеполигональный (midpoly)
|
||||
- Низкополигональный (lowpoly)
|
||||
|
||||
Подготовка материала для lowpoly ассетов сводится к запеканию (Baking). Вкратце, задачей процесса является перенос информации с источника (оригинальной поверхности) на цель (lowpoly поверхность).
|
||||
|
||||
Мы предлагаем в качестве источника взять midpoly ассет, так как **при использовании highpoly ассета**, который фактически является группой из множества оригиальных объектов **время запекания увеличивается пропорционально количеству состава highpoly группы**, в наших тестах это 0.5 часа против 1 суток.
|
||||
|
||||
Midpoly ассет внешне совпадает с highpoly ассетом, имеет тот же физический материал.
|
||||
|
||||
### Состав набора текстур
|
||||
|
||||
Технологии компьютерной графики и симуляции использует PBR набор текстур.
|
||||
|
||||
PBR (Physically Based Rendering) текстуры - это текстуры, которые используются в компьютерной графике для симуляции физических свойств материалов, таких как отражение, преломление, шероховатость и других.
|
||||
|
||||
Существует 2 основных типа наборов PBR текстур:
|
||||
|
||||
#### PBR Specular
|
||||
|
||||
Использует карты диффузии, зеркального отражения и глянца. Ориентирован преимущественно на мобильные 3d движки.
|
||||
|
||||
**Плюсы**:
|
||||
- Карта цветов RGB содержит все характеристики зеркального отражения. Эта карта дает действительно отличный результат, поскольку для данных она использует все три цветовых канала.
|
||||
- Диффузия и отражательная способность контролируются напрямую с помощью двух четких входов, которые могут предпочесть художники с предыдущими знаниями шейдеров.
|
||||
- Полный ввод цвета дает вам больше контроля над отражательной способностью неметалла.
|
||||
|
||||
**Минусы**:
|
||||
- Вы теряете возможность упаковывать черно-белые карты в каналы RGB, поскольку для большей точности используется полноцветная карта.
|
||||
- Нелогичные значения отражательной способности просты в использовании и дают ошибочные результаты.
|
||||
- По сравнению с рабочим процессом Metalness он использует больше текстурной памяти.
|
||||
|
||||
#### PBR Metalness
|
||||
|
||||
Использует карты базового цвета, металлика и шероховатости. Ориентирован преимущественно на high-end 3d движки.
|
||||
|
||||
**Плюсы**:
|
||||
- Металлик можно использовать в цветовом канале «упакованной карты», поскольку он черно-белый. Различные текстуры в оттенках серого включены в каждый возможный цветовой канал (красный, зеленый, синий) на этих картах. Карты ORM (Ambient Occlusion, Roughness, Metallic) или что-то подобное — частый подход к экономии памяти при использовании PBR-Metallic.
|
||||
- Карта альбедо определяет цвет предмета независимо от типа вещества, что теоретически облегчает его понимание художниками.
|
||||
- Материалы упрощены до двух категорий: металл/неметалл, что может затруднить создание контента с нереалистичными значениями текстур.
|
||||
- По сравнению с полноцветным зеркальным методом он использует меньше текстурной памяти.
|
||||
**Минусы**:
|
||||
- Артефакты могут возникнуть, поскольку карты Metallic предоставляют меньше информации, чем карты Specular Color, и используются в качестве маски в шейдере. Обычно он небольшой, но иногда может стать серьезной проблемой, особенно в сценах со сложными поверхностями, расположенными непосредственно там, где находится камера.
|
||||
- Артефакты белых линий вызваны точками перехода материалов.
|
||||
- Если художники не понимают рабочий процесс, можно использовать неверные значения в карте металлика и нарушить работу системы.
|
||||
|
||||
В нашей статье мы будем рассматривать PBR Metalness набор.
|
||||
|
||||
Для полного отображения информации о высоко-полигональном объекте на низко-полигональном требуется следующий PBR Metalness набор текстур:
|
||||
- Цвет (Аlbedo). Еще это может быть Diffuse, но с оговорками. Он представляет собой простой оттенок материала, или нескольких материалов, без теней.
|
||||
- Нормали (Normal). В ней записано чем отличается низкополигональный объект от высокополигонального, плюс особенности рельефа фактуры материала.
|
||||
- Локальные тени (Ambient occlusion). Это тени объекта, отбрасываемые самим собой на самого себя.
|
||||
- Шероховатость (Roughness). Текстура поверхности с указанием локальной шероховатости в диапазоне 0-1.
|
||||
- Металлик (Metallic). Локально определяет тип поверхности метал/неметал. Может быть либо 0, либо 1.
|
||||
|
||||

|
||||
|
||||
|
||||
Ambient occlusion, Roughness и Metallic текстуры черно-белые, потому что используются как скалярные величины, поэтому эти текстуры можно упаковать в одну по RGB каналам. Как было сказано выше, это положительно сказывается на производительности в 3д движке симуляции, так как снижает количество обращений - на 3 меньше. Например для 10ти материалов будет уже экономия на 30 обращений!
|
||||
|
||||

|
||||
|
||||
### 1. Триангуляция lowpoly поверхности
|
||||
|
||||
Перед запеканием лучше триангулировать lowpoly поверхность, преобразуя её из полигонов в чистые треугольники. Это предотвращает дальнейшее изменение нормалей вершин, что может привести к появлению зеркальных артефактов. Так как в 3д движке (рендеринга) полигоны все равно триангулируются, но точно неясно, совпадет ли результат триангуляции 3д движка с результатом триангуляции текущего движка запекания. Иногда инструмент запекания или экспортер/импортер сетки повторно триангулирует полигоны. Четырехугольник на самом деле рассматривается как два треугольника, и внутренняя грань между ними часто переключается по диагонали во время операций моделирования. Когда вершины четырехугольника перемещаются в определенных формах, алгоритм программного обеспечения для моделей многоугольников пытается сохранить поверхность четырехугольника в «рациональной» неперекрывающейся форме. Это делается путем переключения внутреннего края между треугольниками.
|
||||
|
||||
Если модель зеркальная, убедитесь, что триангуляция также зеркальная. В противном случае это приведет к артефактам шейдинга (затенения), поскольку только одна сторона будет соответствовать исходной запечке.
|
||||
|
||||
### 2. Развертка поверхности низкополигонального объекта
|
||||
|
||||
Для начала выполняется раскройка поверхности низкополигонального объекта (развертка).
|
||||
|
||||

|
||||
|
||||
Ключевые особенности:
|
||||
- Не должно быть наложений, пересечений кусочков. Каждый пиксель целевой текстуры должен быть представлен на модели только 1 раз.
|
||||
- Не должно быть наложений, пересечений островов (лоскутов). Каждый пиксель целевой текстуры должен быть представлен на модели только 1 раз.
|
||||
- Кусочки не должны быть сильно растянуты по одной из сторон. Идеально, если они не растянуты вовсе.
|
||||
- Все кусочки развёртки должны быть в едином масштабе. Допускается обоснованная вариация масштаба для повышения эффективности использования площади развертки.
|
||||
- Расстояние между кусочками должно быть обосновано размером целевой текстуры. Например, для текстуры 4096 пикселей это расстояние должно быть равно не менее 32 пикселя. Это обеспечит качественное отображение текстуры на объекте в любых условиях использования.
|
||||
- Занимаемая кусочками площадь должна занимать не менее 50% от общей площади развертки.
|
||||
- Все острова развёртки должны быть в едином масштабе. Допускается обоснованная вариация масштаба для повышения эффективности использования площади развертки.
|
||||
- Допуск между островами должен быть обосновано размером целевой текстуры.
|
||||
- Занимаемая островами площадь должна занимать не менее 50% от общей площади развертки.
|
||||
|
||||
#### Запекание в набор текстур.
|
||||
**Допуск между островами выкройки UV (margin или padding)**. Это ключевой параметр при развертке.
|
||||
Когда целевой движок визуализирует сцену, он использует фильтрацию текстур для плавного рендеринга текстуры в процессе, называемом понижающей дискретизацией. Если соседние острова имеют цвета, которые значительно отличаются, то эти цвета могут «растекаться», образуя швы на модели. Поскольку текстура уменьшается (процесс уменьшения размера текстур в GPU - mipmaping), в конечном итоге эти цвета начинают смешиваться. Чтобы избежать этого, необходимо обеспечить минимальные допуски по краям в промежутках между каждым островом развертки. При создании развертки расстояние между оболочками должно определяться с учетом отступов по краям. Если допуски между островами недостаточно широки, не будет достаточной прокладки по краям для предотвращения артефактов.
|
||||
|
||||
Для полного отображения информации о высокополигональном объекте на низкополигональном требуется следующий набор текстур:
|
||||
- Цвет. Аlbedo. Еще это может быть Diffuse, но с оговорками. Он представляет собой простой оттенок материала, или нескольких материалов, без теней.
|
||||
- Карта нормалей. Normal. В ней записано чем отличается низкополигональный объект от высокополигонального, плюс особенности рельефа фактуры материала.
|
||||
- Локальные тени. Ambient occlusion. Это тени объекта, отбрасываемые самим собой на самого себя.
|
||||
- Шероховатость. Roughness. Текстура поверхности с указанием локальной шероховатости в диапазоне 0-1.
|
||||
- Металлик. Metallic. Локально определяет тип поверхности метал/неметал. Может быть либо 0, либо 1.
|
||||
Вот рекомендуемые значения допусков в пикселях, которые завият от целевого разрешения текстур:
|
||||
- 256 = 2 пикселя
|
||||
- 512 = 4 пикселя
|
||||
- 1024 = 8 пикселей
|
||||
- 2048 = 16 пикселей
|
||||
- 4096 = 32 пикселя
|
||||
|
||||
Последние 3 текстуры являются скалярными (черно-белыми) величинами, поэтому их обычно упаковывают в 1 текстуру по RGB каналам. Это положительно сказывается на производительности в 3д движке симуляции, так как снижает количество обращений - на 2 меньше. Например для 10ти материалов будет уже экономия на 20 обращений!
|
||||

|
||||
|
||||

|
||||
### 3. Запекание в 2 этапа
|
||||
|
||||
## 6. Экспорт CG ассета (низкополигональная модель с материалом и набором текстур)
|
||||
Мы предлагаем польностью автоматический алгоритм запекания текстур, где заданы основные параметры и построена очередь запекания. Пользователю в ручном режиме требуется указать lowpoly имена ассетов и пути хранения тестур. В нашем техпроцессе все типы ассетов имеют одно имя детали + суффикс (hp, mp, lp), поэтому имя midpoly ассета задавать не требуется, оно будет найдено по имени детали и суффису **mp**.
|
||||
|
||||
Выполняется экспорт в один из универсальных 3д форматов обмена. 3д формат зависит от 3д движка. Как правило, в современных движках используется формат FBX. Также для задач физических симуляций могут применяться форматы DAE (очень близкий к FBX) или OBJ (старый формат, не рекомендуется использовать).
|
||||
#### 1 этап
|
||||
|
||||
Запекание реализовано без клетки (cage). Источник и цель запекания всегда имеют некоторое различие, отклонение поверхностей. Луч направляется наружу lowpoly вдоль нормали каждой вершины, затем на установленном вами расстоянии луч направляется обратно внутрь. Где бы этот луч ни пересекал highpoly поверхность, он будет брать из нее нормали. Для максимальной точности запекания рекомендуется минимальный допуск отклонения целевой поверхности от поверхности источника, lowpoly от midpoly (ray distance). Опытным путем было найдено значение - 1 мм. С этим параметром запекается весь состав текстур 1го этапа.
|
||||
|
||||
#### 2 этап
|
||||
|
||||
Алгоритм генерации поверхности lowpoly в нашем техпроцессе пропускает мелкие, или тонкие выпуклые детали, это особенность алгоритма, его слабая сторона. Но так же бывают случаи, когда при ручной ретопологии lowpoly целесообразно исключать мелкие выдающиеся из поверхности детали.
|
||||
|
||||
Например: стержни контактов, антены, кнопки.
|
||||
|
||||

|
||||
|
||||
В таких случаях 1-го этапа мало, так как на месте проблемных деталей получается черный артефакт. Мы предлагаем для всех случаев использовать 2х этапное запекание, для уверенного получения безошибочного результата запекания.
|
||||
|
||||
Опытным путем было найдено значение ray distance - 10 мм, как максимум для выдающихся элементов. С этим параметром запекается только локальные тени (Ambient occlusion) и карта нормалей (Normal).
|
||||
|
||||
Итого мы имеем 2 сырых запеченных набора текстур.
|
||||
|
||||
### 4. Композинг текстур
|
||||
|
||||
После запекания мы получаем сырые текстуры, это означает что допуски между кусочками выкройки UV необходимо нарастить до предела, до того как встретятся противоположные грани. В итоге отступы по краям дублируют пиксели вдоль внутренней части края и распространяют эти цвета наружу, образуя юбку похожих цветов. Лучше всего это работает, когда отступы расширены и заполняют все пустые области (или пустые места заполнены одинаковым цветом фона).
|
||||
|
||||
Так же после запекания необходимо соединить 2 этапа запекания. Это реализовано на основе кеинга (1) зеленых зон карт нормалей и (2) черных зон карт локальных теней, как проблемных зон 1го этапа, и добавления на их место пикселей из 2го этапа.
|
||||
|
||||
Для повышения визуального качества текстуры, требуется применить фильтр антиалиасинга. Алиасинг — явление, при котором искажается контур изображения. В этом случае изображение разбивается на отдельные элементы в виде пикселей. Из-за того, что элементы имеют сравнительно большие размеры, контуры изображения искажаются: они становятся зубчатыми, возможно появления резких переходов яркости пикселей, резких градиентов. Антиалиасинга — фильтр для обработки изображений с целью сделать границы таких кривых линий более гладкими, убирая возникающие на краях объектов пиксельные зубцы.
|
||||
|
||||

|
||||
|
||||
### 5. Сборка lowpoly материала и PBR набором текстур
|
||||
|
||||
На данном этапе должны быть готовы lowpoly ассет с UV разверткой и готовый после композинга набор текстур. Для этого реализован алгоритм автоматической сборки. В алгоритме учтено цветовое пространство и сокет по типу текстуры. Для правильного экспорта материала сборка сделана в универсальном минималистичном формате. Такой материал платформонезависим, и позволяет переносить все физические свойства исходного оригинального FEM материала во все opengl-3 совместимые среды.
|
||||
|
||||
## Экспорт ассетов
|
||||
|
||||
Выполняется экспорт в один из универсальных 3д форматов обмена. 3д формат зависит от целевого движка (платформы). Как правило, в современных движках используется формат FBX. Также для задач физических симуляций могут применяться форматы DAE (очень близкий к FBX) или OBJ (старый формат, не рекомендуется использовать).
|
||||
|
||||
Устаревшие форматы, такие как 3ds, не рекомендуется использовать. Они могут портить модель или не поддерживать (терять) данные.
|
||||
|
||||
Дополнительно, в качестве формата для объектов коллизий (как, например, в Gazebo), могут быть задействованы такие форматы как STL .
|
||||
В качестве формата для объектов коллизий (как, например, в Gazebo), lowpoly могут быть задействованы в формате STL.
|
||||
|
||||

|
||||
|
||||
|
@ -196,12 +328,9 @@ OpenVDB — это программная библиотека с открыты
|
|||
|
||||
Вид импортированного в 3д движок CG ассета.
|
||||
|
||||
## Рекомендации для инженера-конструктора по экспорту САПР моделей
|
||||
|
||||
## Приложение
|
||||
|
||||
### Рекомендации для инженера-конструктора по экспорту САПР моделей
|
||||
|
||||
Для реализации готовой САПР детали инженеру потребуется переносить модель детали между редакторами моделей. Для хорошей практики при этом предлагается перед экспортом выполнить следующие требования.
|
||||
Для реализации готовой САПР детали инженеру потребуется переносить модель детали между редакторами моделей. Хорошей практикой является подготовка моделей перед экспортом, для чего желательно выполнить требования ниже.
|
||||
|
||||
### Требования к деталям для экспорта
|
||||
1. Не содержит несущие соединения или шарниры. Детали между шарнирами (соединениями) считаются как отдельные детали. Самостоятельная, отделенная от родительских и дочерних элементов, деталь является понятным и законченным звеном механизма.
|
||||
|
@ -228,7 +357,7 @@ OpenVDB — это программная библиотека с открыты
|
|||
6. Директория экспорта должна иметь имя целевого механизма `+ cad`
|
||||
7. Все файлы экспорта всех деталей одного механизма должны находиться в директории экспорта
|
||||
|
||||
## Способы задания систем координат в CAD-системах
|
||||
### Способы задания систем координат в CAD-системах
|
||||
|
||||
Задание вспомогательных систем координат является достаточно часто используемой операцией. Общие принципы их задания, в целом, одинаковы для CAD-систем, таких как Catia V5, Solidworks, FreeCAD, SiemensNX и т.д.
|
||||
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 549 KiB After Width: | Height: | Size: 1.5 MiB |
BIN
docs/technologies/img/bake_07.jpg
Normal file
BIN
docs/technologies/img/bake_07.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 229 KiB |
BIN
docs/technologies/img/bake_08.jpg
Normal file
BIN
docs/technologies/img/bake_08.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 372 KiB |
BIN
docs/technologies/img/bake_09.jpg
Normal file
BIN
docs/technologies/img/bake_09.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 684 KiB |
BIN
docs/technologies/img/bake_10.jpg
Normal file
BIN
docs/technologies/img/bake_10.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 158 KiB |
|
@ -25,17 +25,17 @@ module.exports = {
|
|||
label: 'Технологии',
|
||||
items: [
|
||||
'technologies/open-source-robots-and-tools',
|
||||
'technologies/cad-cg-pipeline',
|
||||
'technologies/robonomics',
|
||||
'technologies/machine-learning-in-robotics',
|
||||
'technologies/cv-perception-methods',
|
||||
'technologies/wrs2020-assembly-challenge',
|
||||
'technologies/mrs-robotics-assembly-review',
|
||||
'technologies/plansys2',
|
||||
'technologies/ASP-overview',
|
||||
'technologies/wrs2020-assembly-challenge',
|
||||
'technologies/knowledge-management',
|
||||
'technologies/wood',
|
||||
'technologies/recycling',
|
||||
'technologies/knowledge-management',
|
||||
'technologies/cad-cg-pipeline',
|
||||
'technologies/mrs-robotics-assembly-review'
|
||||
],
|
||||
},
|
||||
/* {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue