Merge remote-tracking branch 'origin/brothermechanic/cad_cg_pipeline' into cad2engine

This commit is contained in:
Игорь Брылёв 2023-01-11 14:33:00 +03:00
commit ded08827a5
6 changed files with 47 additions and 1 deletions

View file

@ -0,0 +1,45 @@
---
id: cad_cg_pipeline
title: 'Подбор алгоритмов и параметров обработки САПР моделей детали в 3д ассет'
---
## Процесс подготовки САПР моделей в виртуальные среды, симуляторы
1. Тесселяция САПР модели.
2. Ретопология результата тесселяции модели.
3. Физические свойства материала результата ретопологии модели (шейдинг).
4. Текстурирование физического материала результата шейдинга модели.
5. Запекание растровых текстур физического материала результата текстурирования модели.
6. В результате получается **3D ассет** - полигональная модель с материалом + набор текстур.
Качественный 3D ассет имеет хороший баланс между точностью геометрии и реcурсоёмкостью. То есть, хочется точность геометрии иметь выше, а ресурсоемкость - ниже.
## Выбор алгоритма тесселяции
Основываясь на статье [Алгоритмы тесселяции моделей САПР](https://dev.opencascade.org/doc/overview/html/occt_user_guides__mesh.html) для виртуальных сред, симуляторов и прочих целей визуального характера выбираем **Алгоритм триангуляции Делоне с помощью алгоритма Ватсона** в виде его реализации BRepMesh_IncrementalMesh.
### Обход недостаточной предсказуемости алгоритмов тесселяции при высоких отклонениях
Для наглядного примера возьмем символ "O" шрифта Arial:
![](img/O1.jpg "символ О шрифта Arial")
Доведем ситуацию до абсурда, чтоб было нагляднее, - выставим нулевой уровень тесселяции контура:
![](img/O2.jpg "нулевой уровень тесселяции символа О шрифта Arial")
Мы знаем этот символ, он должен быть симметричным, а сейчас мы видим что он симметричен только на высоких уровнях тесселяции. Это происходит вледствие **разного расстояния** и **разной кривизны** между ключевыми точками. И вообщем не возможно добиваться на производственных моделях равномерности расстояния и кривизны между точками. Поэтому мы предлагаем следующий способ - проводить тесселяцию с минимальным допуском отклонения от истинной геометрии САПР модели, в ущерб ресурсоемкости.
![](img/O3.jpg "тесселяция с малым допуском отклонения символа О шрифта Arial")
- минусом будет **повышенная ресурсоемкость** на этапе ретопологии (где она и будет снижена)
+ плюсом будет **предсказуемая точность** полигональной модели 3д ассета.
Забегая вперед, посмотрим на следующий пример ретопологии:
![](img/O4.jpg "пример результата ретопологии с количеством полигонов нулевого уровеня тесселяции символа О шрифта Arial")
На примере выше видно, что и при таком минимуме способ показывает свою состоятельность. Результат получился симметричнее, так как кривизна левой и правой стороны, если не близка, то очень похожа. То есть результат предсказуемый.
Для производственного 3д ассета нужно, конечно, выбирать уровень ретопологии с большим количеством полигонов, таким, чтобы обеспечить минимальное отклонение геометрии от САПР модели.
**Вывод**. Проводить тесселяцию с минимальным допуском отклонения от истинной геометрии САПР модели, в ущерб ресурсоемкости.
## Выбор алгоритма ретопологии

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

View file

@ -32,7 +32,8 @@ module.exports = {
'technologies/tesselation',
'technologies/wood',
'technologies/recycling',
'technologies/knowledge-management'
'technologies/knowledge-management',
'technologies/cad_cg_pipeline'
],
},
/* {