Объединил все материалы по экспорту из CAD и обработке mesh
This commit is contained in:
parent
ded08827a5
commit
9b1723ef7f
3 changed files with 81 additions and 97 deletions
|
@ -1,53 +0,0 @@
|
||||||
---
|
|
||||||
id: algoritm_eksporta
|
|
||||||
title: Алгоритм экспорта САПР модели для 3d симулятора.
|
|
||||||
---
|
|
||||||
|
|
||||||
<h1 align="center">Алгоритм экспорта САПР модели для 3d симулятора.</h1>
|
|
||||||
|
|
||||||
- [Введение](#введение)
|
|
||||||
- [Подготовка 3д модели детали](#подготовка 3д модели детали)
|
|
||||||
- [Подготовка соединения](#подготовка соединения)
|
|
||||||
- [Экспорт](#экспорт)
|
|
||||||
|
|
||||||
## Введение.
|
|
||||||
Для реализации готовой САПР детали инженеру потребуется переносить модель детали между редакторами моделей.
|
|
||||||
Для хорошей практики при этом предлагается перед экспортом выполнить следующие требования.
|
|
||||||
|
|
||||||
## Подготовка 3д модели детали.
|
|
||||||
Требуется выбрать и подготовить целевую деталь для соответствия следующим требованиям:
|
|
||||||
|
|
||||||
1. не может содержать несущие соединения или шарниры
|
|
||||||
Детали между шарнирами (соединениями) считаются как отдельные детали.
|
|
||||||
Самостоятельная, отделенная от родительских и дочерних элементов, деталь является понятным и законченным звеном механизма.
|
|
||||||
2. не может иметь взаимные или самопересекающиеся объемы
|
|
||||||
Отдельные элементы детали не должны проникать друг в друга. Деталь имеет понятные законченные элементы.
|
|
||||||
3. иметь все наружные элементы и исключить внутренние, которых не видно снаружи
|
|
||||||
Внутренние элементы не требуются для 3д симулятора и 3д визуализации, и их лучше совсем исключить из процесса экспорта.
|
|
||||||
4. иметь имя латиницей, без спецсимволов и без пробелов и быть в нижнем регистре
|
|
||||||
Нелатинские символы, спецсимволы и пробелы могут вызвать ошибку поиска объекта (файла) модели.
|
|
||||||
В Windows API имеется особенность - не отличать имена с буквами в верхнем и нижнем регистре, и в этом случае, как говориться, ССЗБ.
|
|
||||||
5. иметь нулевые трансформации
|
|
||||||
6. стоять в точке или плоскости симметрии
|
|
||||||
7. очевидная ось модели должна быть совмещена с одной из осей мира
|
|
||||||
8. стоять в центре мира, в нуле
|
|
||||||
Как вариант допускается выполнить предварительный экспорт модели в STEP для запекания истории и обнуления трансформаций.
|
|
||||||
Отцентрированная модель в 0-й позиции обеспечивает, как минимум, единообразие каталога моделей и, как максимум, возможность ее предсказуемой автоматизированной сборки с другими моделями. В этом случае будет точно известно где появится модель. Модели, не размещенные в начале координат, могут сливаться со сценой, и их будет трудно (или невозможно) найти в зависимости от их импортированного положения.
|
|
||||||
|
|
||||||
## Подготовка соединения.
|
|
||||||
Для построения цельного механизма в 3д симуляторе требуется задать соединение(я):
|
|
||||||
|
|
||||||
1. задать **позицию** крепления или **ось** (точку) вращения шарнира **дочерней** детали
|
|
||||||
2. задать степени свободы дочерней детали
|
|
||||||
3. назвать полученный служебный объект используя имя целевой детали как суффикс
|
|
||||||
|
|
||||||
## Экспорт.
|
|
||||||
Для экспорта требуется:
|
|
||||||
|
|
||||||
1. выполнить экспорт детали в формат STEP
|
|
||||||
2. имя файла экспорта должно совпадать с именем детали
|
|
||||||
3. выполнить экспорт соединения в формат JSON
|
|
||||||
4. имя файла экспорта должно совпадать с именем соединения
|
|
||||||
5. экспорт должен производиться в отдельную директорию экспорта
|
|
||||||
6. директория экспорта должна иметь имя целевого механизма `+ cad`
|
|
||||||
7. все файлы экспорта всех деталей одного механизма должны находиться в директории экспорта
|
|
|
@ -1,8 +1,44 @@
|
||||||
---
|
---
|
||||||
id: cad_cg_pipeline
|
id: cad-cg-pipeline
|
||||||
title: 'Подбор алгоритмов и параметров обработки САПР моделей детали в 3д ассет'
|
title: 'Экспорт моделей из САПР'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Предисловие
|
||||||
|
Основными разновидностями моделирования в 3D-графике являются:
|
||||||
|
|
||||||
|
- Полигональное моделирование, описывает поверхность массивом точек (Mesh);
|
||||||
|
- САПР моделирование, описывает поверхность математической функцией (CAD).
|
||||||
|
|
||||||
|
При **полигональном** моделировании выбирается некий **предел** точек, поэтому не возможно избежать **изломов** криволинейной поверхности, создать **идеальную** ее плавность. В данном случае САПР имеет преимущество.
|
||||||
|
|
||||||
|
В то же время, для визуализации 3д графики на мониторе компьютера, необходимо чтоб все 3D-модели были в Mesh виде, в том числе и САПР, которые автоматически переводятся в полигональную сетку. В данном случае полигональное моделирование имеет преимущество.
|
||||||
|
|
||||||
|
- При визуализации полигональных моделей, их поверхность практически не изменяется (некоторое изменение будет в любом случае).
|
||||||
|
|
||||||
|
- При визуализация САПР моделей происходит автоматическая **тесселяция**, которая дискретизирует поверхность в сетку из треугольников, при этом нужно выбирать баланс между избыточной **ресурсоемкостью** на визуализацию, либо **точностью** визуализации.
|
||||||
|
|
||||||
|
## Примеры популярных алгоритмов тесселяции (meshing)
|
||||||
|
Все алгоритмы тесселяции схожи в том, что строят массив точек, иcходя из предела дискретизации.
|
||||||
|
Разделим алгоритмы по назначению:
|
||||||
|
### 1. Алгоритмы тесселяции для **Визуализации**
|
||||||
|
#### Алгоритм триангуляции Делоне с помощью алгоритма Ватсона
|
||||||
|
Реализация алгоритма BRepMesh_IncrementalMesh является частью САПР библиотеки Open CASCADE Technology (OCCT). Это инкрементный алгоритм, который разбивает треугольники до тех пор, пока результат тдискретизации не будет удовлетворять критериям отклонения **допуска** отклонения по расстоянию и углу. Результат для допустимой замкнутой оболочки, может считаться твердотельным, поскольку алгоритм учитывает закрытость оболочки.
|
||||||
|
Сетка подходит для визуализации, машинного обучения, симуляции машин и механизмов и для многих алгоритмов с контролируемой точностью.
|
||||||
|
|
||||||
|
Подробнее в статье [OCCT User Guides](https://dev.opencascade.org/doc/overview/html/occt_user_guides__mesh.html)
|
||||||
|
|
||||||
|
### 2. Алгоритмы тесселяции для **Метода Конечных Элементов** (FEM)
|
||||||
|
*Приведем несколько следующих алгоритмов схожих по назначению, это, в основном, механика твёрдого деформируемого тела, и подобные исследования для материалов объемов тел, которые расчитываются FEM методами.*
|
||||||
|
#### Алгоритм Netgen
|
||||||
|
Netgen использует несколько параметров, включая максимальный и минимальный размеры элементов, степень детализации сетки, количество шагов оптимизации и т.д. Netgen в основном работает в 3D. В зависимости от заданных параметров он может изготавливать элементы с размерами, адаптированными к локальным кривизнам - большими на участках плоской поверхности и меньшими на гнутых участках. Как только сетка построена для ребер и граней, Netgen выполняет дополнительные итерации для упрощения сетки. Установка этого параметра в 0 отключает упрощение. Netgen в целом медленнее, чем, например, Gmsh, и более чувствителен к качеству входных моделей.
|
||||||
|
|
||||||
|
Подробнее на сайте проекта [ngsolve.org](https://ngsolve.org/)
|
||||||
|
|
||||||
|
#### Алгоритм Gmsh
|
||||||
|
Gmsh работает в 3D и делает 4 прохода: анализ геометрии, анализ сетки, тесселяция, постобработка. Gmsh использует упомянутую выше OCCT для функций конструктивной геометрии и взаимодействует с дополнительной внешней сеткой и библиотеками адаптации сетки Netgen и Mmg3d для упрощения на этапе постобработки.
|
||||||
|
|
||||||
|
Подробнее на сайте проекта [gmsh.info](https://gmsh.info/)
|
||||||
|
|
||||||
## Процесс подготовки САПР моделей в виртуальные среды, симуляторы
|
## Процесс подготовки САПР моделей в виртуальные среды, симуляторы
|
||||||
|
|
||||||
1. Тесселяция САПР модели.
|
1. Тесселяция САПР модели.
|
||||||
|
@ -13,8 +49,8 @@ title: 'Подбор алгоритмов и параметров обработ
|
||||||
6. В результате получается **3D ассет** - полигональная модель с материалом + набор текстур.
|
6. В результате получается **3D ассет** - полигональная модель с материалом + набор текстур.
|
||||||
|
|
||||||
Качественный 3D ассет имеет хороший баланс между точностью геометрии и реcурсоёмкостью. То есть, хочется точность геометрии иметь выше, а ресурсоемкость - ниже.
|
Качественный 3D ассет имеет хороший баланс между точностью геометрии и реcурсоёмкостью. То есть, хочется точность геометрии иметь выше, а ресурсоемкость - ниже.
|
||||||
|
|
||||||
## Выбор алгоритма тесселяции
|
## Выбор алгоритма тесселяции
|
||||||
|
|
||||||
Основываясь на статье [Алгоритмы тесселяции моделей САПР](https://dev.opencascade.org/doc/overview/html/occt_user_guides__mesh.html) для виртуальных сред, симуляторов и прочих целей визуального характера выбираем **Алгоритм триангуляции Делоне с помощью алгоритма Ватсона** в виде его реализации BRepMesh_IncrementalMesh.
|
Основываясь на статье [Алгоритмы тесселяции моделей САПР](https://dev.opencascade.org/doc/overview/html/occt_user_guides__mesh.html) для виртуальных сред, симуляторов и прочих целей визуального характера выбираем **Алгоритм триангуляции Делоне с помощью алгоритма Ватсона** в виде его реализации BRepMesh_IncrementalMesh.
|
||||||
|
|
||||||
### Обход недостаточной предсказуемости алгоритмов тесселяции при высоких отклонениях
|
### Обход недостаточной предсказуемости алгоритмов тесселяции при высоких отклонениях
|
||||||
|
@ -42,4 +78,45 @@ title: 'Подбор алгоритмов и параметров обработ
|
||||||
|
|
||||||
**Вывод**. Проводить тесселяцию с минимальным допуском отклонения от истинной геометрии САПР модели, в ущерб ресурсоемкости.
|
**Вывод**. Проводить тесселяцию с минимальным допуском отклонения от истинной геометрии САПР модели, в ущерб ресурсоемкости.
|
||||||
|
|
||||||
## Выбор алгоритма ретопологии
|
## Рекомендации для инженера-конструктора по экспорту САПР моделей
|
||||||
|
|
||||||
|
Для реализации готовой САПР детали инженеру потребуется переносить модель детали между редакторами моделей.
|
||||||
|
Для хорошей практики при этом предлагается перед экспортом выполнить следующие требования.
|
||||||
|
|
||||||
|
### Подготовка 3д модели детали
|
||||||
|
Требуется выбрать и подготовить целевую деталь для соответствия следующим требованиям:
|
||||||
|
|
||||||
|
1. не может содержать несущие соединения или шарниры
|
||||||
|
Детали между шарнирами (соединениями) считаются как отдельные детали.
|
||||||
|
Самостоятельная, отделенная от родительских и дочерних элементов, деталь является понятным и законченным звеном механизма.
|
||||||
|
2. не может иметь взаимные или самопересекающиеся объемы
|
||||||
|
Отдельные элементы детали не должны проникать друг в друга. Деталь имеет понятные законченные элементы.
|
||||||
|
3. иметь все наружные элементы и исключить внутренние, которых не видно снаружи
|
||||||
|
Внутренние элементы не требуются для 3д симулятора и 3д визуализации, и их лучше совсем исключить из процесса экспорта.
|
||||||
|
4. иметь имя латиницей, без спецсимволов и без пробелов и быть в нижнем регистре
|
||||||
|
Нелатинские символы, спецсимволы и пробелы могут вызвать ошибку поиска объекта (файла) модели.
|
||||||
|
В Windows API имеется особенность - не отличать имена с буквами в верхнем и нижнем регистре, и в этом случае, как говориться, ССЗБ.
|
||||||
|
5. иметь нулевые трансформации
|
||||||
|
6. стоять в точке или плоскости симметрии
|
||||||
|
7. очевидная ось модели должна быть совмещена с одной из осей мира
|
||||||
|
8. стоять в центре мира, в нуле
|
||||||
|
Как вариант допускается выполнить предварительный экспорт модели в STEP для запекания истории и обнуления трансформаций.
|
||||||
|
Отцентрированная модель в 0-й позиции обеспечивает, как минимум, единообразие каталога моделей и, как максимум, возможность ее предсказуемой автоматизированной сборки с другими моделями. В этом случае будет точно известно где появится модель. Модели, не размещенные в начале координат, могут сливаться со сценой, и их будет трудно (или невозможно) найти в зависимости от их импортированного положения.
|
||||||
|
|
||||||
|
### Подготовка соединения
|
||||||
|
Для построения цельного механизма в 3д симуляторе требуется задать соединение(я):
|
||||||
|
|
||||||
|
1. задать **позицию** крепления или **ось** (точку) вращения шарнира **дочерней** детали
|
||||||
|
2. задать степени свободы дочерней детали
|
||||||
|
3. назвать полученный служебный объект используя имя целевой детали как суффикс
|
||||||
|
|
||||||
|
### Экспорт
|
||||||
|
Для экспорта требуется:
|
||||||
|
|
||||||
|
1. выполнить экспорт детали в формат STEP
|
||||||
|
2. имя файла экспорта должно совпадать с именем детали
|
||||||
|
3. выполнить экспорт соединения в формат JSON
|
||||||
|
4. имя файла экспорта должно совпадать с именем соединения
|
||||||
|
5. экспорт должен производиться в отдельную директорию экспорта
|
||||||
|
6. директория экспорта должна иметь имя целевого механизма `+ cad`
|
||||||
|
7. все файлы экспорта всех деталей одного механизма должны находиться в директории экспорта
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
---
|
|
||||||
id: tesselation
|
|
||||||
title: Алгоритмы тесселяции моделей САПР
|
|
||||||
---
|
|
||||||
|
|
||||||
## Предисловие
|
|
||||||
Основными разновидностями моделирования в 3D-графике являются:
|
|
||||||
|
|
||||||
- Полигональное моделирование, описывает поверхность массивом точек (Mesh);
|
|
||||||
- САПР моделирование, описывает поверхность математической функцией (CAD).
|
|
||||||
|
|
||||||
При **полигональном** моделировании выбирается некий **предел** точек, поэтому не возможно избежать **изломов** криволинейной поверхности, создать **идеальную** ее плавность. В данном случае САПР имеет преимущество.
|
|
||||||
|
|
||||||
В то же время, для визуализации 3д графики на мониторе компьютера, необходимо чтоб все 3D-модели были в Mesh виде, в том числе и САПР, которые автоматически переводятся в полигональную сетку. В данном случае полигональное моделирование имеет преимущество.
|
|
||||||
|
|
||||||
- При визуализации полигональных моделей, их поверхность практически не изменяется (некоторое изменение будет в любом случае).
|
|
||||||
|
|
||||||
- При визуализация САПР моделей происходит автоматическая **тесселяция**, которая дискретизирует поверхность в сетку из треугольников, при этом нужно выбирать баланс между избыточной **ресурсоемкостью** на визуализацию, либо **точностью** визуализации.
|
|
||||||
|
|
||||||
## Примеры популярных алгоритмов тесселяции (meshing)
|
|
||||||
Все алгоритмы тесселяции схожи в том, что строят массив точек, иcходя из предела дискретизации.
|
|
||||||
Разделим алгоритмы по назначению:
|
|
||||||
### 1. Алгоритмы тесселяции для **Визуализации**
|
|
||||||
#### Алгоритм триангуляции Делоне с помощью алгоритма Ватсона
|
|
||||||
Реализация алгоритма BRepMesh_IncrementalMesh является частью САПР библиотеки Open CASCADE Technology (OCCT). Это инкрементный алгоритм, который разбивает треугольники до тех пор, пока результат тдискретизации не будет удовлетворять критериям отклонения **допуска** отклонения по расстоянию и углу. Результат для допустимой замкнутой оболочки, может считаться твердотельным, поскольку алгоритм учитывает закрытость оболочки.
|
|
||||||
Сетка подходит для визуализации, машинного обучения, симуляции машин и механизмов и для многих алгоритмов с контролируемой точностью.
|
|
||||||
|
|
||||||
Подробнее в статье [OCCT User Guides](https://dev.opencascade.org/doc/overview/html/occt_user_guides__mesh.html)
|
|
||||||
|
|
||||||
### 2. Алгоритмы тесселяции для **Метода Конечных Элементов** (FEM)
|
|
||||||
*Приведем несколько следующих алгоритмов схожих по назначению, это, в основном, механика твёрдого деформируемого тела, и подобные исследования для материалов объемов тел, которые расчитываются FEM методами.*
|
|
||||||
#### Алгоритм Netgen
|
|
||||||
Netgen использует несколько параметров, включая максимальный и минимальный размеры элементов, степень детализации сетки, количество шагов оптимизации и т.д. Netgen в основном работает в 3D. В зависимости от заданных параметров он может изготавливать элементы с размерами, адаптированными к локальным кривизнам - большими на участках плоской поверхности и меньшими на гнутых участках. Как только сетка построена для ребер и граней, Netgen выполняет дополнительные итерации для упрощения сетки. Установка этого параметра в 0 отключает упрощение. Netgen в целом медленнее, чем, например, Gmsh, и более чувствителен к качеству входных моделей.
|
|
||||||
|
|
||||||
Подробнее на сайте проекта [ngsolve.org](https://ngsolve.org/)
|
|
||||||
|
|
||||||
#### Алгоритм Gmsh
|
|
||||||
Gmsh работает в 3D и делает 4 прохода: анализ геометрии, анализ сетки, тесселяция, постобработка. Gmsh использует упомянутую выше OCCT для функций конструктивной геометрии и взаимодействует с дополнительной внешней сеткой и библиотеками адаптации сетки Netgen и Mmg3d для упрощения на этапе постобработки.
|
|
||||||
|
|
||||||
Подробнее на сайте проекта [gmsh.info](https://gmsh.info/)
|
|
Loading…
Add table
Add a link
Reference in a new issue