CG Pileline: add global readme

This commit is contained in:
brothermechanic 2023-12-08 17:26:06 +03:00
parent 679a52a041
commit b26334fe4a
No known key found for this signature in database
GPG key ID: 9C59EF9503ACD106
7 changed files with 127 additions and 0 deletions

View file

@ -21,3 +21,14 @@
- __Предикат стабильной осуществимости__. Верен для последовательности сборки, когда сборка на каждом из этапов приходит к стабильному состоянию.
- __Предикат степеней свободы__. Формируется на основе уже сгенерированных графов/графа сборки. В каких степенях свободы возможно перемещать деталь.
# Технология компьютерной графики (СG)
Общие функции CG-модуля:
- передача 3д-моделей из CAD в CG,
- полигональное моделирование/преобразование меш объектов,
- перестроение материалов в PBR представление,
- запекание текстуры меш объектов,
- сборка CG ассетов из объектов и текстур,
- экспорт полигональных объектов с текстурами в универсальные форматы,
- утилиты общего пользования,
- прикладные инстументы редактирования 3д-моделей.

116
cg/README.md Normal file
View file

@ -0,0 +1,116 @@
## CAD-модуль
Модуль реализован на API FreeCAD. Директория разработки `freecad`.
## CG-модуль
Модуль реализован на API Blender. Директория разработки `blender`.
Интерфейс между CAD-модулем и CG-модулем передает:
- Имя детали. Это лейбл детали, имя заданное и читаемое человеком в CAD среде.
- Тип детали. Тип может быть: твердотельным объектом, полигональным объектом, системой координат, элементом иерархии сброрки.
- BREP формула (для твердотельных объектов).
- Массив точек (для полигональных объектов).
- Локальные трансформации объекта. Перемещение, вращение, масштаб.
- Линейная иерархия объекта. Цепочка-список родитель-потомок.
- Материал объекта и его свойства.
Интерфейс между CAD-модулем и CG-модулем может передавать данные:
- В виде массива точек; процедура тесселяции (BREP -> массив точек) выполняется на API CAD-модуля.
CAD-модуль имеет встроенные средства тесселяции.
- В виде BREP формулы; процедура тесселяции (BREP -> массив точек) выполняется на АPI CG-модуля.
CG-модуль использует OCCT/FreeCAD.
### Передача 3д-моделей из CAD в CG.
Реализовано скриптами `cg/freecad/utils/freecad_to_json.py` `cg/blender/import_cad`.
Задачи по передаче:
- Имени детали. Это лейбл детали, имя заданное и читаемое человеком в CAD среде.
- Типа детали. Тип может быть: твердотельным объектом, полигональным объектом, системой координат, элементом иерархии сброрки.
- BREP формулу (для твердотельных объектов).
- Массива точек (для полигональных объектов), по результату тесселяции BREP объектов по заданным параметрам.
- Локальные трансформации объекта. Перемещение, вращение, масштаб.
- Линейную иерархия объекта. Цепочка-список родитель-потомок.
- Данных материала объекта и его свойства в PBR представление.
Проблемы и решения процедуры тесселяции (для всех API платформ):
- Вытянутые полигоны.
![](img/cad-cg_01.jpg "Вытянутые полигоны")
- Проблемы: вытянутые полигоны могут вызвать как эстетические, так и технологические артефакты:
- артефакт затенения меша, артефакт при запекании текстуры, мерцание;
- заедание фрезы, путь которой прерываеться на каждой грани (фреза может перепрыгнуть или пропустить участок), вплоть до порчи заготовки и поломки фрезы.
- Решение: увеличить уровень детализации при тесселяции и впоследствие оптимизировать меш до исходного уровня на этапе ретопологии.
![](img/cad-cg_remesh.jpg "Проблема, Увеличение детализации, Ретопология")
- Полигоны с площадью, стремящейся к нулю.
![](img/cad-cg_02.jpg "Полигоны с площадью, стремящейся к нулю")
- Проблемы: те же, что и у вытянутых полигонов
- Решение: слить близлежащие точки воедино (большое значение радиуса слияния точек может нарушить геометрию, мы применяем безопасное значение 0.01 мм)
- Тонкие (острые) элементы.
![](img/cad-cg_03.jpg "Тонкие/острые элементы")
- Проблемы: вытянутые полигоны могут вызвать как эстетические, так и технологические артефакты:
- артефакты при слиянии точек (называемые non-manifold);
- артефакты при запекании текстур, если тонкий элемент меньше допуска запекания;
- низкая прочтость и поломка заготовки при производстве.
- Решение: избегать тонких элементов при проектировании, делать элементы отдельными составными частями, возможно из другого, более прочного материала.
- Вывернутые наизнанку полигоны.
![](img/cad-cg_04.jpg "Вывернутые наизнанку полигоны")
- Проблемы: вывернутые наизнанку полигоны нарушают твердотельность детали
- Решение: пересчитать нормали полигонов.
- Разрывы поверхностей.
Отсутствие отдельных полигонов, дырки. Так же визуально артефакт может быть незаметен у близко расположенных точек полигона. Полигон может быть отдельным куском поверхности.
- Проблемы: те же, что и у полигонов с площадью, стремящейся к нулю.
- Решение: то же, что и у полигонов с площадью, стремящейся к нулю.
### Полигональное моделирование/преобразование меш объектов.
Реализовано скриптами `cg/blender/processing`, для решения задач:
- перестроение иерархии сцены по данным разметки FreeCAD сцены (LCS точек) `cg/blender/processing/restruct_hierarchy_by_lcs.py`,
- группировка жестко собранных деталей в группы `cg/blender/processing/highpoly_setup.py`,
- объединение групп в монолитные модели для экспорта в Gazebo `cg/blender/processing/midpoly_setup.py`,
- генерация оптимизированных моделей `cg/blender/processing/lowpoly_setup.py`,
- развертка оптимизированных моделей `cg/blender/processing/uv_setup.py`.
### Запекание текстуры меш объектов.
Реализовано скриптами `cg/blender/texturing`, для решения задач:
- подготовка очереди процесса запекания текстур `cg/blender/texturing/bake_submitter.py`,
- обработка запеченных текстур `cg/blender/texturing/composing.py`,
- сборка CG ассетов из объектов и текстур `cg/blender/texturing/shading.py`.
### Экспорт полигональных объектов с текстурами в универсальные форматы.
Реализовано скриптами `cg/blender/export`, для решения задач экспорта в форматы: fbx, dae, stl, ply (и др. поддерживаемых API Blender).
### Аддоны для прикладного использования.
Реализовано скриптами `cg/blender/scripts`
- BakeWrangler - аддон запекания текстур,
- Robossembler - аддон для генерации JSON описания сцены.

BIN
cg/img/cad-cg_01.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 KiB

BIN
cg/img/cad-cg_02.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 541 KiB

BIN
cg/img/cad-cg_03.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 736 KiB

BIN
cg/img/cad-cg_04.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 KiB

BIN
cg/img/cad-cg_remesh.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB