Подготовка и финализация .Blend файла
Материал был подготовлен для того, чтобы поделиться опытом и рассказать о том, как финализировать .blend проект и/или подготавливать его к передаче.
Материал будет полезен:
- Новичку, который только осваивает профессию и не хочет, чтобы его труд расценивался коллегами как очередная порция гемора.
- Специалисту, который хочет разобраться в том, как принимать работу и как ускорить процесс работы над контентом.
- Мастеру, если ему необходима универсальная инструкция, которой можно поделиться с не догоняющим коллегой.
Описание проблемы
Иногда нашим коллегам необходима работа с уже существующим контентом. Например, они могут иметь на руках готовую 3D-модель, которую нужно передать тем, кто сможет выполнить часть задачи, или закончить текущую, если исполнитель по какой-то причине исчез или не справляется.
ㅤ
И тут-то начинаются проблемы сразу с двух берегов...
С одной стороны стоит 3D-артист, который не может приступить к выполнению задачи из-за недостающих файлов или сбитых настроек в проекте, а с другой стороны стоит "заказчик", который своевременно не получает горящий результат.
Тут важно разобрать из-за чего такое может произойти и как не допустить подобных ошибок. Давайте же начнем по порядку!
1. Структура проекта
И первое, с чего стоит начать - с подготовки правильной структуры проекта.
Ведь если человек изначально собравший проект хотя бы приблизительно понимает где и что у него лежит и словно властвует над своим “хаосом”, то ново привлечённый артист понятия не имеет о том, что текстура может находиться в папке с названием "Новая папка (5)", и, вообще, в данный момент лежит она на рабочем столе исполнителя.
От правильной базовой структуры проекта зависит множество вещей, о которых мы поговорим далее, однако, сейчас давайте рассмотрим то, какой она должна быть на примере простого проекта со средневековыми люстрами, который мы разработали для нашего проекта Dark Seeker, подготовленного в программе Blender 3D.
При создании .blend файла важно воспринимать его как основную точку входа в проект, так как один .blend может содержать в себе ссылки на другие .blend файлы, не говоря уже о дополнительных материалах вроде скриптов, текстур, кистей и всякого разного, что может являться его составными частями.
Так как Blender сделан с умом, по умолчанию в проектах, которые создаются в нем, используются относительные пути, и, чтобы этот "сахар" работал исправно, дочерние файлы должны находиться в той же папке, что и точка входа в проект (.blend), либо ниже ее.
Например:
В таком случае вы можете без особых проблем заархивировать папку /MyProject и поделиться ей с коллегой, которому для комфортной работы не останется ничего, кроме как разархивировать ее в удобную директорию, прочитать инструкцию по работе, если она необходима, и запустить .blend (точку входа).
А вот, что случится при переносе .blend файла в другую директорию, если по какой-либо причине пути будут указаны неправильно. Для этого достаточно переместить текстуры выше точки входа, например, на Рабочий стол компьютера.
Так как пути к текстурам теперь указаны абсолютные (ведь они находятся вне точки входа) при открытии .blend, мы обнаружим, что текстуры на объектах у нас отсутствуют. Теперь придется их искать и/или восстанавливать. В зависимости от конкретного случая, "это", способно превратиться в длительный процесс, который может оказаться даже длиннее, чем выполнение самой задачи.
Чтобы не сломать утвержденную версию, следует создать копию и работать с ней. Тогда, если каким-либо образом 3D-артист сломает контент или изменит его не в лучшую сторону, вы сможете откатиться назад.
Подробнее про относительные и абсолютные пути
Абсолютный, или же полный, или же глобальный путь — это когда мы указываем все диски и папки от корневого, в которые нужно зайти, чтобы добраться до нужного файла.
Так как мы работаем на windows, мы будем рассказывать на примере этой операционной системы.
В Windows все начинается с корневого диска, самый стандартный диск - это диск C:\, но это может быть и любая другая буква. Если на диске C:\ создать папку BlenderModels внутри папку assets, а в ней создать папку Box, и там создать Box.blend, то абсолютный путь будет выглядеть так:
C:\BlenderModels\assets\Box\Box.blend
Представим, что мы скачали текстуру для Box.blend и поместили ее в свою папку downloads. Открыли в проект, создали там материал и натянули его на этот box, теперь нам нужно отправить коллеге этот файл.
Конечно же открыв Box.blend, он не увидит этой текстуры, так как текстура находится где-то у вас в downloads.
Вроде, ничего сложного просто ее отправить, это, вроде, одно лишнее действие?
Вроде, да.
А теперь представим, что моделей таких штук 20 и в каждой по 10-50 текстур?
Относительный, или же неполный, или же локальный путь — это путь к файлу относительно текущего каталога. Текущий каталог — это тот, в котором запускается проект.
При работе с проектом ваша задача - хранить все файлы внутри этого каталога.
Относительный, или же локальный путь — это путь к файлу относительно текущего каталога. Текущий каталог — это тот, в котором запускается проект.
В итоге абсолютный путь к нему будет выглядеть так:
C:\BlenderModels\assets\Box\Textures\T_Box_BC.png
А относительный так:
\Textures\T_Box_BC.png
Видите, как стало проще и понятнее для всех?
2. Лайфхак с упаковкой ресурсов в .blend
Если все вышеперечисленное для вас окажется сложным, долгим и уже не своевременным, то есть еще один способ. Он не так удобен как архив с грамотной структурой, но по-прежнему остается лучшим решением, нежели проект с глобальными путями.
Дело в том, что в Blender есть возможность запаковать все ресурсы в файл. Делается это выбором соответствующего пункта в контекстном меню: File - External Data - Pack Resources.
Для того чтобы получить ресурсы из файла, 3D артисту необходимо распаковать их. Blender автоматически создаст необходимые папки и поместит в них контент.
Делается это в этом же меню нажатием на кнопку Unpack Resources.
В большинстве случаев с таким файлом будет не так удобно работать, как с правильно собранным архивом, да и процесс наполнения "чистого" архива происходит естественно в ходе работы над проектом.
Такой способ отлично подойдет дизайнерам коммерческих иллюстраций, так как результатом итоговой работы для них является рендер.
В таких случаях не имеет значения то, как устроен сам .blend-проект и вполне разумно пренебречь структурой проекта ради скорости выполнения работ.
Но все не так однозначно.
Если с каким-либо ресурсом (текстурой, скриптом, декалью и т.д и т.п.) планируется вестись работа в будущем, то для того, чтобы достать его придется снова скачивать этот .blend файл и распаковывать его ресурсы.
При выгруженном архиве с грамотной структурой необходимый ресурс можно найти через поиск по названию. Это удобнее, чем может показаться, особенно на больших объёмах. В случае же упаковки ресурсов в .blend вам остается доступным лишь сам .blend файл.
А для того, чтобы учесть эту фишку и использовать на максимум, предлагаем к вашему вниманию следующий важный раздел этого материала.
3. Нейминг и Коллекции
Работая с большими проектами, возникает потребность в порядке. Чтобы организовать рабочее пространство, необходимо не забывать правильно использовать привязки и распределять контент по коллекциям.
Если объекты зависят друг от друга и перемещаются вместе, привяжите их к Plain Axes, чтобы 3D-артисту не приходилось по нескольку раз выделять один объект за другим, чтобы сдвинуть сложный элемент на пару пикселей.
В случаях когда в проекте насчитывается более сотни мешей с разными именами, позаботьтесь о том, чтобы у групп мешей был понятный нейминг. Это поможет найти нужный меш быстро, например, если он скрыт, но внезапно потребовался.
Каждая компания использует собственные стандарты неймингов, но в большинстве случаев они заимствуют стандарты у лидера индустрии - Epic Games, как, впрочем, и наша студия, поэтому осмелимся оставить тут несколько рекомендаций:
- Все имена файлов должны быть написаны на английском языке.
- В названии необходимы префиксы и удобные для поиска нейминги.
Приведем пример:
(Prefix_)Asset_AssetName(_Number)(_Suffix)
Prefix - это тип файла. Например, SM - это Static Mesh, M - Material, а T - Textures.
Asset - название раздела файла, то есть название группы объектов. К примеру, если у вас есть 10 средневековых факелов разной паршивости и "красивости", то группа может быть названа MedievalTorch.
AssetName - это название непосредственно самого объекта. И если под группой мы подразумеваем целый набор, то тут целесообразно дать конкретные названия для, например, "деревянных факелов" и "железных": WoodTorch / MetallTorch
Number - нумерация, если есть необходимость.
_Suffix - суффикс определяющий подтип текстуры, если есть. Для BaseColor это будет BC, для Normal Map это будет NM, ну и далее по списку.
Подробнее о стандарте нейминга, который мы используем, вы можете ознакомиться у самих эпиков (ЖМЯК), ну, а мы идем дальше.
4. Чистка и применение трансформаций
Прежде чем передать свой файл в работу, не забудьте избавиться от лишних блоков данных, которые остались в нем. Такие данные постоянно создаются в процессе работы и хранятся в .blend файле. Не важно, будь то кисти или лишние экземпляры материалов, если что-то не используются в сцене, то не нужно это хранить.
Когда дело касается больших проектов, не забывайте об этом, т.к. каждый лишний мегабайт данных будет влиять на скорость отклика программы, а, значит, и на конечные сроки сдачи работ.
Тем более, что чистка лишних данных потребует от вас всего пары кликов:
- Выбираем в аутлайнере Orphan Data и видим теперь все данные, которые были удалены из сцены и больше не используются.
- Жмем кнопку Purge и подтверждаем чистку.
- Радуемся тому, что наш проект стал легче и теперь работает шустрее.
Не менее важным процессом, о котором многие забывают, является применение трансформаций. Не стоит скидывать проект, в котором трансформации забыли обнулить, т.к внешний или новенький 3D-артист может не заметить этого вовремя и начать работу с вашим контентом.
Будет крайне неприятно получить результат, который внезапно будет работать не так, как это предполагалось вами, и, что самое грустное, встречаются ситуации, в которых исправление проблем, связанных с не обнуленными трансформациями, может занять довольно много времени.
Кстати, применение всех трансформаций также как и удаление лишних блоков данных выполняется всего в 3 клика:
- Выделяем все нажатием клавиши A.
- Жмем CTRL+A, чтобы перейти в меню Apply.
- Выбираем в списке All Transform to Deltas.
Теперь все важные трансформации обнулены, и модель не только можно переносить в другой софт, но и работать с ней дальше.
5. Создание резервной копии
Не всегда проект передается в работу на аутсорс. Довольно часто доработка проекта осуществляется внутри офиса и даже в пределах одного устройства, однако, в любом случае важно помнить, что однажды испорченный файл вполне можно потерять навсегда, а ряд изменений отменить крайне трудно.
Для подстраховки от этого вам необходимо иметь актуальную резервную копию проекта и передавать в работу исключительно ее копию. Так вы застрахуете себя от незапланированных проблем и всегда сможете откатиться на шаг назад, если по каким-то причинам 3D-артист что-то сломал (такое бывает чаще, чем может показаться, ведь иногда .blend файл может сломаться без возможности восстановления).
И еще раз отметим, что важно иметь именно резервную копию проекта, а не запись бэкапа внутри рабочего файла. .blend файл может повредиться настолько сильно, что даже его бэкапы вы восстановить уже не сможете и единственный способ уберечь себя от переделки контента с нуля - иметь актуальную резервную копию в своем архиве.
6. В заключении
Благодарим за то, что дочитали наш материал до конца. Мы считаем, что соблюдение простых инструкций, описанных выше, должны восприниматься как "правила хорошего тона" среди 3D-артистов, использующих Blender.
Будем рады, если вы расскажите историю о том, как вам в работу поступил неподготовленный материал, и чем пришлось пожертвовать, чтобы закрыть такой проект.
Пишите, если мы о чем-то забыли. Мы читаем каждый комментарий, и если вспомнится что-то действительно важное, в моменте отредактируем материал. Так он станет еще полезнее.
Ссылки:
Telegram: t.me/antonksavie_blog
VK: vk.com/antonksavie_blog
Youtube: youtube.com/@antonksavie
DTF: dtf.ru/u/1628455-anton-ksavie