Merge branch '123-api-cg' into 'master'
Draft: CG Pipeline: add global readme Closes #123 See merge request robossembler/framework!69
This commit is contained in:
commit
e1d6bd0b45
7 changed files with 127 additions and 0 deletions
11
README.md
11
README.md
|
@ -21,3 +21,14 @@
|
|||
- __Предикат стабильной осуществимости__. Верен для последовательности сборки, когда сборка на каждом из этапов приходит к стабильному состоянию.
|
||||
- __Предикат степеней свободы__. Формируется на основе уже сгенерированных графов/графа сборки. В каких степенях свободы возможно перемещать деталь.
|
||||
|
||||
# Технология компьютерной графики (СG)
|
||||
|
||||
Общие функции CG-модуля:
|
||||
- передача 3д-моделей из CAD в CG,
|
||||
- полигональное моделирование/преобразование меш объектов,
|
||||
- перестроение материалов в PBR представление,
|
||||
- запекание текстуры меш объектов,
|
||||
- сборка CG ассетов из объектов и текстур,
|
||||
- экспорт полигональных объектов с текстурами в универсальные форматы,
|
||||
- утилиты общего пользования,
|
||||
- прикладные инстументы редактирования 3д-моделей.
|
||||
|
|
116
cg/README.md
Normal file
116
cg/README.md
Normal 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 платформ):
|
||||
- Вытянутые полигоны.
|
||||
|
||||

|
||||
|
||||
- Проблемы: вытянутые полигоны могут вызвать как эстетические, так и технологические артефакты:
|
||||
- артефакт затенения меша, артефакт при запекании текстуры, мерцание;
|
||||
- заедание фрезы, путь которой прерываеться на каждой грани (фреза может перепрыгнуть или пропустить участок), вплоть до порчи заготовки и поломки фрезы.
|
||||
|
||||
- Решение: увеличить уровень детализации при тесселяции и впоследствие оптимизировать меш до исходного уровня на этапе ретопологии.
|
||||
|
||||

|
||||
|
||||
- Полигоны с площадью, стремящейся к нулю.
|
||||
|
||||

|
||||
|
||||
- Проблемы: те же, что и у вытянутых полигонов
|
||||
|
||||
- Решение: слить близлежащие точки воедино (большое значение радиуса слияния точек может нарушить геометрию, мы применяем безопасное значение 0.01 мм)
|
||||
|
||||
- Тонкие (острые) элементы.
|
||||
|
||||

|
||||
|
||||
- Проблемы: вытянутые полигоны могут вызвать как эстетические, так и технологические артефакты:
|
||||
- артефакты при слиянии точек (называемые non-manifold);
|
||||
- артефакты при запекании текстур, если тонкий элемент меньше допуска запекания;
|
||||
- низкая прочтость и поломка заготовки при производстве.
|
||||
|
||||
- Решение: избегать тонких элементов при проектировании, делать элементы отдельными составными частями, возможно из другого, более прочного материала.
|
||||
|
||||
- Вывернутые наизнанку полигоны.
|
||||
|
||||

|
||||
|
||||
- Проблемы: вывернутые наизнанку полигоны нарушают твердотельность детали
|
||||
|
||||
- Решение: пересчитать нормали полигонов.
|
||||
|
||||
- Разрывы поверхностей.
|
||||
|
||||
Отсутствие отдельных полигонов, дырки. Так же визуально артефакт может быть незаметен у близко расположенных точек полигона. Полигон может быть отдельным куском поверхности.
|
||||
|
||||
- Проблемы: те же, что и у полигонов с площадью, стремящейся к нулю.
|
||||
|
||||
- Решение: то же, что и у полигонов с площадью, стремящейся к нулю.
|
||||
|
||||
|
||||
### Полигональное моделирование/преобразование меш объектов.
|
||||
|
||||
Реализовано скриптами `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
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
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
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
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
BIN
cg/img/cad-cg_remesh.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 MiB |
Loading…
Add table
Add a link
Reference in a new issue