diff --git a/docs/technologies/cad_cg_pipeline.md b/docs/technologies/cad_cg_pipeline.md new file mode 100644 index 0000000..f639839 --- /dev/null +++ b/docs/technologies/cad_cg_pipeline.md @@ -0,0 +1,47 @@ +--- +id: cad_cg_pipeline +title: 'Подбор алгоритмов и параметров обработки САПР моделей детали в 3д ассет' +--- + +## Схема технического процесса подготовки САПР моделей в 3д виртуальные среды, симуляторы +Мы предлагаем следующий вариант такой схемы: + +0. Тесселяция САПР модели. +0. Ретопология результата тесселяции модели. +0. Физические свойства материала результата ретопологии модели (шейдинг). +0. Текстурирование физического материала результата шейдинга модели. +0. Запекание растровых текстур физического материала результата текстурирования модели. +В результате получается **3д ассет**, 3д полигональная модель с материалом + набор текстур. + +Качественный 3д ассет имеет хороший баланс между точностью геометрии и реусрсоемкостью. То есть, хочется точность геометрии иметь выше, а реусрсоемкость - ниже. + +#### 1. Выбор алгоритма тесселяции +Основываясь на странице [Алгоритмы тесселяции моделей САПР](https://dev.opencascade.org/doc/overview/html/occt_user_guides__mesh.html) для 3д виртуальных сред, симуляторов и прочих целей визуального характера выбираем **Алгоритм триангуляции Делоне с помощью алгоритма Ватсона** в виде его реализации BRepMesh_IncrementalMesh +##### Обход недостаточной предсказуемости алгоритмов тесселяции при высоких отклонениях +Для наглядного примера возьмем символ "O" шрифта Arial: + +![](img/O1.jpg "символ О шрифта Arial") + +Доведем ситуацию до абсурда, чтоб было нагляднее, - выставим нулевой уровень тесселяции контура: + +![](img/O2.jpg "нулевой уровень тесселяции символа О шрифта Arial") + +Мы знаем этот символ, он должен быть симметричным, а сейчас мы видим что он симметричен только на высоких уровнях тесселяции. Это происходит вледствие **разного расстояния** и **разной кривизны** между ключевыми точками. И вообщем не возможно добиваться на производственных моделях равномерности расстояния и кривизны между точками. + +Поэтому, мы предлагаем следующиц способ - проводить тесселяцию с минимальным допуском отклонения от истинной геометрии САПР модели, в ущерб ресурсоемкости! + +![](img/O3.jpg "тесселяция с малым допуском отклонения символа О шрифта Arial") + +- минусом будет **повышенная ресурсоемкость** на этапе ретопологии (где она и будет снижена) ++ плюсом будет **предсказуемая точность** полигональной модели 3д ассета. + +Забегая вперед, посмотрим на следующий пример ретопологии: + +![](img/O4.jpg "пример результата ретопологии с количеством полигонов нулевого уровеня тесселяции символа О шрифта Arial") + +Это лабораторная ситуация, создана с целью показать что и при таком минимуме, способ показывает свою состоятельность. Результат получился симметричнее, так как кривизна левой и правой стороны, если не близка, то очень похожа, то есть результат - предсказуемый. +Для производственного 3д ассета нужно, конечно, выбирать уровень ретопологии с большим количеством полигонов, таким, чтобы обеспечить минимальное отклонение геометрии от САПР модели. + +**Вывод**. Проводить тесселяцию с минимальным допуском отклонения от истинной геометрии САПР модели, в ущерб ресурсоемкости. + +#### 0. Выбор алгоритма ретопологии diff --git a/docs/technologies/img/O1.jpg b/docs/technologies/img/O1.jpg new file mode 100644 index 0000000..9a30d1b Binary files /dev/null and b/docs/technologies/img/O1.jpg differ diff --git a/docs/technologies/img/O2.jpg b/docs/technologies/img/O2.jpg new file mode 100644 index 0000000..9ec8aee Binary files /dev/null and b/docs/technologies/img/O2.jpg differ diff --git a/docs/technologies/img/O3.jpg b/docs/technologies/img/O3.jpg new file mode 100644 index 0000000..8e18124 Binary files /dev/null and b/docs/technologies/img/O3.jpg differ diff --git a/docs/technologies/img/O4.jpg b/docs/technologies/img/O4.jpg new file mode 100644 index 0000000..3523ff1 Binary files /dev/null and b/docs/technologies/img/O4.jpg differ diff --git a/sidebars.js b/sidebars.js index 9ec1c12..400bdd0 100644 --- a/sidebars.js +++ b/sidebars.js @@ -32,6 +32,7 @@ module.exports = { 'technologies/wood', 'technologies/recycling', 'technologies/knowledge-management' + 'technologies/cad_cg_pipeline' ], }, /* { @@ -75,4 +76,4 @@ module.exports = { ], }, ], -}; \ No newline at end of file +};