diff --git a/docs/technologies/cad-cg-pipeline.md b/docs/technologies/cad-cg-pipeline.md index facb317..04ab1ae 100644 --- a/docs/technologies/cad-cg-pipeline.md +++ b/docs/technologies/cad-cg-pipeline.md @@ -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 ортогональных оси и точку), которые могут играть роль вспомогательных СК.