Исправил орфографию и пунктуацию

This commit is contained in:
Igor Brylyov 2023-06-19 19:35:37 +00:00
parent 18a1706b67
commit 03e4c509b4

View file

@ -2,18 +2,18 @@
id: cad-cg-pipeline
title: 'Экспорт для технологии компьютерной графики и симуляции.'
---
# Введение.
## Основные методы описания трёхмерных объектов.
# Введение
## Основные методы описания трёхмерных объектов
### Полигональное моделирование.
### Полигональное моделирование
Описывает поверхность массивом точек (Mesh). При этом типе моделирования выбирается некий **предел** точек, поэтому невозможно избежать **изломов** криволинейной поверхности, создать **идеальную** ее плавность. Метод применяется для визуализации моделей на мониторе компьютера, что обусловлено эффективностью обработки Mesh с помощью видео-ускорителей. При визуализации полигональных моделей, их поверхность практически не изменяется (некоторое изменение будет в любом случае).
### САПР моделирование.
### САПР моделирование
Описывает поверхность математической функцией в случае Конструктивной блочной геометрии (Constructive Solid Geometry, CSG) или Граничным представлением (Boundary representation, BREP). При визуализация САПР моделей происходит автоматическая **тесселяция**, которая дискретизирует поверхность в сетку из треугольников, при этом нужно выбирать баланс между избыточной **ресурсоемкостью** на визуализацию, либо **точностью** визуализации.
# Технологии компьютерной графики и симуляции.
## Технологический цикл производства.
# Технологии компьютерной графики и симуляции
## Технологический цикл производства
1. Тесселяция САПР модели.
2. Ретопология и оптимизация от результата тесселяции.
@ -24,18 +24,18 @@ title: 'Экспорт для технологии компьютерной гр
Качественный 3D ассет имеет хороший баланс между точностью геометрии и реcурсоёмкостью. То есть, хочется точность геометрии иметь выше, а ресурсоемкость - ниже.
## 1. Тесселяция САПР модели.
### Виды алгоритмов тесселяции.
## 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, и более чувствителен к качеству входных моделей.
@ -62,7 +62,7 @@ Gmsh работает в 3D и делает 4 прохода: анализ ге
![](img/O2.jpg "нулевой уровень тесселяции символа О шрифта Arial")
Мы знаем этот символ, он должен быть симметричным, а сейчас мы видим что он симметричен только на высоких уровнях тесселяции. Это происходит вледствие **разного расстояния** и **разной кривизны** между ключевыми точками. И вообщем не возможно добиваться на производственных моделях равномерности расстояния и кривизны между точками. Поэтому мы предлагаем следующий способ - проводить тесселяцию с минимальным допуском отклонения от истинной геометрии САПР модели, в ущерб ресурсоемкости.
Этот символ должен быть симметричным, но на иллюстрации заметно, что он симметричен только на высоких уровнях тесселяции. Это происходит вследствие **разного расстояния** и **разной кривизны** между ключевыми точками. Добиваться на производственных моделях равномерности расстояния и кривизны между точками очень сложно, поэтому мы предлагаем следующий способ - проводить тесселяцию с минимальным допуском отклонения от истинной геометрии САПР модели в ущерб ресурсоёмкости.
![](img/O3.jpg "тесселяция с малым допуском отклонения символа О шрифта Arial")
@ -78,12 +78,11 @@ Gmsh работает в 3D и делает 4 прохода: анализ ге
Вывод: проводить тесселяцию с минимальным допуском отклонения от истинной геометрии САПР модели, в ущерб ресурсоемкости.
## 2. Ретопология и оптимизация от результата тесселяции.
## 2. Ретопология и оптимизация от результата тесселяции
Выше было сказано про предсказуемость результата алгоритмов тесселяции мы указали, что целесообразно выгонять детализированные 3д объекты, в ущерб их оптимизации. В этой части будет рассказано как добиться хорошего качества 3д модели при высокой ее оптимизации.
#### Ретопология комплексной сборочной 3д модели.
#### Ретопология комплексной сборочной 3д модели
![](img/retopo_02.jpg "Сборочная модель")
@ -102,11 +101,11 @@ OpenVDB — это программная библиотека с открыты
Для получения максимальной оптимизации при максимальной аккуратности формы модели, рекомендуется выполнять процесс ретопологии вручную, пользуясь услугами 3д художников компьютерной графики.
#### Ретопология простой 3д модели.
#### Ретопология простой 3д модели
В отличие от сборочной модели, нет проблемы со внутренними деталями, и процесс сводится к простому перестроение поверхности по на заданный предел по количеству точек 3д модели для компенсации задатка при теселяции.
## 3. Придание физических свойств объекту назначением материала.
## 3. Придание физических свойств объекту назначением материала
На данном этапе предлагается для деталей применять FEM материалы, которые предназначены для описания физический свойств объекта, как типов (например: метал, пластик и др.) так и свойств (например: плотность, электропроводность и др.). Движки рендеринга разработанные для задач компьютерной графики, таких настроек не имеют, поэтому мы предлагаем назначать FEM материалы в САПР редакторе FreeCAD.
@ -114,38 +113,37 @@ OpenVDB — это программная библиотека с открыты
![](img/bake_01.jpg "Пример отображения 3д шейдера")
Как особенность нашей реализации, можно отметить "оплавление" острых граней объектов, как это обычно случается в реальной жизни - все остые грани либо обрабатываются, либо притупляются естественным путем, и никогда не бывают такими, как выглядят их производственные объекты в САПР редакторе. Этот момент мы считаем принципиальным.
Как особенность нашей реализации, можно отметить "оплавление" острых граней объектов, как это обычно случается в реальной жизни - все острые грани либо обрабатываются, либо притупляются естественным путем, и никогда не бывают такими, как выглядят их производственные объекты в САПР редакторе. Этот момент мы считаем принципиальным.
## 4. Параметрическое текстурирование фактуры физического материала модели.
## 4. Параметрическое текстурирование фактуры физического материала модели
Задачи машинного обучения и компьютерного зрения требуют от объекта не только 3д шейдер, но и фактуру, неоднородность поверхности, или рисунок. Это помогает алгоритмам распознавания объектов точнее выполнить свою задачу.
Мы предлагаем путь процедурной параметрической генерации фактуры. Для этого удобно использовать движок рендеринга Cyclec в интерфейсе Blender или через его программный интерфейс.
Мы предлагаем путь процедурной параметрической генерации фактуры. Для этого удобно использовать движок рендеринга Cycles в интерфейсе Blender или через его программный интерфейс.
![](img/bake_02.jpg "Пример сгенерированной фактуры симуляции 3д печати пластиком")
На данном примере можно увидеть слоистую фактуру, как это бывает с напечатанными деталями по технология послойного плавления пластиком.
Плюсы процедурной параметрической генерации в том что фактура получается объектонезависимой и легко переносится и адаптируется под любые формы, требуя минимальных доработок, или без них воовсе.
В минус можно записать требования квалификации художника по текстурам, и относительный порог вхождения по сравнению с традиционной пиксельной графикой.
Плюсы процедурной параметрической генерации в том, что фактура получается объекто-независимой, легко переносится и адаптируется под любые формы, требуя минимальных доработок или вовсе без них. В минус можно записать требования к квалификации художника по текстурам и относительный порог вхождения по сравнению с традиционной пиксельной графикой.
## 5. Запекание растровых текстур физического материала.
## 5. Запекание растровых текстур физического материала
Для этого шага нам потребуется ранее заготовленные 3д модели после этапов тесселяции и ретопологии. Попарно. Суть метода в том, чтобы перенести все параметрические данные и особенности формы поверхности с оригинального объекта, объекта после тесселяции, (высокополигональный объект) на оптимизированный объект (низкополигональный объект).
Данный пункт обширен, и будет рассмотрен в качестве беглого обзора.
#### Развертка поверхности низкополигонального объекта.
#### Развертка поверхности низкополигонального объекта
Для начала выполняется раскройка поверхности низкополигонального объекта, или - развертка.
Для начала выполняется раскройка поверхности низкополигонального объекта (т.н. развертка).
![](img/bake_03.jpg "Пример правильной непересекающейся развертки")
Ключевые особенности:
- Не должно быть наложений, пересечений кусочков. Каждый пиксель целевой текстуры должен быть на модели только 1 раз.
- Не должно быть наложений, пересечений кусочков. Каждый пиксель целевой текстуры должен быть представлен на модели только 1 раз.
- Кусочки не должны быть сильно растянуты по одной из сторон. Идеально, если они не растянуты вовсе.
- Все кусочки развертки должны быть в едином масштабе. Допускается обоснованная вариация масштаба для повышения эффективности использования площади развертки.
- Расстояние между кусочками должно быть обосновано размером целевой текстуры. Например для текстуры 4096 пикселей это расстояние должно быть равно не менее 32 пикселя. Это обеспечит качественное отображение текстуры на объекте в любых условиях использования.
- Площадь занимаемая кусочками должна быть не менее 50% от общей площади развертки.
- Все кусочки развёртки должны быть в едином масштабе. Допускается обоснованная вариация масштаба для повышения эффективности использования площади развертки.
- Расстояние между кусочками должно быть обосновано размером целевой текстуры. Например, для текстуры 4096 пикселей это расстояние должно быть равно не менее 32 пикселя. Это обеспечит качественное отображение текстуры на объекте в любых условиях использования.
- Занимаемая кусочками площадь должна занимать не менее 50% от общей площади развертки.
#### Запекание в набор текстур.
@ -153,31 +151,31 @@ OpenVDB — это программная библиотека с открыты
- Цвет. Аlbedo. Еще это может быть Diffuse, но с оговорками. Он представляет собой простой оттенок материала, или нескольких материалов, без теней.
- Карта нормалей. Normal. В ней записано чем отличается низкополигональный объект от высокополигонального, плюс особенности рельефа фактуры материала.
- Локальные тени. Ambient occlusion. Это тени объекта, отбрасываемые самим собой на самого себя.
- Шероховатость. Roughness. Текстура поверхности с указанием поместной шероховатости в диапазоне 0-1.
- Металлик. Metallic. Поместно определяет тип поверхности метал/неметал. Может быть либо 0, либо 1.
- Шероховатость. Roughness. Текстура поверхности с указанием локальной шероховатости в диапазоне 0-1.
- Металлик. Metallic. Локально определяет тип поверхности метал/неметал. Может быть либо 0, либо 1.
Последние 3 текстуры являются скалярными (черно-белыми) величинами, поэтому их обычно упаковывают в 1 текстуру по RGB каналам. Это положительно сказывается на производительности в 3д движке симуляции, так как снижает количество обращений, на 2 меньше. Например для 10ти материалов будет уже экономия на 20 обращений!
Последние 3 текстуры являются скалярными (черно-белыми) величинами, поэтому их обычно упаковывают в 1 текстуру по RGB каналам. Это положительно сказывается на производительности в 3д движке симуляции, так как снижает количество обращений - на 2 меньше. Например для 10ти материалов будет уже экономия на 20 обращений!
![](img/bake_04.jpg "Пакет текстур")
## 6. Экспорт CG ассета (низкополигональная модель с материалом и набором текстур).
## 6. Экспорт CG ассета (низкополигональная модель с материалом и набором текстур)
Выполняется экспорт в один из универсальных 3д фоматов обмена. 3д фомат зависит от 3д движка. В основном, для современных движков, используется формат FBX. Для задач физических симуляций могут применяться форматы DAE (очень близкий к FBX) или OBJ (старый формат, не рекомендуется использовать).
Выполняется экспорт в один из универсальных 3д форматов обмена. 3д формат зависит от 3д движка. Как правило, в современных движках используется формат FBX. Также для задач физических симуляций могут применяться форматы DAE (очень близкий к FBX) или OBJ (старый формат, не рекомендуется использовать).
Устаревшие форматы, такие как 3ds, не рекомендуется использовать. Они могут портить модель или не поддерживать (терять) данные.
Дополнительно могут быть задействованы такие форматы как, STL, в качестве формата для объектов коллизии.
Дополнительно, в качестве формата для объектов коллизий (как, например, в Gazebo), могут быть задействованы такие форматы как STL .
![](img/bake_05.jpg "Полигональная сетка CG ассета")
На изображении показана полигональная сетка CG ассета. Можно видеть что неформообразующие детали существуют только на текстуре и фактически отсутствуют на геометрии.
На изображении показана полигональная сетка CG (computer graphics) ассета. Можно видеть что неформообразующие детали существуют только на текстуре и фактически отсутствуют на геометрии.
![](img/bake_06.jpg "CG ассет")
Вид импортированного в 3д движок CG ассета.
## Приложение.
## Приложение
### Рекомендации для инженера-конструктора по экспорту САПР моделей
@ -212,11 +210,11 @@ OpenVDB — это программная библиотека с открыты
Задание вспомогательных систем координат является достаточно часто используемой операцией. Общие принципы их задания, в целом, одинаковы для CAD-систем, таких как Catia V5, Solidworks, FreeCAD, SiemensNX и т.д.
В большинстве случаев используется ортогональная трехмерная декартова система координат. Однако, есть информация, что некоторые CAD'ы, такие как Inventor, позволяют использовать так же сферические и полярные системы координат. Отголоски этого в прочих системах видны, например, при построении отрезков, когда отрезок строится по углу наклона и длине.
В большинстве случаев используется ортогональная трёхмерная декартова система координат. Однако, есть информация, что некоторые CAD'ы, такие как Inventor, позволяют использовать так же сферические и полярные системы координат. Отголоски этого в прочих системах видны, например, при построении отрезков, когда отрезок строится по углу наклона и длине.
В любой построенной модели существует глобальная система координат, которая создается автоматически. Никаких манипуляций сделать с ней невозможно. Пользователь имеет возможность создать любое количество вспомогательных СК по своему усмотрению.
Использование вспомогательных систем координат позволяет удобно ориентировать модель в глобальном пространстве. Если "мировой ноль" нельзя сдвинуть или уничтожить, то подобные операции с вспомогательными СК, напротив, достаточно удобны. Так же, благодаря вспомогательным СК возможно быстро сопрягать элементы в сборке, задавая, например, ключевые точки элементов креплений, отверстия или участки захвата. Подобный подход, например, используется в верстаке Assembly4 во FreeCAD, позволяя собирать конструкции без использования сложных солверов, которые используются для расчета сборок в Assembly3 и прочих.
Использование вспомогательных систем координат позволяет удобно ориентировать модель в глобальном пространстве. Если "мировой ноль" нельзя сдвинуть или уничтожить, то подобные операции с вспомогательными СК, напротив, достаточно удобны. Так же, благодаря вспомогательным СК возможно быстро сопрягать элементы в сборке, задавая, например, ключевые точки элементов креплений, отверстия или участки захвата. Подобный подход, например, используется в верстаке Assembly4 во FreeCAD, позволяя собирать конструкции без использования сложных солверов(solver, решатель), которые используются для расчета сборок в Assembly3 и прочих.
Способ задания систем координат в разных CAD отличается только конкретными интерфейсными решениями. Обобщённый способ таков:
@ -224,6 +222,6 @@ OpenVDB — это программная библиотека с открыты
2. Нужно выбрать минимум два ортогональных направления. Третье направление строится автоматически по принципам право- или левосторонней системы координат (в зависимости от выбранных настроек пользователем). Выбрать данные направления можно различными путями, например, возможно выбрать ось цилиндрической поверхности, прямолинейную грань, нормаль к поверхности. Так же можно задать ось или отрезок собственноручно, как и обычный примитив. В том случае, если направления не выбирать, CAD может выбрать их по умолчанию. В таком случае они будут совпадать с направлениями глобальной СК
3. После задания направлений CAD достраивает недостающее направление и СК оказывается построенной.
Как выяснилось, на данный момент вспомогательные СК не сохраняются при экспорте в STP, IGS и STL-файлы. Официальный сайт Autodesk, например, заявляет, что экспорт пользовательских СК на данный момент невозможен. Офф.руководство Solidworks указывает, что есть возможность выбрать *активную* систему координат, которая при экспорте заменит собой глобальный ноль. Однако, SW позволяет экспортировать эскизные элементы, такие как окружности и кривые. Эти кривые будут существовать как отдельная геометрия и потенциально может быть использована как основа для прописывания локальных СК.
Как выяснилось, на данный момент вспомогательные СК не сохраняются при экспорте в STP, IGS и STL-файлы. Официальный сайт Autodesk, например, заявляет, что экспорт пользовательских СК на данный момент невозможен. Официальное руководство Solidworks указывает, что есть возможность выбрать *активную* систему координат, которая при экспорте заменит собой глобальный ноль. Однако, SW позволяет экспортировать эскизные элементы, такие как окружности и кривые. Эти кривые будут существовать как отдельная геометрия и потенциально может быть использована как основа для прописывания локальных СК.
При этом глобальный ноль существует всегда. Поскольку STP-файл представляет собой текстовое и редактируемое описание геометрии детали, потенциально можно прописывать специальные примитивы (например, 3 ортогональных оси и точку), которые могут играть роль вспомогательных СК.