В этом уроке мы рассмотрим, как импортировать и настроить 3D-модель, загруженную с Adobe Stock, в Blender.
Текстовая расшифровка видео
Всем привет! В этом уроке мы рассмотрим, как импортировать и настроить 3D-модель, загруженную с Adobe Stock, в Blender.
На сайте Adobe Stock доступны тысячи 3D-моделей. Каждая модель предоставляется в формате OBJ с PBR-текстурами, благодаря чему её можно использовать практически в любом программном обеспечении для 3D-графики и игровых движках, таких как Unity, Unreal, Blender, 3D Studio MAX и многих других.
Я выбрал эту 3D-модель, потому что она позволит нам рассмотреть не только процесс импорта OBJ-файла в сцену и быструю привязку PBR-текстур к её субматериалам, но и разделение различных частей, установку Origins и создание родительских связей, чтобы при необходимости можно было их легко изменить позже.

OBJ-файлы можно импортировать в сцену Blender в любой версии программы. Для материалов используется Principled BSDF, особенно с рендером Cycles.
На самом деле, действия, которые я покажу здесь, подходят не только для моделей, импортированных с Adobe Stock, но и для любых 3D-моделей, независимо от их происхождения.
В частности, в этом уроке мы рассмотрим 10 действий:
Как импортировать OBJ-файл, загруженный с Adobe Stock, в сцену Blender;
Как применить поворот и масштабирование к импортированной модели;
Как быстро настроить PBR-текстуры с помощью дополнения Node Wrangler;
Как настроить прозрачный материал для линз телескопа;
Как проверить, что Normals заданы правильно;
Как удалить пометки Sharp с импортированной модели, если мы предпочитаем их не использовать;
Как восстановить оригинальные UV seams;
Как разделить различные части геометрии на основе использованных субматериалов;
Как задать правильный Origin и повороты для всех отдельных частей;
Как настроить иерархию родитель-потомок между различными объектами.
Прежде чем приступить к импорту OBJ-файла в Blender, давайте рассмотрим ZIP-архив, загруженный с Adobe Stock. Мы извлекаем файлы, содержащиеся в архиве, в новую папку.

Внутри мы найдём три файла с расширениями OBJ, MTL и MDL. Файл OBJ содержит геометрию, а файлы MTL и MDL используются для определения материалов и их отображения на геометрии.
Также мы найдём папку, содержащую изображения текстур, которые будут использоваться для модели.

Для каждого субматериала в модели мы найдём как минимум 6 текстур в формате PNG с прозрачностью. Для субматериалов с прозрачными участками Adobe также предоставляет дополнительную текстуру для канала Translucency.
Однако в этом конкретном случае нам не нужны текстуры для каналов Glow, Opacity и Translucency. На самом деле, у нас нет ни светящихся, ни полупрозрачных материалов, поэтому мы настроим прозрачность без использования текстур в материале Principled BSDF для Cycles, как увидим позже.
Следовательно, мы можем удалить ненужные файлы из папки.
В итоге у нас останется по четыре текстуры для каждого субматериала. Позже мы увидим, как связать эти четыре текстуры с четырьмя основными каналами соответствующего субматериала Principled BSDF, а именно: Base Color, Metallic, Normal и Roughness.

Отлично, теперь мы действительно можем начать!
Давайте посмотрим, как импортировать OBJ-файл.
Импорт OBJ-файла в сцену Blender выполняется просто, нужно нажать File, Import, OBJ и выбрать файл на диске.

Blender автоматически использует файл MTL, в котором указаны субматериалы и то, как они связаны с различными частями объекта, который на данный момент представляет собой единый mesh-объект.

Разные части модели могут иметь разные цвета, но мы заменим все эти цвета соответствующими текстурами.
Переименуем 3D-модель, например, в Telescope.
Теперь давайте посмотрим, как применить трансформации Rotation и Scale к модели.
Прежде чем делать что-либо ещё, проверим размеры модели в сцене и убедимся, что они соответствуют остальной части сцены. Если размеры не подходят, изменим масштаб модели.
После этого проверим значения Rotation и Scale у только что импортированной 3D-модели, то есть убедимся, что Rotation установлен на 0, а Scale, на 1.

Если значения отличаются, применим трансформации Rotation и Scale, нажав сочетание клавиш CTRL A и выбрав пункт Rotation And Scale в появившемся меню Apply.

Эту операцию необходимо выполнить, чтобы сбросить как минимум начальный поворот практически для всех моделей, загруженных с Adobe Stock.
Теперь посмотрим, как быстро настроить текстуры с помощью дополнения Node Wrangler.
Переключимся в рабочее пространство Shading, чтобы увидеть список субматериалов в модели и одновременно просматривать нодовую схему каждого субматериала.
Изначально для каждого субматериала должен быть только узел Principled BSDF, подключённый к Material Output. Если есть другие узлы, удалите их.

Чтобы быстро импортировать и связать четыре текстуры с каждым субматериалом, мы воспользуемся дополнением Node Wrangler, которое поставляется с Blender по умолчанию.
Таким образом, не нужно искать и скачивать это дополнение, достаточно просто активировать его в окне Preferences.

Дополнение работает следующим образом:
для каждого субматериала необходимо выбрать узел Principled BSDF;
затем нужно нажать сочетание клавиш CTRL SHIFT T;
на экране появится окно, в котором можно выбрать четыре изображения, относящиеся к выбранному субматериалу.


В окне выбора текстур можно также ввести часть названия нужной текстуры, чтобы отфильтровать результаты и быстрее найти нужные изображения. Поскольку по умолчанию в объектах, загруженных с Adobe, названия текстур обычно имеют тот же префикс, что и имя соответствующего материала (за исключением суффикса mat), будет полезно скопировать имя материала перед нажатием CTRL SHIFT T, чтобы использовать его как фильтр.
Эту операцию нужно выполнить для всех субматериалов модели. Не забывайте каждый раз выделять узел Principled BSDF нужного субматериала, иначе дополнение не сработает.
Теперь давайте посмотрим, как настроить прозрачный материал в Cycles для линз телескопа.
У телескопа есть три субматериала, для которых необходимо настроить полностью прозрачный материал. Это: Optics Lenses, Finder Lenses и Telescope Main Lenses.
Для этих трёх материалов нужно убедиться, что значение Alpha установлено на 1, как должно быть по умолчанию.
Затем нужно установить значение Transmission для этих субматериалов равным 1.

Результат должен быть заметен в режиме Rendered в окне 3D Viewport.
Теперь давайте посмотрим, как проверить, правильно ли заданы Normals.
Ещё одна операция, которую можно выполнить на этом этапе, это проверка, что нормали полигонов направлены наружу.
Все 3D-модели, загружаемые с Adobe, должны иметь толщину, и команда Adobe, как правило, проверяет правильную ориентацию нормалей для всех частей объекта, поэтому этот шаг чаще всего избыточен.
Тем не менее, вы можете проверить нормали, переключившись в режим Edit Mode, затем открыть меню Viewport Overlays в 3D Viewport и включить отображение нормалей для граней.

В случае проблем вы можете выбрать часть объекта или всю 3D-модель в режиме Edit Mode, затем открыть Toolbox Blender и применить оператор Recalculate Outside.

Теперь удалим Sharp Edges с импортированной модели.
Переключившись в режим Edit Mode, вы можете заметить некоторые рёбра, отмеченные как Sharp. Инструмент Mark Sharp изменяет атрибуты нормалей и, соответственно, влияет на поведение инструментов, работающих с нормалями, таких как Edge Split или Autosmooth. Кроме того, наличие рёбер, помеченных как Sharp, влияет на финальное затенение граней, к которым они принадлежат.

Их наличие не должно вызывать проблем, но если вы хотите их удалить, просто выберите всю геометрию с помощью клавиши A, затем нажмите сочетание клавиш CTRL E для открытия меню Edges и выберите опцию Clear Sharp.

Теперь восстановим оригинальные UV seams.
В режиме Edit Mode мы также замечаем, что развёртки UV для геометрий отсутствуют. Рёбра, отмеченные как Seams, обычно отображаются красным, но здесь они не видны.
Однако, если выбрать геометрию, принадлежащую какому-либо субматериалу, и посмотреть на неё в окне UV Editing, мы увидим, что UV-острова действительно присутствуют. В конце концов, текстуры отображаются правильно, значит развёртка UV, оригинальная. Просто формат OBJ не сохраняет информацию о Seams, поэтому в Blender эти рёбра не будут отображаться как помеченные.

Чтобы восстановить развёртки и иметь возможность их редактировать или выполнять другие операции с UV-островами, достаточно:
выбрать всю геометрию в режиме Edit Mode,
переключиться в окно UV Editor,
также выделить всю геометрию, отображённую там,
открыть меню UV и выбрать опцию Seams from Island.

Теперь границы UV-островов будут корректно отображаться как Seams.

Далее посмотрим, как можно разделить различные части геометрии на основе использованных субматериалов.
Модель, в том виде, в котором она сейчас находится, уже готова к рендерингу. Я, например, создал обложку, используя именно эту сцену в Blender: к модели, полученной на этом этапе, я добавил только Plane, который служит полом и задней стенкой, источники света и HDR-изображение для фона.

Однако в данный момент телескоп является одним объектом. Для этой модели, как и для многих других, может быть полезно разделить разные части и задать между ними родительские связи.
В случае с телескопом мы легко можем выделить штатив, вилку и корпус самого телескопа, так как телескоп должен иметь возможность вращаться как вокруг оси вилки, так и вокруг своей горизонтальной оси.
Чтобы отделить части геометрии от исходного объекта, можно использовать инструмент Separate. Он работает в режиме Edit Mode и вызывается клавишей P после выбора нужной геометрии.
Для объектов, состоящих из нескольких частей или частей, которые легко определить, можно действовать следующим образом:
переключиться в режим Edit Mode;
отменить выделение всей геометрии;
выбрать слот субматериала;
нажать кнопку Select;
нажать клавишу P и выбрать опцию Separate.

Затем нужно вернуться в режим Object Mode, снова выбрать исходный объект и повторить операцию для других субматериалов.
В меню Separate также доступна функция By Loose Parts, с помощью которой можно выбрать множество геометрий и создать отдельный объект из каждой из них, если они не соединены между собой. Однако в этом случае функция By Loose Parts создаст сотни новых объектов без необходимости, потому что у телескопа очень много отдельных мелких деталей!
Нас интересует разделение телескопа на три части, поэтому может возникнуть соблазн выполнить это вручную с помощью функции Separate, но и у этого метода есть множество недостатков в данном конкретном случае.
Существует несколько способов выделения частей объекта, но телескоп состоит из множества мелких деталей, и при ручном выборе есть риск что-то упустить.
С другой стороны, при использовании более широкого выделения, например, через Border Select или Circle Select, можно случайно выбрать лишние элементы.
Однако тот факт, что у телескопа девять субматериалов, подсказывает интересную идею. Мы можем поочерёдно выбрать геометрию, связанную с каждым субматериалом, и выполнить разделение с помощью функции Separate By Materials.
Этот метод создаст девять объектов, что больше, чем нам нужно, но затем мы сможем объединить нужные части с помощью оператора Join.
Поэтому поступим следующим образом:
После выбора телескопа переключаемся в режим Edit Mode;
Выделяем всю геометрию нажатием клавиши A;
Нажимаем клавишу P и выбираем опцию By Material.

В завершение мы можем объединить некоторые объекты, например, линзы Finder с его корпусом, а затем корпус Finder с основным корпусом телескопа.

Также можно объединить линзы телескопа, оптику и основной корпус телескопа в один объект.
Основание, установленное на штативе, обычно поворачивают один раз в зависимости от широты местоположения, но оно не должно вращаться во время наблюдения, поэтому его можно объединить со штативом.
Таким образом, мы получили три основных объекта, как и планировалось. Прежде чем двигаться дальше, желательно дать этим объектам осмысленные имена.

Теперь давайте посмотрим, как задать Origin и исправить повороты для всех разделённых частей.
Объекты были разделены, но их Origins и начальные ориентации заданы неправильно. Это особенно заметно, если попытаться повернуть центральный корпус телескопа или вилку.
Начнём со штатива, так как с ним всё проще, его Origin может совпадать с центром виртуальной вселенной, а ориентация может быть сброшена в ноль.
Выделяем все объекты и перемещаем их в плоскости XY так, чтобы центральная ось штатива совпадала с глобальной осью Z.
После этого выделяем только штатив, нажимаем CTRL A и выбираем опцию Location Rotation Scale в появившемся меню, чтобы поместить Origin штатива в центр виртуальной вселенной и сбросить информацию о Rotation и Scale.

Чтобы можно было правильно настроить вилку и телескоп, сначала нужно правильно задать Origin для вилки. Таким образом мы сможем выполнить повороты корректно.
Временно скрываем штатив клавишей H.
Выделяем вилку, переходим в режим Edit Mode и выбираем одно из рёбер у основания этого объекта.
Нажимаем сочетание клавиш SHIFT S и выбираем опцию Cursor to Selected.

Возвращаемся в Object Mode, кликаем правой кнопкой мыши по вилке и выбираем Set Origin to 3D Cursor.

Чтобы правильно задать ось вращения вилки, сначала нужно выровнять её, а затем сбросить значения Rotation.
С ортогонального бокового вида поворачиваем вилку, чтобы выровнять её.
В поле Rotation Y видно, что для этого потребовался поворот на 60 градусов.

Когда вилка выровнена, нажимаем CTRL A и выбираем опцию Rotation And Scale. Важно: в этот раз не выбираем Location, иначе Origin вилки переместится в центр виртуальной вселенной!
Чтобы вернуть вилку в исходное положение, достаточно повернуть её вокруг оси Y на 60 градусов.
Теперь локальная ось Z вилки задана правильно, и мы можем корректно вращать её вокруг этой оси.

Вращение телескопа должно происходить вокруг оси, проходящей через два штифта вилки, поэтому нам нужно будет поместить Origin телескопа в эту точку и, главное, убедиться, что хотя бы одна из трёх глобальных осей её пересекает, чтобы можно было применять трансформации вращения и задать хотя бы одну локальную ось правильно, как мы сделали в случае с вилкой.
Задать Origin просто: можно выделить два кольца на штифтах вилки, которые расположены симметрично, и переместить 3D-курсор между ними.
После этого выделяем телескоп и используем оператор Set Origin to 3D Cursor, тот же, что мы применяли в случае с вилкой.

Выровнять телескоп так, чтобы одна из глобальных осей, например ось Y, проходила через него правильно, задача не из простых, так как потребуется вращение по всем трём осям.
Однако есть решение: мы можем временно сделать телескоп потомком вилки, что позволит легко выровнять телескоп хотя бы в одном виде. Для этого сначала выделяем телескоп, затем вилку, именно в таком порядке.
Далее нажимаем сочетание клавиш CTRL P и выбираем опцию Set Parent to Object.

Поворачиваем вилку, чтобы выровнять как саму вилку, так и телескоп в ортогональном фронтальном виде.
Теперь поворачиваем только телескоп и стараемся выровнять его, вращая вокруг глобальной оси Y.
Прежде чем применять трансформации вращения к телескопу, необходимо сначала удалить иерархическую связь с вилкой.
Выделив только телескоп (уже выровненный), нажимаем ALT P и выбираем в появившемся меню опцию Clear Parent and Keep Transform.

После этого нажимаем сочетание клавиш CTRL A и выбираем опцию Rotation And Scale, только для телескопа.

Теперь давайте настроим иерархические связи между различными объектами.
Как можно убедиться, переключившись на локальные трансформации в окне 3D Viewport, теперь телескоп можно вращать вокруг его локальной оси Y, а вилку, вокруг её локальной оси Z.
Осталось только правильно связать три элемента, чтобы ими было удобно управлять, перемещать или вращать.
Сначала зададим родительскую связь между вилкой и штативом. Процедура всегда одна и та же: при множественном выделении сначала нужно выбрать дочерний объект, затем родительский и, наконец, нажать сочетание клавиш CTRL P для установки иерархической связи.

Затем связываем телескоп с вилкой, в этом случае последней должна быть выбрана вилка.
Иерархическая цепочка будет чётко отображаться в окне Outliner.

Теперь мы можем легко перемещать, вращать и масштабировать штатив в сцене, и все изменения будут корректно применяться и к другим объектам.
Кроме того, теперь мы можем правильно вращать вилку и телескоп вокруг их локальных осей, получая корректные результаты, как для изменения конфигурации телескопа, так и для создания анимаций.

Что ж, на этом всё! Надеюсь, этот урок был для вас полезным! До скорой встречи!