Подготовка и финализация .Blend файла

Подготовка и финализация .Blend файла

Материал был подготовлен для того, чтобы поделиться опытом и рассказать о том, как финализировать .blend проект и/или подготавливать его к передаче.

Материал будет полезен:

  1. Новичку, который только осваивает профессию и не хочет, чтобы его труд расценивался коллегами как очередная порция гемора.
  2. Специалисту, который хочет разобраться в том, как принимать работу и как ускорить процесс работы над контентом.
  3. Мастеру, если ему необходима универсальная инструкция, которой можно поделиться с не догоняющим коллегой.

Описание проблемы

Иногда нашим коллегам необходима работа с уже существующим контентом. Например, они могут иметь на руках готовую 3D-модель, которую нужно передать тем, кто сможет выполнить часть задачи, или закончить текущую, если исполнитель по какой-то причине исчез или не справляется.

И тут-то начинаются проблемы сразу с двух берегов...

С одной стороны стоит 3D-артист, который не может приступить к выполнению задачи из-за недостающих файлов или сбитых настроек в проекте, а с другой стороны стоит "заказчик", который своевременно не получает горящий результат.
Тут важно разобрать из-за чего такое может произойти и как не допустить подобных ошибок. Давайте же начнем по порядку!

1. Структура проекта

И первое, с чего стоит начать - с подготовки правильной структуры проекта.

Ведь если человек изначально собравший проект хотя бы приблизительно понимает где и что у него лежит и словно властвует над своим “хаосом”, то ново привлечённый артист понятия не имеет о том, что текстура может находиться в папке с названием "Новая папка (5)", и, вообще, в данный момент лежит она на рабочем столе исполнителя.

От правильной базовой структуры проекта зависит множество вещей, о которых мы поговорим далее, однако, сейчас давайте рассмотрим то, какой она должна быть на примере простого проекта со средневековыми люстрами, который мы разработали для нашего проекта Dark Seeker, подготовленного в программе Blender 3D.

Набор средневековых люстр для игры DarkSeeker
Набор средневековых люстр для игры DarkSeeker

При создании .blend файла важно воспринимать его как основную точку входа в проект, так как один .blend может содержать в себе ссылки на другие .blend файлы, не говоря уже о дополнительных материалах вроде скриптов, текстур, кистей и всякого разного, что может являться его составными частями.

Так как Blender сделан с умом, по умолчанию в проектах, которые создаются в нем, используются относительные пути, и, чтобы этот "сахар" работал исправно, дочерние файлы должны находиться в той же папке, что и точка входа в проект (.blend), либо ниже ее.

Например:

Тут вы можете видеть правильную структуру проекта. (Папка Source содержит в себе исходники в данном случае - .spp файлы текстур, она никак не связана с точкой входа и размещена тут для личного удобства)
Тут вы можете видеть правильную структуру проекта. (Папка Source содержит в себе исходники в данном случае - .spp файлы текстур, она никак не связана с точкой входа и размещена тут для личного удобства)

В таком случае вы можете без особых проблем заархивировать папку /MyProject и поделиться ей с коллегой, которому для комфортной работы не останется ничего, кроме как разархивировать ее в удобную директорию, прочитать инструкцию по работе, если она необходима, и запустить .blend (точку входа).

Даже когда мы перенесли проект в новую директорию (NewDirectory), проект открылся совершенно без потерь. Все благодаря тому, что ресурсы, необходимые для корректной работы проекта, указаны относительно точки входа.
Даже когда мы перенесли проект в новую директорию (NewDirectory), проект открылся совершенно без потерь. Все благодаря тому, что ресурсы, необходимые для корректной работы проекта, указаны относительно точки входа.

А вот, что случится при переносе .blend файла в другую директорию, если по какой-либо причине пути будут указаны неправильно. Для этого достаточно переместить текстуры выше точки входа, например, на Рабочий стол компьютера.

Опа, вот и текстуры пропали/
Опа, вот и текстуры пропали/

Так как пути к текстурам теперь указаны абсолютные (ведь они находятся вне точки входа) при открытии .blend, мы обнаружим, что текстуры на объектах у нас отсутствуют. Теперь придется их искать и/или восстанавливать. В зависимости от конкретного случая, "это", способно превратиться в длительный процесс, который может оказаться даже длиннее, чем выполнение самой задачи.

Чтобы не сломать утвержденную версию, следует создать копию и работать с ней. Тогда, если каким-либо образом 3D-артист сломает контент или изменит его не в лучшую сторону, вы сможете откатиться назад.

Подробнее про относительные и абсолютные пути

Абсолютный, или же полный, или же глобальный путь — это когда мы указываем все диски и папки от корневого, в которые нужно зайти, чтобы добраться до нужного файла.

Так как мы работаем на windows, мы будем рассказывать на примере этой операционной системы.

В Windows все начинается с корневого диска, самый стандартный диск - это диск C:\, но это может быть и любая другая буква. Если на диске C:\ создать папку BlenderModels внутри папку assets, а в ней создать папку Box, и там создать Box.blend, то абсолютный путь будет выглядеть так:

C:\BlenderModels\assets\Box\Box.blend

Подготовка и финализация .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.

Pack Resources
Pack Resources

Для того чтобы получить ресурсы из файла, 3D артисту необходимо распаковать их. Blender автоматически создаст необходимые папки и поместит в них контент.

Делается это в этом же меню нажатием на кнопку Unpack Resources.

Unpack Resources
Unpack Resources

В большинстве случаев с таким файлом будет не так удобно работать, как с правильно собранным архивом, да и процесс наполнения "чистого" архива происходит естественно в ходе работы над проектом.

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

В таких случаях не имеет значения то, как устроен сам .blend-проект и вполне разумно пренебречь структурой проекта ради скорости выполнения работ.

Но все не так однозначно.

Если с каким-либо ресурсом (текстурой, скриптом, декалью и т.д и т.п.) планируется вестись работа в будущем, то для того, чтобы достать его придется снова скачивать этот .blend файл и распаковывать его ресурсы.

При выгруженном архиве с грамотной структурой необходимый ресурс можно найти через поиск по названию. Это удобнее, чем может показаться, особенно на больших объёмах. В случае же упаковки ресурсов в .blend вам остается доступным лишь сам .blend файл.

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

3. Нейминг и Коллекции

Работая с большими проектами, возникает потребность в порядке. Чтобы организовать рабочее пространство, необходимо не забывать правильно использовать привязки и распределять контент по коллекциям.

Подготовка и финализация .Blend файла

Если объекты зависят друг от друга и перемещаются вместе, привяжите их к Plain Axes, чтобы 3D-артисту не приходилось по нескольку раз выделять один объект за другим, чтобы сдвинуть сложный элемент на пару пикселей.

В случаях когда в проекте насчитывается более сотни мешей с разными именами, позаботьтесь о том, чтобы у групп мешей был понятный нейминг. Это поможет найти нужный меш быстро, например, если он скрыт, но внезапно потребовался.

Каждая компания использует собственные стандарты неймингов, но в большинстве случаев они заимствуют стандарты у лидера индустрии - Epic Games, как, впрочем, и наша студия, поэтому осмелимся оставить тут несколько рекомендаций:

  1. Все имена файлов должны быть написаны на английском языке.
  2. В названии необходимы префиксы и удобные для поиска нейминги.

Приведем пример:

(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 файле. Не важно, будь то кисти или лишние экземпляры материалов, если что-то не используются в сцене, то не нужно это хранить.

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

Тем более, что чистка лишних данных потребует от вас всего пары кликов:

  1. Выбираем в аутлайнере Orphan Data и видим теперь все данные, которые были удалены из сцены и больше не используются.
  2. Жмем кнопку Purge и подтверждаем чистку.
  3. Радуемся тому, что наш проект стал легче и теперь работает шустрее.

Не менее важным процессом, о котором многие забывают, является применение трансформаций. Не стоит скидывать проект, в котором трансформации забыли обнулить, т.к внешний или новенький 3D-артист может не заметить этого вовремя и начать работу с вашим контентом.

Будет крайне неприятно получить результат, который внезапно будет работать не так, как это предполагалось вами, и, что самое грустное, встречаются ситуации, в которых исправление проблем, связанных с не обнуленными трансформациями, может занять довольно много времени.

Кстати, применение всех трансформаций также как и удаление лишних блоков данных выполняется всего в 3 клика:

  1. Выделяем все нажатием клавиши A.
  2. Жмем CTRL+A, чтобы перейти в меню Apply.
  3. Выбираем в списке All Transform to Deltas.
Подготовка и финализация .Blend файла

Теперь все важные трансформации обнулены, и модель не только можно переносить в другой софт, но и работать с ней дальше.

5. Создание резервной копии

Не всегда проект передается в работу на аутсорс. Довольно часто доработка проекта осуществляется внутри офиса и даже в пределах одного устройства, однако, в любом случае важно помнить, что однажды испорченный файл вполне можно потерять навсегда, а ряд изменений отменить крайне трудно.

Для подстраховки от этого вам необходимо иметь актуальную резервную копию проекта и передавать в работу исключительно ее копию. Так вы застрахуете себя от незапланированных проблем и всегда сможете откатиться на шаг назад, если по каким-то причинам 3D-артист что-то сломал (такое бывает чаще, чем может показаться, ведь иногда .blend файл может сломаться без возможности восстановления).

И еще раз отметим, что важно иметь именно резервную копию проекта, а не запись бэкапа внутри рабочего файла. .blend файл может повредиться настолько сильно, что даже его бэкапы вы восстановить уже не сможете и единственный способ уберечь себя от переделки контента с нуля - иметь актуальную резервную копию в своем архиве.

6. В заключении

Благодарим за то, что дочитали наш материал до конца. Мы считаем, что соблюдение простых инструкций, описанных выше, должны восприниматься как "правила хорошего тона" среди 3D-артистов, использующих Blender.

Будем рады, если вы расскажите историю о том, как вам в работу поступил неподготовленный материал, и чем пришлось пожертвовать, чтобы закрыть такой проект.

Пишите, если мы о чем-то забыли. Мы читаем каждый комментарий, и если вспомнится что-то действительно важное, в моменте отредактируем материал. Так он станет еще полезнее.

Ссылки:

13
17 комментариев