diff --git a/docs/manuals/algoritm_eksporta.md b/docs/manuals/algoritm_eksporta.md deleted file mode 100644 index a7b16fb..0000000 --- a/docs/manuals/algoritm_eksporta.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -id: algoritm_eksporta -title: Алгоритм экспорта САПР модели для 3d симулятора. ---- - -

Алгоритм экспорта САПР модели для 3d симулятора.

- -- [Введение](#введение) -- [Подготовка 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. все файлы экспорта всех деталей одного механизма должны находиться в директории экспорта diff --git a/docs/technologies/cad_cg_pipeline.md b/docs/technologies/cad_cg_pipeline.md index 0f99dcd..9d93428 100644 --- a/docs/technologies/cad_cg_pipeline.md +++ b/docs/technologies/cad_cg_pipeline.md @@ -1,8 +1,44 @@ --- -id: cad_cg_pipeline -title: 'Подбор алгоритмов и параметров обработки САПР моделей детали в 3д ассет' +id: cad-cg-pipeline +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. Тесселяция САПР модели. @@ -13,8 +49,8 @@ title: 'Подбор алгоритмов и параметров обработ 6. В результате получается **3D ассет** - полигональная модель с материалом + набор текстур. Качественный 3D ассет имеет хороший баланс между точностью геометрии и реcурсоёмкостью. То есть, хочется точность геометрии иметь выше, а ресурсоемкость - ниже. - ## Выбор алгоритма тесселяции + Основываясь на статье [Алгоритмы тесселяции моделей САПР](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. все файлы экспорта всех деталей одного механизма должны находиться в директории экспорта diff --git a/docs/technologies/tesselation.md b/docs/technologies/tesselation.md deleted file mode 100644 index 9ce3684..0000000 --- a/docs/technologies/tesselation.md +++ /dev/null @@ -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/)