Специализация — вещь полезная. Инструмент для решения конкретной задачи всегда в состоянии дать фору коллеге-универсалу. Этот принцип в полной мере касается программного обеспечения для 3D-моделирования. Средствами САПР создаются цифровые прототипы объектов, состоящих из тысяч узлов, между которыми могут быть глубокие параметрические связи. Кроме того, этот класс ПО должен поддерживать выпуск конструкторской документации, а в нагрузку еще вести инженерные расчеты и не забывать о технологии производства (модули CAE и CAM). А как насчет дизайна для проспектов маркетинговых отделов? Ну нет, это уж слишком! Тут не обойтись без систем-помощников, специализирующихся на визуализации. Сегодня в центре нашего внимания — дуэт КОМПАС-3D и Blender.
Показать товар лицом — эта присказка в полной мере относится и к продуктам промышленного производства. Конечно, чертежи и спецификации — вещи хорошие и необходимые, но в них заглядывают, как правило, либо специалисты-производственники, либо чересчур дотошные клиенты, которые уже в целом определились с выбором изделия и хотят уточнить «габаритку», «привязки» или комплект ЗиП. Но перед этим сам технический объект, а конкретно — его внешний облик, должен произвести ВПЕЧАТЛЕНИЕ, недаром это понятие стало нарицательным для обозначения импрессионизма, крупнейшего художественного направления, зародившегося во Франции на исходе XIX века. Инструментам систем автоматизированного проектирования не чужды линии, формы и объемы, а вот с игрой света и тени, бликами, рефлексами и полутонами могут возникнуть определенные сложности. Для визуализации трехмерной модели (тем более фотореалистичной) имеет смысл обратиться к стороннему специализированному программному обеспечению. Конечно, тонкостей в любой работе хватает, и мы не намереваемся раскрывать все секреты профессии 3D-художника. Наша задача будет состоять лишь в том, чтобы продемонстрировать базовую последовательность действий для работы с моделью на стыке САПР и специального ПО для визуализации. В первую очередь мы коснемся вопросов экспорта-импорта моделей.
Итак, нашим инструментарием будет САПР АСКОН КОМПАС-3D [1] и популярный как по функционалу, так и по условиям использования «3D-комбайн» Blender [2]. Общий сценарий действий таков: операции конструирования и трехмерного моделирования выполняются в КОМПАС-3D, а художественная часть проекта реализуется в Blender (рис. 1).
Рис. 1. Визуализация-раскадровка 3D-модели средствами Blender
Такая комбинация весьма вероятна, поскольку первая часть работы, скорее всего, уже выполнена конструктором в его профильном ПО. Тестовая модель — бинокль, сборка которого состоит из оси и двух идентичных узлов с оптическими системами (рис. 2). Цвет материалов модели, определенный в КОМПАС-3D, для дальнейших манипуляций не существен.
Рис. 2. Тестовая сборка в КОМПАС-3D
В системе Blender файлы сборок и деталей КОМПАС-3D непосредственно не поддерживается, поэтому модель необходимо выгрузить в один из общих форматов. Используя команду КОМПАС-3D Файл -> Сохранить как … (рис. 3), выбираем тип файла STL и открываем окно дополнительных настроек (Сохранить с параметрами). В качестве единицы измерения для экспорта указываем миллиметры. Если модель твердотельная, то выбираем выгрузку из сборки только тел. Формат STL предполагает аппроксимацию поверхности 3D-модели в виде списка треугольных граней, то есть чем больше их число, тем более точно будет передаваться форма, но размер итогового файла будет при этом, естественно, расти, и манипулировать им в том же Blender будет неудобно. Нужен определенный компромисс. Для нашей модели, имеющей порядок размеров до нескольких десятков сантиметров, достаточна точность по максимальному линейному отклонению, равному 0,01, что для данной модели дает размер STL-файла до 100 Мбайт (см. рис. 3).
Рис. 3. Экспорт сборки КОМПАС-3D в STL-файл
Теперь создаем новый файл в Blender и удаляем в нем объект «по умолчанию», обычно это кубик. На вкладке Настройки сцены выбираем единицы длины — миллиметры и обращаемся к команде File -> Import -> STL (рис. 4). В окне импорта находим полученный ранее STL-файл, указываем его Масштаб (Scale) равным 0,001 и, проконтролировав направление Вверх (Up) вдоль оси Z модели (Z Up), выполняем загрузку (Import STL).
Рис. 4. Импорт STL-файла модели в Blender
Файл сборки КОМПАС-3D, преобразованный в STL-формат, представляется в Blender как единый сеточный (mesh) объект (рис. 5). Его размеры с учетом наших настроек экспорта-импорта должны теперь соответствовать оригинальным — убедиться в этом поможет команда Измерить (Measure). Следует обратить внимание на то, что у каждого объекта Blender есть ключевая точка (Оrigin), относительно которой выполняются все операции манипулирования (перемещение, вращение, масштабирование). При импорте объекта его Origin оказывается в том месте, где в файле САПР (КОМПАС-3D) находилось начало координат. В нашем случае Origin оказался в нижней части правой половинки бинокля (см. рис. 5). Нам желательно установить эту точку на ось модели, а сам бинокль переместить так, чтобы его ось проходила через начало координат Blender (пересечение осей X и Y).
Рис. 5. Модель САПР после загрузки в Blender
Выполним это путем следующих манипуляций:
- Не сбрасывая выделения с модели бинокля, Object -> Set Origin -> Origin to Geometry (рис. 6а).
- Object -> Snap -> Selection to Cursor (рис. 6б).
Рис. 6. Установка позиции Origin объекта (а) и перемещение модели в начало координат Blender (б)
Первая операция переносит Origin в геометрический центр модели, а вторая «буксирует» саму модель за обновленный Origin в позицию курсора (Cursor), который изначально установлен в начало координат Blender.
Теперь нам необходимо структурно разделить импортированную модель на части (детали и узлы) для назначения им материалов или, например, анимации. Для этого переходим в режим редактирования выделенного объекта — импортированной модели (команда Edit Mode выпадающего меню или клавиша TAB) — рис. 7. В окне программы становится видна сеточная структура модели. Теперь нужно включить режим Выделения граней (рядом с меню Edit Mode) — см. рис. 7.
Рис. 7. Режим редактирования сеточной модели в Blender
Особенностью импортированной модели является то, что грани каждой детали образуют замкнутую поверхность. Это позволит легко выделить каждый компонент сборки и преобразовать его в отдельный объект файла Blender. Образуем, например, деталь-ось бинокля. В режиме Выделения граней, зажав клавишу L, щелкнем по любой грани на поверхности оси. В результате автоматически выделятся все грани этого объекта (рис. 8а). Затем щелчком по клавише P вызовем для выделенных граней меню Separate для отсоединения участка сетки в отдельный объект (рис. 8б). В результате в структуре модели появится еще один mesh-объект, соответствующий оси бинокля (рис. 8в).
Рис. 8. Отделение объектов от импортированной сетки
Используя меню переключения режимов (или клавишу TAB), вернемся в объектный режим (Object Mode). Выделим новый объект в структуре файла Blender, нажмем клавишу F2 и дадим компоненту имя, например Ось (рис. 9).
Рис. 9. Объект-деталь, образованный из импортированной сетки
Используя переключатель-«глаз» в дереве-структуре, оставим видимым только компонент Ось и «приблизим» его к нам, вращая колесико мышки, — станут видны ребра на стыках граней-полигонов, аппроксимирующих исходную сапровскую модель. С этим явлением, конечно, необходимо бороться. Первое средство — это контекстная команда Shade Smooth (Визуальное сглаживание) — рис. 10.
Рис. 10. Фасеточная форма модели до применения Shade Smooth
Результат использования Shade Smooth может быть неоднозначным — модель сглаживается, но при этом пропадает резкость ребер, которые должны быть четко выраженными, например фаски (рис. 11а). Тогда имеет смысл применить опцию Настройки данных объекта -> Normals -> Auto Smooth (Автоматическое сглаживание) с некоторым пороговым значением угла кривизны, при котором сглаживается форма (по умолчанию — 30 градусов) — рис. 11б.
Рис. 11. Результат сглаживания модели до (а) и после (б) применения опции Auto Smooth
Аналогичным образом можно отделить все необходимые детали от импортированного объекта. Только элементы одинаковые или зеркальные имеет смысл реализовать непосредственно в Blender без использования данных импортированной сетки. Это существенно сократит объем файла проекта Blender и ускорит работу с ним. На рис. 12 показаны все отделенные объекты-детали бинокля (ось, кожух, накладка, окуляр, две линзы), а исходная сетка скрыта — ее можно и даже желательно удалить по указанной выше причине. Во врезке на рис. 12 приведены сравнительные размеры файлов Blender до (...with_source_mesh…) и после удаления исходной импортированной сетки.
Рис. 12. Деталировка модели на основе импортированной сетки
Зеркальную копию выделенного объекта, не приводящую к существенному росту размера файла Blender, можно получить, применив к нему модификатор Mirror (Настройки модификаторов > Add Modifier) — рис. 13а. Плоскость симметрии указывается по оси, перпендикулярной этой плоскости. В приведенном случае «зеркало» для накладки кожуха выполняется относительно плоскости XZ, поэтому в параметрах модификатора задействована ось Y (рис. 13б).
Рис. 13. Вызов модификатора Mirror (а) и результат его применения для накладки кожуха (б)
Blender позволяет структурировать модели, организуя их иерархию подобно узлам-подсборкам в САПР. В нашем примере создается подсборка для половинки бинокля. Для этого выделяются все необходимые компоненты (кроме оси), причем компонент, который станет основой узла (в данном примере — кожух), должен быть указан последним при зажатой клавише CTRL. Затем выполняется команда CTRL+P (Set Parent To) — рис. 14а. В результате образуется узел на основе детали-кожуха (родителя — parent), к которому структурно присоединены остальные выделенные объекты — рис. 14б.
Рис. 14. Использование технологии Parent (а) для структурирования модели — создание подсборки в Blender (б)
Идентичные копии объектов (в том числе узлов) можно создавать без дублирования информации об их геометрии в файле Blender (аналогично тому, как это делается при вставке нескольких экземпляров одной и той же детали в сборке КОМПАС-3D). Для этого служит команда Duplicate Linked, вызываемая из меню Object или сочетанием клавиш ALT+D (рис. 15а). В результате ее выполнения создается экземпляр выделенной геометрии (рис. 15б), который в дальнейшем можно, например, переместить или повернуть в пространстве независимо от позиции и ориентации оригинала.
Рис. 15. Команда Duplicate Linked для создания экземпляра узла в Blender (а) и результат ее выполнения (б)
В нашем случае второй экземпляр узла кожуха следует развернуть на 180 градусов вокруг оси бинокля. Алгоритм этого действия следующий: выделяем узел-кожух (например, в структуре проекта), нажимаем клавишу R (команда вращения объекта), щелкаем по клавише Z (выбирая ось вращения) и вводим на клавиатуре 180 (значение угла поворота в градусах) — рис. 16. Вращение узла происходит относительно точки Origin, которая была унаследована от соответствующего начала координат, установленного нами для импортированной сетки (см. рис. 6). В дальнейшем значение угла поворота экземпляра узла-кожуха доступно для редактирования в группе Настроек объекта (поле Transform -> Rotation Z) — эти настройки также можно вызвать щелчком по клавише N.
Рис. 16. Поворот экземпляра узла кожуха относительно оси бинокля
Рис. 17. Палитра возможностей Blender: материалы, освещение, анимация, рендер (визуализация)
Итак, к данному моменту мы импортировали модель из КОМПАС-3D в Blender, позиционировали ее в пространстве и разделили ее геометрию на детали, сгладили их поверхности, создали необходимые копии-экземпляры объектов, сформировали узлы и установили их исходное взаимное расположение. Контакт между САПР и приложением для дизайна установлен. Что далее? Теперь начинается самое интересное! Создание материалов и назначение их компонентам, настройка освещения с использованием различных типов источников, анимация компонентов проекта и, наконец, визуализация-рендер — генерирование фотореалистичного представления модели в статике и динамике (рис. 17). Об этих вещах в контексте нашего проекта-бинокля можно более подробно узнать из видеосюжета, к которому прилагаются все исходные файлы и полученные результаты [3].
Источники:
- Справочная система АСКОН КОМПАС-3D // https://help.ascon.ru/KOMPAS/22/ru-RU/index.html.
- Справочная система Blender // https://docs.blender.org/manual/en/latest/getting_started/help.html.
- Проект визуализации бинокля средствами Blender после импорта модели из КОМПАС-3D // https://youtu.be/tYBl2LuMvHk.