add cg pipeline structure spec
|
@ -1,38 +1,41 @@
|
|||
---
|
||||
id: cad-cg-pipeline
|
||||
title: 'Экспорт моделей из САПР'
|
||||
title: 'Экспорт для технологии компьютерной графики и симуляции.'
|
||||
---
|
||||
# Введение.
|
||||
## Основные методы описания трёхмерных объектов.
|
||||
|
||||
## Основные методы описания трёхмерных объектов
|
||||
|
||||
### Полигональное моделирование
|
||||
### Полигональное моделирование.
|
||||
Описывает поверхность массивом точек (Mesh). При этом типе моделирования выбирается некий **предел** точек, поэтому невозможно избежать **изломов** криволинейной поверхности, создать **идеальную** ее плавность. Метод применяется для визуализации моделей на мониторе компьютера, что обусловлено эффективностью обработки Mesh с помощью видео-ускорителей. При визуализации полигональных моделей, их поверхность практически не изменяется (некоторое изменение будет в любом случае).
|
||||
|
||||
### САПР моделирование
|
||||
### САПР моделирование.
|
||||
Описывает поверхность математической функцией в случае Конструктивной блочной геометрии (Constructive Solid Geometry, CSG) или Граничным представлением (Boundary representation, BREP). При визуализация САПР моделей происходит автоматическая **тесселяция**, которая дискретизирует поверхность в сетку из треугольников, при этом нужно выбирать баланс между избыточной **ресурсоемкостью** на визуализацию, либо **точностью** визуализации.
|
||||
|
||||
## Процесс подготовки САПР моделей для экспорта
|
||||
|
||||
# Технологии компьютерной графики и симуляции.
|
||||
## Технологический цикл производства.
|
||||
|
||||
1. Тесселяция САПР модели.
|
||||
2. Ретопология результата тесселяции модели.
|
||||
3. Физические свойства материала результата ретопологии модели (шейдинг).
|
||||
4. Текстурирование физического материала результата шейдинга модели.
|
||||
5. Запекание растровых текстур физического материала результата текстурирования модели.
|
||||
6. В результате получается **3D ассет** - полигональная модель с материалом + набор текстур.
|
||||
2. Ретопология и оптимизация от результата тесселяции.
|
||||
3. Придание физических свойств объекту назначением материала.
|
||||
4. Параметрическое текстурирование фактуры физического материала модели.
|
||||
5. Запекание растровых текстур физического материала.
|
||||
6. Экспорт CG ассета (низкополигональная модель с материалом и набором текстур).
|
||||
|
||||
Качественный 3D ассет имеет хороший баланс между точностью геометрии и реcурсоёмкостью. То есть, хочется точность геометрии иметь выше, а ресурсоемкость - ниже.
|
||||
|
||||
## Алгоритмы тесселяции (meshing)
|
||||
## 1. Тесселяция САПР модели.
|
||||
### Виды алгоритмов тесселяции.
|
||||
Все алгоритмы тесселяции схожи в том, что строят массив точек, иcходя из предела дискретизации, однако отличаются друг от друга по назначению.
|
||||
|
||||
### Алгоритмы тесселяции для **Визуализации**
|
||||
#### Алгоритм триангуляции Делоне с помощью алгоритма Ватсона
|
||||
### Алгоритмы тесселяции для **Визуализации**.
|
||||
#### Алгоритм триангуляции Делоне с помощью алгоритма Ватсона.
|
||||
Реализация алгоритма BRepMesh_IncrementalMesh является частью САПР библиотеки Open CASCADE Technology (OCCT). Это инкрементный алгоритм, который разбивает треугольники до тех пор, пока результат тдискретизации не будет удовлетворять критериям отклонения **допуска** отклонения по расстоянию и углу. Результат для допустимой замкнутой оболочки, может считаться твердотельным, поскольку алгоритм учитывает закрытость оболочки.
|
||||
Сетка подходит для визуализации, машинного обучения, симуляции машин и механизмов и для многих алгоритмов с контролируемой точностью.
|
||||
|
||||
Подробнее в статье [OCCT User Guides](https://dev.opencascade.org/doc/overview/html/occt_user_guides__mesh.html)
|
||||
|
||||
### Алгоритмы тесселяции для **Метода Конечных Элементов** (FEM)
|
||||
### Алгоритмы тесселяции для **Метода Конечных Элементов** (FEM).
|
||||
Применяются для расчёта механики твёрдого деформируемого тела и других исследований, где используются FEM-методы.
|
||||
#### Алгоритм Netgen
|
||||
Netgen использует несколько параметров, включая максимальный и минимальный размеры элементов, степень детализации сетки, количество шагов оптимизации и т.д. Netgen в основном работает в 3D. В зависимости от заданных параметров он может изготавливать элементы с размерами, адаптированными к локальным кривизнам - большими на участках плоской поверхности и меньшими на гнутых участках. Как только сетка построена для ребер и граней, Netgen выполняет дополнительные итерации для упрощения сетки. Установка этого параметра в 0 отключает упрощение. Netgen в целом медленнее, чем, например, Gmsh, и более чувствителен к качеству входных моделей.
|
||||
|
@ -45,11 +48,12 @@ Gmsh работает в 3D и делает 4 прохода: анализ ге
|
|||
Подробнее на сайте проекта [gmsh.info](https://gmsh.info/)
|
||||
|
||||
|
||||
## Выбор алгоритма тесселяции
|
||||
### Выбор алгоритма тесселяции
|
||||
|
||||
Основываясь на упомянутой выше статье [Алгоритмы тесселяции моделей САПР](https://dev.opencascade.org/doc/overview/html/occt_user_guides__mesh.html) для экспорта виртуальные среды, симуляторы и прочих целей визуального характера целесообразно выбирать **Алгоритм триангуляции Делоне с помощью алгоритма Ватсона** в виде его реализации `BRepMesh_IncrementalMesh` из Геометрического ядра OpenCascade.
|
||||
|
||||
### Обход недостаточной предсказуемости алгоритмов тесселяции при высоких отклонениях
|
||||
|
||||
#### Обход недостаточной предсказуемости алгоритмов тесселяции при высоких отклонениях
|
||||
Для наглядного примера возьмем символ "O" шрифта Arial:
|
||||
|
||||

|
||||
|
@ -72,9 +76,110 @@ Gmsh работает в 3D и делает 4 прохода: анализ ге
|
|||
На примере выше видно, что и при таком минимуме способ показывает свою состоятельность. Результат получился симметричнее, так как кривизна левой и правой стороны, если не близка, то очень похожа. То есть результат предсказуемый.
|
||||
Для производственного 3D ассета нужно, конечно, выбирать уровень ретопологии с большим количеством полигонов, таким, чтобы обеспечить минимальное отклонение геометрии от САПР модели.
|
||||
|
||||
**Вывод**. Проводить тесселяцию с минимальным допуском отклонения от истинной геометрии САПР модели, в ущерб ресурсоемкости.
|
||||
Вывод: проводить тесселяцию с минимальным допуском отклонения от истинной геометрии САПР модели, в ущерб ресурсоемкости.
|
||||
|
||||
## Рекомендации для инженера-конструктора по экспорту САПР моделей
|
||||
|
||||
## 2. Ретопология и оптимизация от результата тесселяции.
|
||||
|
||||
Выше было сказано про предсказуемость результата алгоритмов тесселяции мы указали, что целесообразно выгонять детализированные 3д объекты, в ущерб их оптимизации. В этой части будет рассказано как добиться хорошего качества 3д модели при высокой ее оптимизации.
|
||||
|
||||
#### Ретопология комплексной сборочной 3д модели.
|
||||
|
||||

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

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

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

|
||||
|
||||
Как особенность нашей реализации, можно отметить "оплавление" острых граней объектов, как это обычно случается в реальной жизни - все остые грани либо обрабатываются, либо притупляются естественным путем, и никогда не бывают такими, как выглядят их производственные объекты в САПР редакторе. Этот момент мы считаем принципиальным.
|
||||
|
||||
## 4. Параметрическое текстурирование фактуры физического материала модели.
|
||||
|
||||
Задачи машинного обучения и компьютерного зрения требуют от объекта не только 3д шейдер, но и фактуру, неоднородность поверхности, или рисунок. Это помогает алгоритмам распознавания объектов точнее выполнить свою задачу.
|
||||
|
||||
Мы предлагаем путь процедурной параметрической генерации фактуры. Для этого удобно использовать движок рендеринга Cyclec в интерфейсе Blender или через его программный интерфейс.
|
||||
|
||||

|
||||
|
||||
На данном примере можно увидеть слоистую фактуру, как это бывает с напечатанными деталями по технология послойного плавления пластиком.
|
||||
|
||||
Плюсы процедурной параметрической генерации в том что фактура получается объектонезависимой и легко переносится и адаптируется под любые формы, требуя минимальных доработок, или без них воовсе.
|
||||
В минус можно записать требования квалификации художника по текстурам, и относительный порог вхождения по сравнению с традиционной пиксельной графикой.
|
||||
|
||||
## 5. Запекание растровых текстур физического материала.
|
||||
|
||||
Для этого шага нам потребуется ранее заготовленные 3д модели после этапов тесселяции и ретопологии. Попарно. Суть метода в том, чтобы перенести все параметрические данные и особенности формы поверхности с оригинального объекта, объекта после тесселяции, (высокополигональный объект) на оптимизированный объект (низкополигональный объект).
|
||||
Данный пункт обширен, и будет рассмотрен в качестве беглого обзора.
|
||||
|
||||
#### Развертка поверхности низкополигонального объекта.
|
||||
|
||||
Для начала выполняется раскройка поверхности низкополигонального объекта, или - развертка.
|
||||
|
||||

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

|
||||
|
||||
## 6. Экспорт CG ассета (низкополигональная модель с материалом и набором текстур).
|
||||
|
||||
Выполняется экспорт в один из универсальных 3д фоматов обмена. 3д фомат зависит от 3д движка. В основном, для современных движков, используется формат FBX. Для задач физических симуляций могут применяться форматы DAE (очень близкий к FBX) или OBJ (старый формат, не рекомендуется использовать).
|
||||
|
||||
Устаревшие форматы, такие как 3ds, не рекомендуется использовать. Они могут портить модель или не поддерживать (терять) данные.
|
||||
|
||||
Дополнительно могут быть задействованы такие форматы как, STL, в качестве формата для объектов коллизии.
|
||||
|
||||

|
||||
|
||||
На изображении показана полигональная сетка CG ассета. Можно видеть что неформообразующие детали существуют только на текстуре и фактически отсутствуют на геометрии.
|
||||
|
||||

|
||||
|
||||
Вид импортированного в 3д движок CG ассета.
|
||||
|
||||
|
||||
## Приложение.
|
||||
|
||||
### Рекомендации для инженера-конструктора по экспорту САПР моделей
|
||||
|
||||
Для реализации готовой САПР детали инженеру потребуется переносить модель детали между редакторами моделей. Для хорошей практики при этом предлагается перед экспортом выполнить следующие требования.
|
||||
|
||||
|
@ -121,4 +226,4 @@ Gmsh работает в 3D и делает 4 прохода: анализ ге
|
|||
|
||||
Как выяснилось, на данный момент вспомогательные СК не сохраняются при экспорте в STP, IGS и STL-файлы. Официальный сайт Autodesk, например, заявляет, что экспорт пользовательских СК на данный момент невозможен. Офф.руководство Solidworks указывает, что есть возможность выбрать *активную* систему координат, которая при экспорте заменит собой глобальный ноль. Однако, SW позволяет экспортировать эскизные элементы, такие как окружности и кривые. Эти кривые будут существовать как отдельная геометрия и потенциально может быть использована как основа для прописывания локальных СК.
|
||||
|
||||
При этом глобальный ноль существует всегда. Поскольку STP-файл представляет собой текстовое и редактируемое описание геометрии детали, потенциально можно прописывать специальные примитивы (например, 3 ортогональных оси и точку), которые могут играть роль вспомогательных СК.
|
||||
При этом глобальный ноль существует всегда. Поскольку STP-файл представляет собой текстовое и редактируемое описание геометрии детали, потенциально можно прописывать специальные примитивы (например, 3 ортогональных оси и точку), которые могут играть роль вспомогательных СК.
|
||||
|
|
BIN
docs/technologies/img/bake_01.jpg
Normal file
After Width: | Height: | Size: 160 KiB |
BIN
docs/technologies/img/bake_02.jpg
Normal file
After Width: | Height: | Size: 158 KiB |
BIN
docs/technologies/img/bake_03.jpg
Normal file
After Width: | Height: | Size: 549 KiB |
BIN
docs/technologies/img/bake_04.jpg
Normal file
After Width: | Height: | Size: 184 KiB |
BIN
docs/technologies/img/bake_05.jpg
Normal file
After Width: | Height: | Size: 168 KiB |
BIN
docs/technologies/img/bake_06.jpg
Normal file
After Width: | Height: | Size: 72 KiB |
BIN
docs/technologies/img/retopo_01.jpg
Normal file
After Width: | Height: | Size: 96 KiB |
BIN
docs/technologies/img/retopo_02.jpg
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
docs/technologies/img/retopo_03.jpg
Normal file
After Width: | Height: | Size: 44 KiB |