HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>6 фев 2025</li>
2 <ul><li>6 фев 2025</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Доклад Маттиаса Патшайдера, художника по окружению в Remedy Entertainment.</p>
4 </ul><p>Доклад Маттиаса Патшайдера, художника по окружению в Remedy Entertainment.</p>
5 <p>Иллюстрация: Оля Ежак для SKillbox Media</p>
5 <p>Иллюстрация: Оля Ежак для SKillbox Media</p>
6 <p>Считает игры произведениями искусства и старается донести эту идею до широких масс. В свободное время стримит, рисует и часами зависает в фоторежимах.</p>
6 <p>Считает игры произведениями искусства и старается донести эту идею до широких масс. В свободное время стримит, рисует и часами зависает в фоторежимах.</p>
7 <p>Арт-отделы многих крупных игровых студий не используют Blender при создании контента, так как у них зачастую уже есть ряд определённых программ, включённых в пайплайн. Если же начать интегрировать в этот процесс дополнительный софт, могут возникнуть самые разные сложности, и в результате разработка замедлится.</p>
7 <p>Арт-отделы многих крупных игровых студий не используют Blender при создании контента, так как у них зачастую уже есть ряд определённых программ, включённых в пайплайн. Если же начать интегрировать в этот процесс дополнительный софт, могут возникнуть самые разные сложности, и в результате разработка замедлится.</p>
8 <p>А что, если 3D-художник отлично работает в Blender и способен создавать контент в этой программе, не нарушая динамику общего рабочего процесса студии?</p>
8 <p>А что, если 3D-художник отлично работает в Blender и способен создавать контент в этой программе, не нарушая динамику общего рабочего процесса студии?</p>
9 <p>На Blender Conference 2024 художник по окружению в Remedy Entertainment Маттиас Патшайдер поделился своим опытом работы в Blender в рамках пайплайна, не предполагающего использование этой программы. Также он дал рекомендации, как при таких условиях взаимодействовать с командой, не усложняя общий процесс разработки. Делимся тезисами специалиста.</p>
9 <p>На Blender Conference 2024 художник по окружению в Remedy Entertainment Маттиас Патшайдер поделился своим опытом работы в Blender в рамках пайплайна, не предполагающего использование этой программы. Также он дал рекомендации, как при таких условиях взаимодействовать с командой, не усложняя общий процесс разработки. Делимся тезисами специалиста.</p>
10 <p>Подписывайтесь на наш<a>телеграм-канал "Чекпоинт"</a>. Это уютное место, в котором мы рассказываем об играх и о том, как они создаются, а также делимся полезными советами разработчиков и пишем о важных обновлениях популярного софта. Комментарии открыты: вы можете предложить идею для нового текста или просто обсудить всё, что связано с геймдевом.</p>
10 <p>Подписывайтесь на наш<a>телеграм-канал "Чекпоинт"</a>. Это уютное место, в котором мы рассказываем об играх и о том, как они создаются, а также делимся полезными советами разработчиков и пишем о важных обновлениях популярного софта. Комментарии открыты: вы можете предложить идею для нового текста или просто обсудить всё, что связано с геймдевом.</p>
11 Полная версия доклада Маттиаса Патшайдера на Blender Conference 2024<p>Начал<a>карьеру 3D-художника</a>в немецкой студии King Art Games, где он создавал окружение для приключенческого хоррора<a>Black Mirror</a>. В тот период художник старался работать преимущественно в Maya, так как эта программа входила в пайплайн студии. В ней он делал первые блокауты, а затем начал создавать и объекты.</p>
11 Полная версия доклада Маттиаса Патшайдера на Blender Conference 2024<p>Начал<a>карьеру 3D-художника</a>в немецкой студии King Art Games, где он создавал окружение для приключенческого хоррора<a>Black Mirror</a>. В тот период художник старался работать преимущественно в Maya, так как эта программа входила в пайплайн студии. В ней он делал первые блокауты, а затем начал создавать и объекты.</p>
12 <p>Вскоре он получил задание сделать модульный набор ассетов для одной из главных локаций. На тот момент Маттиас не знал, как выполнить такую работу в рамках Maya, но знал, как сделать это в Blender. К тому же работать в последней программе художнику было намного комфортнее. Маттиас убедил коллег дать ему шанс закончить проект в Blender, пообещав, что в случае неудачи он продолжит работать в Maya.</p>
12 <p>Вскоре он получил задание сделать модульный набор ассетов для одной из главных локаций. На тот момент Маттиас не знал, как выполнить такую работу в рамках Maya, но знал, как сделать это в Blender. К тому же работать в последней программе художнику было намного комфортнее. Маттиас убедил коллег дать ему шанс закончить проект в Blender, пообещав, что в случае неудачи он продолжит работать в Maya.</p>
13 <p>Впрочем, неудачи не случилось, и задачу удалось выполнить. Художник стал регулярно создавать контент в Blender для различных проектов, даже если их пайплайн не предполагал использование этой программы. Помимо работы над Black Mirror, Маттиас применял такой подход для создания ассетов для фриланс-проектов, в том числе визуализаций для промышленных предприятий, и для игр InnerSpace, Crossfire, а также Alan Wake 2 и дополнений Night Springs и The Lake House для неё.</p>
13 <p>Впрочем, неудачи не случилось, и задачу удалось выполнить. Художник стал регулярно создавать контент в Blender для различных проектов, даже если их пайплайн не предполагал использование этой программы. Помимо работы над Black Mirror, Маттиас применял такой подход для создания ассетов для фриланс-проектов, в том числе визуализаций для промышленных предприятий, и для игр InnerSpace, Crossfire, а также Alan Wake 2 и дополнений Night Springs и The Lake House для неё.</p>
14 <p>Также Маттиас занимается разработкой вспомогательных инструментов для Blender. В настоящий момент он работает над серией утилит<a>Simple Tools</a>, призванных упростить процесс создания игрового арта.</p>
14 <p>Также Маттиас занимается разработкой вспомогательных инструментов для Blender. В настоящий момент он работает над серией утилит<a>Simple Tools</a>, призванных упростить процесс создания игрового арта.</p>
15 <p>Прежде чем перейти к вопросу использования Blender в работе с игровым контентом, необходимо разобраться, что такое игровой арт и в чём заключается специфика его создания в рамках видеоигр. Главное отличие игрового арта от других типов контента, в том числе анимаций, кроется в том, что перед переносом результата в игровой движок все процессы по созданию арта проходят цепочку различных конвертаций.</p>
15 <p>Прежде чем перейти к вопросу использования Blender в работе с игровым контентом, необходимо разобраться, что такое игровой арт и в чём заключается специфика его создания в рамках видеоигр. Главное отличие игрового арта от других типов контента, в том числе анимаций, кроется в том, что перед переносом результата в игровой движок все процессы по созданию арта проходят цепочку различных конвертаций.</p>
16 <p>Эти действия входят в пайплайн - структурированный процесс стандартизированных действий. Благодаря пайплайну совместная работа и продуктивность команды возрастает: сложность выполнения задач снижается, повторные операции автоматизируются, появляется согласованность между всеми участниками процесса.</p>
16 <p>Эти действия входят в пайплайн - структурированный процесс стандартизированных действий. Благодаря пайплайну совместная работа и продуктивность команды возрастает: сложность выполнения задач снижается, повторные операции автоматизируются, появляется согласованность между всеми участниками процесса.</p>
17 <p>Пайплайн помогает сделать рабочий процесс комфортнее. Это не значит, что у художника в таком случае есть инструмент, из которого можно сразу перенести работу в движок. Это значит, что его контент проходит ряд стандартизированных операций, которые позволят перейти с этапа A на этап B.</p>
17 <p>Пайплайн помогает сделать рабочий процесс комфортнее. Это не значит, что у художника в таком случае есть инструмент, из которого можно сразу перенести работу в движок. Это значит, что его контент проходит ряд стандартизированных операций, которые позволят перейти с этапа A на этап B.</p>
18 <p>Перед тем как импортировать контент в игровой движок, над ним работают в особых программах - это может быть Maya, серия приложений Substance 3D, Marmoset Toolbag и другие. И хотя у каждой компании существует свой подход к созданию цифрового контента, Blender в списке подобных программ встречается крайне редко - в основном его используют небольшие инди-студии.</p>
18 <p>Перед тем как импортировать контент в игровой движок, над ним работают в особых программах - это может быть Maya, серия приложений Substance 3D, Marmoset Toolbag и другие. И хотя у каждой компании существует свой подход к созданию цифрового контента, Blender в списке подобных программ встречается крайне редко - в основном его используют небольшие инди-студии.</p>
19 <p>И если художник выбирает в качестве основного инструмента программу, которая не вписывается в пайплайн компании, где он работает, ему предстоит столкнуться со множеством технических нюансов и потенциальных сложностей.</p>
19 <p>И если художник выбирает в качестве основного инструмента программу, которая не вписывается в пайплайн компании, где он работает, ему предстоит столкнуться со множеством технических нюансов и потенциальных сложностей.</p>
20 <p>В своём докладе Маттиас выделил три ключевых момента, возникающих при работе с Blender вне общего пайплайна:</p>
20 <p>В своём докладе Маттиас выделил три ключевых момента, возникающих при работе с Blender вне общего пайплайна:</p>
21 <ul><li><strong><a>Совместная работа</a>.</strong>Чтобы всем участникам процесса было комфортно работать друг с другом, должна быть возможность быстро импортировать ассеты, созданные в Blender, в программы общего пайплайна - и так же просто экспортировать их обратно в Blender для изменений.</li>
21 <ul><li><strong><a>Совместная работа</a>.</strong>Чтобы всем участникам процесса было комфортно работать друг с другом, должна быть возможность быстро импортировать ассеты, созданные в Blender, в программы общего пайплайна - и так же просто экспортировать их обратно в Blender для изменений.</li>
22 <li><strong><a>Совместимость</a>.</strong>Необходимо чётко понимать специфику переноса данных - и быть уверенным, что ассеты без ошибок можно перемещать из одного софта в другой.</li>
22 <li><strong><a>Совместимость</a>.</strong>Необходимо чётко понимать специфику переноса данных - и быть уверенным, что ассеты без ошибок можно перемещать из одного софта в другой.</li>
23 <li><strong><a>Высокое качество</a>.</strong>Важно соответствовать общему уровню: это касается не только визуальной привлекательности ассета, но и его соответствия техническим требованиям.</li>
23 <li><strong><a>Высокое качество</a>.</strong>Важно соответствовать общему уровню: это касается не только визуальной привлекательности ассета, но и его соответствия техническим требованиям.</li>
24 </ul><p>Далее мы рассмотрим каждый из этих пунктов в подробностях.</p>
24 </ul><p>Далее мы рассмотрим каждый из этих пунктов в подробностях.</p>
25 <p>Работая в коллективе, где Blender не включена в общий пайплайн, важно помнить о характеристиках, которыми должен обладать ассет, созданный в чужеродной программе.</p>
25 <p>Работая в коллективе, где Blender не включена в общий пайплайн, важно помнить о характеристиках, которыми должен обладать ассет, созданный в чужеродной программе.</p>
26 Личный проект Маттиаса - The Verdant Realms. В примерах, разобранных ниже, задействованы деревья из этой работы<em>Изображение:<a>Matthias Patscheider</a>/ ArtStation</em><p><strong>Доступность.</strong>Работая в команде, необходимо убедиться, что у каждого участника проекта есть доступ к файлу, одинаковые версии приложений и возможность делиться данными в GitHub, Perforce или других аналогичных репозиториях. Если компания всё же использует Blender вне общего пайплайна, у неё могут быть дополнительные инструменты для быстрой проверки и утверждения ассетов.</p>
26 Личный проект Маттиаса - The Verdant Realms. В примерах, разобранных ниже, задействованы деревья из этой работы<em>Изображение:<a>Matthias Patscheider</a>/ ArtStation</em><p><strong>Доступность.</strong>Работая в команде, необходимо убедиться, что у каждого участника проекта есть доступ к файлу, одинаковые версии приложений и возможность делиться данными в GitHub, Perforce или других аналогичных репозиториях. Если компания всё же использует Blender вне общего пайплайна, у неё могут быть дополнительные инструменты для быстрой проверки и утверждения ассетов.</p>
27 <p><strong>Удобство в применении.</strong>Созданный в Blender контент должен считываться без ошибок и свободно интегрироваться в программы. В качестве примера можно привести интуитивное размещение ассетов из <strong>Каталога ресурсов</strong>(Asset Browser) в сцену Unreal Engine 5 методом перетаскивания.</p>
27 <p><strong>Удобство в применении.</strong>Созданный в Blender контент должен считываться без ошибок и свободно интегрироваться в программы. В качестве примера можно привести интуитивное размещение ассетов из <strong>Каталога ресурсов</strong>(Asset Browser) в сцену Unreal Engine 5 методом перетаскивания.</p>
28 <em>Кадр:<a>Blender</a>/ YouTube</em><p><strong>Редактирование.</strong>Не менее важно убедиться, что любой участник проекта сможет внести изменения в созданный ассет.</p>
28 <em>Кадр:<a>Blender</a>/ YouTube</em><p><strong>Редактирование.</strong>Не менее важно убедиться, что любой участник проекта сможет внести изменения в созданный ассет.</p>
29 <p>Один из самых важных аспектов пайплайна заключается в том, что в нём существует определённая классификация данных. В своём докладе Маттиас выделяет:</p>
29 <p>Один из самых важных аспектов пайплайна заключается в том, что в нём существует определённая классификация данных. В своём докладе Маттиас выделяет:</p>
30 <ul><li><strong>Рабочие данные</strong>(Work Data), то есть файл, где художник создаёт ассет. В данном случае это файл с расширением<strong>.blend</strong>.</li>
30 <ul><li><strong>Рабочие данные</strong>(Work Data), то есть файл, где художник создаёт ассет. В данном случае это файл с расширением<strong>.blend</strong>.</li>
31 <li><strong>Исходные данные</strong>(Source Data) - готовый контент, экспортированный в универсальный формат<strong>FBX</strong>или другой формат, обусловленный стандартами производства. В файле оставляют только самые важные элементы.</li>
31 <li><strong>Исходные данные</strong>(Source Data) - готовый контент, экспортированный в универсальный формат<strong>FBX</strong>или другой формат, обусловленный стандартами производства. В файле оставляют только самые важные элементы.</li>
32 </ul><em>Кадр:<a>Blender</a>/ YouTube</em><p>Приведём пример. Дизайнеру уровня или художнику по освещению нужен не <strong>BLEND</strong>-файл, а готовый файл с расширением<strong>.fbx</strong>, так как эти специалисты работают непосредственно в движке.</p>
32 </ul><em>Кадр:<a>Blender</a>/ YouTube</em><p>Приведём пример. Дизайнеру уровня или художнику по освещению нужен не <strong>BLEND</strong>-файл, а готовый файл с расширением<strong>.fbx</strong>, так как эти специалисты работают непосредственно в движке.</p>
33 <p><strong>Примечание</strong></p>
33 <p><strong>Примечание</strong></p>
34 <p>В русском языке термины<strong>"рабочий файл"</strong>и <strong>"исходный файл"</strong>имеют прямо противоположные значения ("исходный" - это первоначальный, оригинальный, а "рабочий" - это тот, который получился в результате изменений). И пусть терминология может различаться, принцип классификации данных не меняется. Поэтому во избежание путаницы в этом материале контент в рамках конкретной программы мы обозначим как<strong>исходный файл</strong>или<strong>исходник</strong>(то, что выше называется Work Data), а универсальный контент для экспорта -<strong>рабочий файл</strong>(то, что выше указано как Source Data).</p>
34 <p>В русском языке термины<strong>"рабочий файл"</strong>и <strong>"исходный файл"</strong>имеют прямо противоположные значения ("исходный" - это первоначальный, оригинальный, а "рабочий" - это тот, который получился в результате изменений). И пусть терминология может различаться, принцип классификации данных не меняется. Поэтому во избежание путаницы в этом материале контент в рамках конкретной программы мы обозначим как<strong>исходный файл</strong>или<strong>исходник</strong>(то, что выше называется Work Data), а универсальный контент для экспорта -<strong>рабочий файл</strong>(то, что выше указано как Source Data).</p>
35 <p>На схеме ниже можно увидеть стандартную конвертацию данных на протяжении всего пайплайна. Исходники (модели и текстуры) конвертируются в промежуточный формат, который может распознать игровой движок. И уже потом сам игровой движок сохраняет их в проекте, используя собственные расширения файлов.</p>
35 <p>На схеме ниже можно увидеть стандартную конвертацию данных на протяжении всего пайплайна. Исходники (модели и текстуры) конвертируются в промежуточный формат, который может распознать игровой движок. И уже потом сам игровой движок сохраняет их в проекте, используя собственные расширения файлов.</p>
36 <em>Кадр:<a>Blender</a>/ YouTube</em><p>У специалиста, работающего в Blender, есть несколько вариантов действий.</p>
36 <em>Кадр:<a>Blender</a>/ YouTube</em><p>У специалиста, работающего в Blender, есть несколько вариантов действий.</p>
37 <ul><li><strong>Экспорт данных из BLEND-файла напрямую в движок.</strong></li>
37 <ul><li><strong>Экспорт данных из BLEND-файла напрямую в движок.</strong></li>
38 </ul><p>Самый простой способ, так как в этом случае не придётся взаимодействовать с другим ПО. Нужно только экспортировать файл для загрузки в движок: модели - в формате<strong>FBX</strong>, запечённые текстуры - в формате<strong>TGA</strong>или<strong>PNG</strong>.</p>
38 </ul><p>Самый простой способ, так как в этом случае не придётся взаимодействовать с другим ПО. Нужно только экспортировать файл для загрузки в движок: модели - в формате<strong>FBX</strong>, запечённые текстуры - в формате<strong>TGA</strong>или<strong>PNG</strong>.</p>
39 <em>Кадр:<a>Blender</a>/ YouTube</em><ul><li><strong>Экспорт исходных данных для промежуточного этапа.</strong></li>
39 <em>Кадр:<a>Blender</a>/ YouTube</em><ul><li><strong>Экспорт исходных данных для промежуточного этапа.</strong></li>
40 </ul><p>В этом случае у специалиста есть<strong>BLEND</strong>-файл, который он конвертирует в <strong>FBX</strong>для различных манипуляций.</p>
40 </ul><p>В этом случае у специалиста есть<strong>BLEND</strong>-файл, который он конвертирует в <strong>FBX</strong>для различных манипуляций.</p>
41 <ul><li><strong>Использование исходных файлов для создания цифрового контента.</strong></li>
41 <ul><li><strong>Использование исходных файлов для создания цифрового контента.</strong></li>
42 </ul><p>Эта опция характерна для крупных проектов. И сам пайплайн в данном случае может быть самым разным.</p>
42 </ul><p>Эта опция характерна для крупных проектов. И сам пайплайн в данном случае может быть самым разным.</p>
43 <p><strong>Расширение пайплайна.</strong>Например, объект из Blender могут экспортировать в Maya, чтобы провести определённые итерации в рамках корпоративного пайплайна, а затем перенести в игровой движок. Таким образом связка расширяется и выходит за пределы<strong>BLEND</strong>-<strong>FBX</strong>.</p>
43 <p><strong>Расширение пайплайна.</strong>Например, объект из Blender могут экспортировать в Maya, чтобы провести определённые итерации в рамках корпоративного пайплайна, а затем перенести в игровой движок. Таким образом связка расширяется и выходит за пределы<strong>BLEND</strong>-<strong>FBX</strong>.</p>
44 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Недостаток такого подхода в том, что контент сложнее итерировать из-за множества этапов. Но есть и другой способ, предложенный Маттиасом.</p>
44 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Недостаток такого подхода в том, что контент сложнее итерировать из-за множества этапов. Но есть и другой способ, предложенный Маттиасом.</p>
45 <p><strong>Параллельное использование цифрового контента.</strong>Принцип заключается в том, что ассет всегда можно изменить, экспортируя содержимое из Blender в предусмотренный пайплайном софт (например, в ту же Maya) и затем импортируя обратно. Таким образом можно вносить правки в ассет до того, как он попадёт в движок.</p>
45 <p><strong>Параллельное использование цифрового контента.</strong>Принцип заключается в том, что ассет всегда можно изменить, экспортируя содержимое из Blender в предусмотренный пайплайном софт (например, в ту же Maya) и затем импортируя обратно. Таким образом можно вносить правки в ассет до того, как он попадёт в движок.</p>
46 <p>Такой подход актуален для проектов-долгостроев, так как процесс создания контента в этом случае растягивается на несколько лет, и некоторые данные спустя время могут стать неактуальными. При наличии исходных файлов и возможности параллельного редактирования в разных программах художник может вернуться к начальной точке даже год спустя и внести в ассет необходимые изменения.</p>
46 <p>Такой подход актуален для проектов-долгостроев, так как процесс создания контента в этом случае растягивается на несколько лет, и некоторые данные спустя время могут стать неактуальными. При наличии исходных файлов и возможности параллельного редактирования в разных программах художник может вернуться к начальной точке даже год спустя и внести в ассет необходимые изменения.</p>
47 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Когда необходимо экспортировать или передать BLEND-файл в рамках рабочего процесса, следует придерживаться трёх основных правил.</p>
47 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Когда необходимо экспортировать или передать BLEND-файл в рамках рабочего процесса, следует придерживаться трёх основных правил.</p>
48 <ul><li><strong>Стандартизированная структура.</strong>В Blender она порой бывает довольно сложной, достаточно вспомнить иерархию коллекций. Когда контент после экспорта получает человек, не знакомый со спецификой Blender, он должен чётко понимать содержимое элементов сцены.</li>
48 <ul><li><strong>Стандартизированная структура.</strong>В Blender она порой бывает довольно сложной, достаточно вспомнить иерархию коллекций. Когда контент после экспорта получает человек, не знакомый со спецификой Blender, он должен чётко понимать содержимое элементов сцены.</li>
49 <li><strong>Независимое содержимое (без связанных ассетов из других BLEND-файлов).</strong>Это позволит поделиться с коллегами всего одним файлом без необходимости ссылаться на другой контент, также созданный в Blender.</li>
49 <li><strong>Независимое содержимое (без связанных ассетов из других BLEND-файлов).</strong>Это позволит поделиться с коллегами всего одним файлом без необходимости ссылаться на другой контент, также созданный в Blender.</li>
50 <li><strong>Чёткое обозначение элементов для экспорта в аутлайнере.</strong>В сцене могут присутствовать вспомогательные объекты (к примеру, меши для булевых операций), которые не нужны в итоговом контенте. Пример корректного оформления элементов в аутлайнере можно увидеть на слайде ниже, где представлено содержимое BLEND-файла Маттиаса.</li>
50 <li><strong>Чёткое обозначение элементов для экспорта в аутлайнере.</strong>В сцене могут присутствовать вспомогательные объекты (к примеру, меши для булевых операций), которые не нужны в итоговом контенте. Пример корректного оформления элементов в аутлайнере можно увидеть на слайде ниже, где представлено содержимое BLEND-файла Маттиаса.</li>
51 </ul><em>Кадр:<a>Blender</a>/ YouTube</em><p>В аутлайнере проекта можно заметить много коллекций, отмеченных разными цветами. В соответствии с легендой слева, в синей коллекции собраны low-poly-модели, которые можно экспортировать для запекания. В жёлтой - high poly, которые также задействованы в этом процессе. Коллекция, отмеченная зелёным цветом, содержит mid-poly-модели, а также элементы, задействованные в сборке различных вариаций ассетов (в данном случае ветки дерева). В оранжевой коллекции находятся различные вариации деревьев. И наконец, в красной представлено несколько видов ассета для экспорта.</p>
51 </ul><em>Кадр:<a>Blender</a>/ YouTube</em><p>В аутлайнере проекта можно заметить много коллекций, отмеченных разными цветами. В соответствии с легендой слева, в синей коллекции собраны low-poly-модели, которые можно экспортировать для запекания. В жёлтой - high poly, которые также задействованы в этом процессе. Коллекция, отмеченная зелёным цветом, содержит mid-poly-модели, а также элементы, задействованные в сборке различных вариаций ассетов (в данном случае ветки дерева). В оранжевой коллекции находятся различные вариации деревьев. И наконец, в красной представлено несколько видов ассета для экспорта.</p>
52 <p>На кадре выше можно заметить, что все комплексные объекты в сцене привязаны к <strong>Пустышке</strong>(Empty). Маттиас практикует этот лайфхак для быстрого масштабирования, а также размещения объектов в сцене, используя<strong>Пустышку</strong>(Empty) в форме<strong>Куба</strong>(Cube).</p>
52 <p>На кадре выше можно заметить, что все комплексные объекты в сцене привязаны к <strong>Пустышке</strong>(Empty). Маттиас практикует этот лайфхак для быстрого масштабирования, а также размещения объектов в сцене, используя<strong>Пустышку</strong>(Empty) в форме<strong>Куба</strong>(Cube).</p>
53 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Сравним классическую систему экспорта объектов с новой системой<a>экспорта коллекций</a>.</p>
53 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Сравним классическую систему экспорта объектов с новой системой<a>экспорта коллекций</a>.</p>
54 <p>При стандартном подходе экспорта объектов в Blender, то есть при действии<strong>Файл</strong>(File) -<strong>Экспортировать</strong>(Export), могут возникнуть сложности, так как в настройках необходимо выбрать, какие именно объекты необходимо экспортировать. К тому же в меню находится много настроек, в которых легко запутаться.</p>
54 <p>При стандартном подходе экспорта объектов в Blender, то есть при действии<strong>Файл</strong>(File) -<strong>Экспортировать</strong>(Export), могут возникнуть сложности, так как в настройках необходимо выбрать, какие именно объекты необходимо экспортировать. К тому же в меню находится много настроек, в которых легко запутаться.</p>
55 <p>С новой функцией<strong>Exporters</strong>во вкладке<strong>Коллекции</strong>(Collection Properties) можно автоматически экспортировать всю коллекцию объектов, не прибегая к дополнительным настройкам, так как они уже заложены в выбранном содержимом. Всё, что нужно, - просто отметить элементы, которые должны быть в сцене, и нажать кнопку<strong>Export All</strong>. Полученный файл в формате<strong>FBX</strong>можно сразу отправить коллеге, и у того загрузится сцена со всеми выбранными ранее настройками.</p>
55 <p>С новой функцией<strong>Exporters</strong>во вкладке<strong>Коллекции</strong>(Collection Properties) можно автоматически экспортировать всю коллекцию объектов, не прибегая к дополнительным настройкам, так как они уже заложены в выбранном содержимом. Всё, что нужно, - просто отметить элементы, которые должны быть в сцене, и нажать кнопку<strong>Export All</strong>. Полученный файл в формате<strong>FBX</strong>можно сразу отправить коллеге, и у того загрузится сцена со всеми выбранными ранее настройками.</p>
56 Сравнение способов экспорта<em>Скриншот: Blender / Blender Foundation</em><p>Вместо вышеописанных операций с экспортом также можно прибегнуть к различным аддонам для конвертации данных, но в этом случае необходимо проследить, чтобы их также установил и получатель файла. Поэтому Маттиас считает, что лучше оставить способ экспорта простым и использовать функции, изначально заложенные в Blender.</p>
56 Сравнение способов экспорта<em>Скриншот: Blender / Blender Foundation</em><p>Вместо вышеописанных операций с экспортом также можно прибегнуть к различным аддонам для конвертации данных, но в этом случае необходимо проследить, чтобы их также установил и получатель файла. Поэтому Маттиас считает, что лучше оставить способ экспорта простым и использовать функции, изначально заложенные в Blender.</p>
57 <p>Ознакомившись со всеми нюансами экспорта, рассмотрим примеры оптимизации вывода данных из Blender в другие приложения.</p>
57 <p>Ознакомившись со всеми нюансами экспорта, рассмотрим примеры оптимизации вывода данных из Blender в другие приложения.</p>
58 <p>Чтобы показать специфику этого аспекта, Маттиас взял из личного проекта модель мюльной машины для производства хлопка. Объект достаточно масштабный и содержит много различных деталей, в том числе экземпляров (инстансов) - то есть зависимых копий.</p>
58 <p>Чтобы показать специфику этого аспекта, Маттиас взял из личного проекта модель мюльной машины для производства хлопка. Объект достаточно масштабный и содержит много различных деталей, в том числе экземпляров (инстансов) - то есть зависимых копий.</p>
59 <em>Изображение:<a>Matthias Patscheider</a>/ ArtStation</em><p>Художник отмечает, что в контексте комплексных моделей важно абстрагироваться от художественной цели и представить созданный объект в виде набора данных. Эти данные необходимо перенести из точки A в точку B и сохранить всю заложенную в них информацию. Как и в случае с ассетами деревьев из предыдущей главы, у станка есть чёткая иерархия коллекций объектов с определёнными характеристиками, включая параметры<strong>Трансформации</strong>(Transform).</p>
59 <em>Изображение:<a>Matthias Patscheider</a>/ ArtStation</em><p>Художник отмечает, что в контексте комплексных моделей важно абстрагироваться от художественной цели и представить созданный объект в виде набора данных. Эти данные необходимо перенести из точки A в точку B и сохранить всю заложенную в них информацию. Как и в случае с ассетами деревьев из предыдущей главы, у станка есть чёткая иерархия коллекций объектов с определёнными характеристиками, включая параметры<strong>Трансформации</strong>(Transform).</p>
60 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Данные полигональной сетки включают следующие составляющие:</p>
60 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Данные полигональной сетки включают следующие составляющие:</p>
61 <ul><li>Топологию -<strong>Вершины</strong>(Vertices),<strong>Рёбра</strong>(Faces) и <strong>Грани</strong>(Faces). Прочие структуры - например, кривые - для игрового движка также конвертируют в полигональную сетку.</li>
61 <ul><li>Топологию -<strong>Вершины</strong>(Vertices),<strong>Рёбра</strong>(Faces) и <strong>Грани</strong>(Faces). Прочие структуры - например, кривые - для игрового движка также конвертируют в полигональную сетку.</li>
62 <li>Нормали - нормали граней, известные как Face Normals, в которых одна сторона грани рендерится, а другая нет. Также есть нормали вершин - Vertex Normals.</li>
62 <li>Нормали - нормали граней, известные как Face Normals, в которых одна сторона грани рендерится, а другая нет. Также есть нормали вершин - Vertex Normals.</li>
63 </ul><em>Кадр:<a>Blender</a>/ YouTube</em><p>Стоит рассказать немного подробнее о специфике переноса нормалей вершин, так как с этим процессом могут возникнуть сложности. Так, в гифке, расположенной ниже, изначально представлен вариант проекта с "поломанными‎" нормалями. Подключение геометрического нода, регулирующего остроту углов, значительно улучшило вид объекта, а после подключения модификатора<strong>Взвешенная нормаль</strong>(Weighted Normal) шейдеры корректно ложатся на объект даже без использования карт нормалей.</p>
63 </ul><em>Кадр:<a>Blender</a>/ YouTube</em><p>Стоит рассказать немного подробнее о специфике переноса нормалей вершин, так как с этим процессом могут возникнуть сложности. Так, в гифке, расположенной ниже, изначально представлен вариант проекта с "поломанными‎" нормалями. Подключение геометрического нода, регулирующего остроту углов, значительно улучшило вид объекта, а после подключения модификатора<strong>Взвешенная нормаль</strong>(Weighted Normal) шейдеры корректно ложатся на объект даже без использования карт нормалей.</p>
64 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Добившись оптимального результата, необходимо убедиться, что все эти данные корректно перенесутся в движок. Но при дальнейшем наложении карт нормалей могут возникнуть сложности.</p>
64 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Добившись оптимального результата, необходимо убедиться, что все эти данные корректно перенесутся в движок. Но при дальнейшем наложении карт нормалей могут возникнуть сложности.</p>
65 <p>У нормалей вершин существует своя система координат переноса текстуры в мировое пространство, где X - тангент, Y - битангент, и Z - нормаль. Векторы X и Y определяют, как интерпретировать рельеф поверхности и шейдинг в целом. Если знать об этом, понять причину некорректного наложения нормалей станет проще.</p>
65 <p>У нормалей вершин существует своя система координат переноса текстуры в мировое пространство, где X - тангент, Y - битангент, и Z - нормаль. Векторы X и Y определяют, как интерпретировать рельеф поверхности и шейдинг в целом. Если знать об этом, понять причину некорректного наложения нормалей станет проще.</p>
66 <p>Большинство современных программ для 3D-моделирования и игровых движков использует векторное пространство битангента, то есть<strong>Y+</strong>или<strong>Y-</strong>. Список софта и пример ошибки с синхронизацией векторного пространства можно увидеть на слайде ниже.</p>
66 <p>Большинство современных программ для 3D-моделирования и игровых движков использует векторное пространство битангента, то есть<strong>Y+</strong>или<strong>Y-</strong>. Список софта и пример ошибки с синхронизацией векторного пространства можно увидеть на слайде ниже.</p>
67 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Важно понимать, что в данном случае не имеет значения, на какое пространство Y ориентируется программа - на <strong>+</strong>или<strong>-</strong>(Substance поддерживает оба варианта). Главное -<a>инвертировать</a>зелёный канал в карте нормалей, отвечающий за выпуклость/вогнутость, при необходимости. В большинстве программ уже встроена эта опция, но также операцию можно выполнить и в графическом редакторе - например, в Photoshop.</p>
67 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Важно понимать, что в данном случае не имеет значения, на какое пространство Y ориентируется программа - на <strong>+</strong>или<strong>-</strong>(Substance поддерживает оба варианта). Главное -<a>инвертировать</a>зелёный канал в карте нормалей, отвечающий за выпуклость/вогнутость, при необходимости. В большинстве программ уже встроена эта опция, но также операцию можно выполнить и в графическом редакторе - например, в Photoshop.</p>
68 <p>Из списка выше видно, что существует много программ, которые поддерживают систему координат Y+ или Y-. К слову, в приложениях Substance 3D используют<a>терминологию</a>OpenGL или DirectX, подразумевающую те же самые векторы. Из всего этого можно сделать вывод, что если нормали в другой программе имеют выпуклую поверхность вместо вогнутой, то стоит обратить внимание на специфику векторного пространства данного софта.</p>
68 <p>Из списка выше видно, что существует много программ, которые поддерживают систему координат Y+ или Y-. К слову, в приложениях Substance 3D используют<a>терминологию</a>OpenGL или DirectX, подразумевающую те же самые векторы. Из всего этого можно сделать вывод, что если нормали в другой программе имеют выпуклую поверхность вместо вогнутой, то стоит обратить внимание на специфику векторного пространства данного софта.</p>
69 <p>Ещё одна загвоздка может возникнуть при использовании UV-координат, которые отвечают за распределение текстур на мешах. В проекте может существовать несколько таких UV-развёрток, закреплённых за разными сегментами. В результате могут образоваться перекрытия. К тому же у каждого материала объекта могут быть свои UV-координаты.</p>
69 <p>Ещё одна загвоздка может возникнуть при использовании UV-координат, которые отвечают за распределение текстур на мешах. В проекте может существовать несколько таких UV-развёрток, закреплённых за разными сегментами. В результате могут образоваться перекрытия. К тому же у каждого материала объекта могут быть свои UV-координаты.</p>
70 <p>В примере Маттиаса ниже есть отдельная UV-развёртка, которая охватывает весь объект. А также отдельная UV-развёртка для наложения карт освещения или масок, если в процессе шейдинга возникнет необходимость наложения дополнительного слоя на весь объект. При этом, когда художник выбирает один из мешей во вьюпорте, в окне UV отображается только развёртка, закреплённая конкретно за выделенным сегментом, без отображения сторонних UV-координат.</p>
70 <p>В примере Маттиаса ниже есть отдельная UV-развёртка, которая охватывает весь объект. А также отдельная UV-развёртка для наложения карт освещения или масок, если в процессе шейдинга возникнет необходимость наложения дополнительного слоя на весь объект. При этом, когда художник выбирает один из мешей во вьюпорте, в окне UV отображается только развёртка, закреплённая конкретно за выделенным сегментом, без отображения сторонних UV-координат.</p>
71 UV-развёртка шестерёнок в проекте Маттиаса<em>Кадр:<a>Blender</a>/ YouTube</em>Полная UV-развёртка объекта. Из-за большого количества деталей UV-пространство выглядит при отдалении практически как чёрный квадрат<em>Кадр:<a>Blender</a>/ YouTube</em>UV-развёртка для масок<em>Кадр:<a>Blender</a>/ YouTube</em><p>Сложные объекты удобно подразделять на логические сегменты и визуализировать в виде цветных материалов. Этот подход не только облегчает считываемость в работе, но и помогает определить, сколько наборов материалов потребуется для текущего объекта в целом.</p>
71 UV-развёртка шестерёнок в проекте Маттиаса<em>Кадр:<a>Blender</a>/ YouTube</em>Полная UV-развёртка объекта. Из-за большого количества деталей UV-пространство выглядит при отдалении практически как чёрный квадрат<em>Кадр:<a>Blender</a>/ YouTube</em>UV-развёртка для масок<em>Кадр:<a>Blender</a>/ YouTube</em><p>Сложные объекты удобно подразделять на логические сегменты и визуализировать в виде цветных материалов. Этот подход не только облегчает считываемость в работе, но и помогает определить, сколько наборов материалов потребуется для текущего объекта в целом.</p>
72 В правой части кадра указаны настройки для отображения материалов по цветовым категориям<em>Кадр:<a>Blender</a>/ YouTube</em><p>В зависимости от специфики движка вам могут понадобиться опциональные данные:</p>
72 В правой части кадра указаны настройки для отображения материалов по цветовым категориям<em>Кадр:<a>Blender</a>/ YouTube</em><p>В зависимости от специфики движка вам могут понадобиться опциональные данные:</p>
73 <ul><li>набор уровней детализации, подготовленный художником;</li>
73 <ul><li>набор уровней детализации, подготовленный художником;</li>
74 <li>данные физики (коллайдеры, физика твёрдых тел);</li>
74 <li>данные физики (коллайдеры, физика твёрдых тел);</li>
75 <li>точки соприкосновения, известные как Attachment Points, которые определяют, как меш будет взаимодействовать с объектами и могут ли те остаться на его поверхности, как в сцене с цветными кубиками ниже.</li>
75 <li>точки соприкосновения, известные как Attachment Points, которые определяют, как меш будет взаимодействовать с объектами и могут ли те остаться на его поверхности, как в сцене с цветными кубиками ниже.</li>
76 </ul><em>Кадр:<a>Blender</a>/ YouTube</em><p>Рассмотрим основные сложности, с которыми может столкнуться художник при дальнейшем экспорте.</p>
76 </ul><em>Кадр:<a>Blender</a>/ YouTube</em><p>Рассмотрим основные сложности, с которыми может столкнуться художник при дальнейшем экспорте.</p>
77 <p><strong>Перенос всех данных в игровой движок</strong></p>
77 <p><strong>Перенос всех данных в игровой движок</strong></p>
78 <p>Как уже упоминалось ранее, данные переносятся из <strong>BLEND</strong>-файла в другие программы или напрямую в игровой движок. И чаще всего проблема может возникнуть на стадии импорта или экспорта. Самый простой способ выявить причину ошибочного отображения контента - попробовать вновь импортировать ассет в Blender (то есть сразу после экспорта из BLEND-файла). Если после реимпорта объект загрузился некорректно - значит, проблема не в специфике сторонних программ и не в движке.</p>
78 <p>Как уже упоминалось ранее, данные переносятся из <strong>BLEND</strong>-файла в другие программы или напрямую в игровой движок. И чаще всего проблема может возникнуть на стадии импорта или экспорта. Самый простой способ выявить причину ошибочного отображения контента - попробовать вновь импортировать ассет в Blender (то есть сразу после экспорта из BLEND-файла). Если после реимпорта объект загрузился некорректно - значит, проблема не в специфике сторонних программ и не в движке.</p>
79 <em>Кадр:<a>Blender</a>/ YouTube</em><p>На примере выше видно, что шейдинг модели выглядит корректно, но в аутлайнере сломана цепочка иерархии элементов. И можно сделать вывод, что чем больше данных содержит объект, тем сложнее найти причину проблемы и проанализировать все составляющие ассета. Поэтому прежде чем экспортировать объект, стоит максимально упростить данные:</p>
79 <em>Кадр:<a>Blender</a>/ YouTube</em><p>На примере выше видно, что шейдинг модели выглядит корректно, но в аутлайнере сломана цепочка иерархии элементов. И можно сделать вывод, что чем больше данных содержит объект, тем сложнее найти причину проблемы и проанализировать все составляющие ассета. Поэтому прежде чем экспортировать объект, стоит максимально упростить данные:</p>
80 <ul><li>найти все экземпляры;</li>
80 <ul><li>найти все экземпляры;</li>
81 <li>конвертировать их в меши;</li>
81 <li>конвертировать их в меши;</li>
82 <li>применить все модификаторы, за исключением<strong>Взвешенной нормали</strong>(Weighted Normal);</li>
82 <li>применить все модификаторы, за исключением<strong>Взвешенной нормали</strong>(Weighted Normal);</li>
83 <li>проверить, есть ли отрицательные значения в параметрах<strong>Трансформации</strong>(Transform), и применить трансформации:<strong>Правка</strong>(Edit) -<strong>Применить</strong>(Apply) -<strong>Трансформации</strong>(Transform);</li>
83 <li>проверить, есть ли отрицательные значения в параметрах<strong>Трансформации</strong>(Transform), и применить трансформации:<strong>Правка</strong>(Edit) -<strong>Применить</strong>(Apply) -<strong>Трансформации</strong>(Transform);</li>
84 <li>объединить все элементы.</li>
84 <li>объединить все элементы.</li>
85 </ul><p>После всех этих манипуляций количество данных заметно сократится, и их станет проще анализировать.</p>
85 </ul><p>После всех этих манипуляций количество данных заметно сократится, и их станет проще анализировать.</p>
86 <em>Кадр:<a>Blender</a>/ YouTube</em><p>На слайде выше Маттиас упростил ранее упомянутый объект, в том числе применил трансформации. После этого действия на некоторых сегментах нормали граней стали отображаться с изнаночной стороны. Это связано с тем, что у некоторых сегментов до применения операции были отрицательные значения в пункте<strong>Масштаб</strong>(Scale).</p>
86 <em>Кадр:<a>Blender</a>/ YouTube</em><p>На слайде выше Маттиас упростил ранее упомянутый объект, в том числе применил трансформации. После этого действия на некоторых сегментах нормали граней стали отображаться с изнаночной стороны. Это связано с тем, что у некоторых сегментов до применения операции были отрицательные значения в пункте<strong>Масштаб</strong>(Scale).</p>
87 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Также после объединения элементов осталось много лишних материалов, которые больше не нужны. Их необходимо удалить из общего списка в настройках материала.</p>
87 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Также после объединения элементов осталось много лишних материалов, которые больше не нужны. Их необходимо удалить из общего списка в настройках материала.</p>
88 <em>Кадр:<a>Blender</a>/ YouTube</em><p>В разделе<strong>UV-карты</strong>(UV Maps) поменялись названия UV-развёрток. Такое иногда встречается, когда разным UV-картам дают одно и то же название. В этом случае необходимо привести в порядок атрибуты UV-развёрток и дать им корректные названия, чтобы игровой движок смог их распознать. При объединении объектов в один ассет алгоритмы Blender способны распределить все детали в одном наборе.</p>
88 <em>Кадр:<a>Blender</a>/ YouTube</em><p>В разделе<strong>UV-карты</strong>(UV Maps) поменялись названия UV-развёрток. Такое иногда встречается, когда разным UV-картам дают одно и то же название. В этом случае необходимо привести в порядок атрибуты UV-развёрток и дать им корректные названия, чтобы игровой движок смог их распознать. При объединении объектов в один ассет алгоритмы Blender способны распределить все детали в одном наборе.</p>
89 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Если речь идёт о создании ассетов высокого качества, после описанной выше операции могут потребоваться дополнительные правки в топологии и самой UV-развёртке. Эту тему мы разберём чуть ниже.</p>
89 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Если речь идёт о создании ассетов высокого качества, после описанной выше операции могут потребоваться дополнительные правки в топологии и самой UV-развёртке. Эту тему мы разберём чуть ниже.</p>
90 <p><strong>Осмотр ассета в игровом движке</strong></p>
90 <p><strong>Осмотр ассета в игровом движке</strong></p>
91 <p>Закончив со всеми перечисленными выше манипуляциями, необходимо проверить ассет в игровом движке. Первое, на что нужно обратить внимание, - настройки трансформации и экспорта в Blender. В программе существует ряд опций, и порой наиболее подходящий вариант для экспорта в движки приходится искать экспериментальным путём - либо смотреть видеоуроки в Сети. Иногда ситуация упрощается, если в движке есть настройки импорта, где можно откорректировать параметры трансформации, как, например, в Unreal Engine.</p>
91 <p>Закончив со всеми перечисленными выше манипуляциями, необходимо проверить ассет в игровом движке. Первое, на что нужно обратить внимание, - настройки трансформации и экспорта в Blender. В программе существует ряд опций, и порой наиболее подходящий вариант для экспорта в движки приходится искать экспериментальным путём - либо смотреть видеоуроки в Сети. Иногда ситуация упрощается, если в движке есть настройки импорта, где можно откорректировать параметры трансформации, как, например, в Unreal Engine.</p>
92 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Но на практике бывают случаи, когда даже при указании корректных данных о трансформации настройки могут не сработать. В практике Маттиаса встречалось несколько подобных случаев во время экспорта контента в Unreal Engine и Unity. При экспорте из Blender художник учитывал все параметры масштабирования, указав размер 1×1×1, но после импорта в Unity движок по умолчанию выставил объекту масштаб величиной 100×100×100 единиц.</p>
92 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Но на практике бывают случаи, когда даже при указании корректных данных о трансформации настройки могут не сработать. В практике Маттиаса встречалось несколько подобных случаев во время экспорта контента в Unreal Engine и Unity. При экспорте из Blender художник учитывал все параметры масштабирования, указав размер 1×1×1, но после импорта в Unity движок по умолчанию выставил объекту масштаб величиной 100×100×100 единиц.</p>
93 Параметры трансформации объекта после импорта в Unity<em>Кадр:<a>Blender</a>/ YouTube</em><p>Если у вас встречаются аналогичные проблемы с конвертацией масштабирования при экспорте, Маттиас рекомендует привязать к объекту<strong>Пустышку</strong>(Empty) в виде куба, вызвать вкладку<strong>Инструмент</strong>(Tool) кнопкой<strong>N</strong>и в разделе<strong>Трансформировать</strong>(Transform) поставить галочку напротив пункта<strong>Влиять только на</strong>(Affect Only)<strong>Родители</strong>(Parents). И после этого можно экспортировать ассет в движок - трансформации в Unity будут отображаться корректно. Этот лайфхак Маттиас открыл для себя много лет назад и пользуется им до сих пор.</p>
93 Параметры трансформации объекта после импорта в Unity<em>Кадр:<a>Blender</a>/ YouTube</em><p>Если у вас встречаются аналогичные проблемы с конвертацией масштабирования при экспорте, Маттиас рекомендует привязать к объекту<strong>Пустышку</strong>(Empty) в виде куба, вызвать вкладку<strong>Инструмент</strong>(Tool) кнопкой<strong>N</strong>и в разделе<strong>Трансформировать</strong>(Transform) поставить галочку напротив пункта<strong>Влиять только на</strong>(Affect Only)<strong>Родители</strong>(Parents). И после этого можно экспортировать ассет в движок - трансформации в Unity будут отображаться корректно. Этот лайфхак Маттиас открыл для себя много лет назад и пользуется им до сих пор.</p>
94 <em>Кадр:<a>Blender</a>/ YouTube</em><p>К тому же, как уже отмечалось ранее, использовать<strong>Пустышки</strong>(Empty) довольно удобно в целом, так как с их помощью можно обозначить точку опоры ассета.</p>
94 <em>Кадр:<a>Blender</a>/ YouTube</em><p>К тому же, как уже отмечалось ранее, использовать<strong>Пустышки</strong>(Empty) довольно удобно в целом, так как с их помощью можно обозначить точку опоры ассета.</p>
95 <p>Ранее уже упоминалось, что ассет, созданный в Blender, может проходить и через другие программы, которые студия задействует в своём пайплайне при создании цифрового контента. И на этом этапе также существуют свои нюансы.</p>
95 <p>Ранее уже упоминалось, что ассет, созданный в Blender, может проходить и через другие программы, которые студия задействует в своём пайплайне при создании цифрового контента. И на этом этапе также существуют свои нюансы.</p>
96 <p>Для минимизации рисков возникновения проблем при экспорте Маттиас рекомендует воспользоваться обратным экспортом. Создайте самый простой ассет в основной программе (например, в Maya), проведите его через весь пайплайн для дальнейших манипуляций, а затем импортируйте в Blender. Таким образом у вас появится образец с готовыми стандартами данных, которые необходимо воссоздать в Blender. И в результате получится своего рода реверс-инжиниринг на основе цифрового контента, созданного в рамках пайплайна компании.</p>
96 <p>Для минимизации рисков возникновения проблем при экспорте Маттиас рекомендует воспользоваться обратным экспортом. Создайте самый простой ассет в основной программе (например, в Maya), проведите его через весь пайплайн для дальнейших манипуляций, а затем импортируйте в Blender. Таким образом у вас появится образец с готовыми стандартами данных, которые необходимо воссоздать в Blender. И в результате получится своего рода реверс-инжиниринг на основе цифрового контента, созданного в рамках пайплайна компании.</p>
97 <em>Кадр:<a>Blender</a>/ YouTube</em><p>В большинстве компаний все манипуляции с игровыми ассетами в рамках пайплайна проводятся в Maya. Поэтому Маттиас разобрал специфику импорта в другие программы на примере этого софта. Сама подготовка к экспорту во многом схожа с аналогичным процессом, когда ассет готовят для переноса в игровой движок. Впрочем, в контексте приложений есть несколько нюансов, на которые стоит обратить внимание.</p>
97 <em>Кадр:<a>Blender</a>/ YouTube</em><p>В большинстве компаний все манипуляции с игровыми ассетами в рамках пайплайна проводятся в Maya. Поэтому Маттиас разобрал специфику импорта в другие программы на примере этого софта. Сама подготовка к экспорту во многом схожа с аналогичным процессом, когда ассет готовят для переноса в игровой движок. Впрочем, в контексте приложений есть несколько нюансов, на которые стоит обратить внимание.</p>
98 <ul><li><strong>Настройки трансформации.</strong>Здесь работает тот же подход, что и в случае экспорта в игровые движки.</li>
98 <ul><li><strong>Настройки трансформации.</strong>Здесь работает тот же подход, что и в случае экспорта в игровые движки.</li>
99 <li><strong>Различия в иерархии.</strong>Группы в Maya отличаются по структуре от коллекций Blender. Чтобы корректно сопоставить содержание, лучше проконсультироваться с техническими художниками студии.</li>
99 <li><strong>Различия в иерархии.</strong>Группы в Maya отличаются по структуре от коллекций Blender. Чтобы корректно сопоставить содержание, лучше проконсультироваться с техническими художниками студии.</li>
100 <li><strong>Специфика наименований.</strong>В Maya нельзя давать объекту и его составляющим одни и те же имена. Например, у объекта Cube не может быть материала Cube, в противном случае программа сгенерирует случайное название, что осложнит работу с контентом. Также стоит избегать использования специфических знаков вроде "<strong>."</strong>или<strong>"|"</strong>.</li>
100 <li><strong>Специфика наименований.</strong>В Maya нельзя давать объекту и его составляющим одни и те же имена. Например, у объекта Cube не может быть материала Cube, в противном случае программа сгенерирует случайное название, что осложнит работу с контентом. Также стоит избегать использования специфических знаков вроде "<strong>."</strong>или<strong>"|"</strong>.</li>
101 </ul>Примеры неправильного и правильного наименования элементов в аутлайнере Blender и то, как они отображаются после импорта в Maya<em>Кадр:<a>Blender</a>/ YouTube</em><ul><li><strong>Дублирование данных.</strong>Как правило, это происходит с материалами.</li>
101 </ul>Примеры неправильного и правильного наименования элементов в аутлайнере Blender и то, как они отображаются после импорта в Maya<em>Кадр:<a>Blender</a>/ YouTube</em><ul><li><strong>Дублирование данных.</strong>Как правило, это происходит с материалами.</li>
102 </ul><p>В последнее время Маттиас стал практиковать следующий подход с использованием геометрических нодов: с их помощью он начал автоматизировать процесс упрощения структуры ассета для последующего экспорта. На основе связки нодов он создал собственный модификатор, который заменяет любой созданный меш готовой коллекцией. Работать с ним достаточно просто, независимо от геометрии ассета.</p>
102 </ul><p>В последнее время Маттиас стал практиковать следующий подход с использованием геометрических нодов: с их помощью он начал автоматизировать процесс упрощения структуры ассета для последующего экспорта. На основе связки нодов он создал собственный модификатор, который заменяет любой созданный меш готовой коллекцией. Работать с ним достаточно просто, независимо от геометрии ассета.</p>
103 <p>Чтобы создать связку геометрических нодов, нужно открыть меню<strong>Geometry Nodes</strong>, затем нажать кнопку<strong>Создать</strong>(+New). И на основе базовой связки<strong>Вход группы</strong>(Group Input) -<strong>Выход группы</strong>(Group Output) следует расширить цепочку компонентов.</p>
103 <p>Чтобы создать связку геометрических нодов, нужно открыть меню<strong>Geometry Nodes</strong>, затем нажать кнопку<strong>Создать</strong>(+New). И на основе базовой связки<strong>Вход группы</strong>(Group Input) -<strong>Выход группы</strong>(Group Output) следует расширить цепочку компонентов.</p>
104 <p>Схема Маттиаса выглядит следующим образом.<strong>Вход группы</strong>(Group Input) надо связать с <strong>Collection Info</strong>(нод автоматически создаётся путём перетаскивания ярлыка коллекции в область графа), а его, в свою очередь, - с нодом<strong>Realize Instances</strong>(набирается в строке поиска при вытягивании нити из слота). Также необходимо отметить параметры, указанные на скриншоте ниже, и соединить с <strong>Выходом группы</strong><strong>(Group Output)</strong>.</p>
104 <p>Схема Маттиаса выглядит следующим образом.<strong>Вход группы</strong>(Group Input) надо связать с <strong>Collection Info</strong>(нод автоматически создаётся путём перетаскивания ярлыка коллекции в область графа), а его, в свою очередь, - с нодом<strong>Realize Instances</strong>(набирается в строке поиска при вытягивании нити из слота). Также необходимо отметить параметры, указанные на скриншоте ниже, и соединить с <strong>Выходом группы</strong><strong>(Group Output)</strong>.</p>
105 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Этот кастомный модификатор получает информацию от коллекции и преобразует экземпляры. К связке при желании можно добавить и другие функции.</p>
105 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Этот кастомный модификатор получает информацию от коллекции и преобразует экземпляры. К связке при желании можно добавить и другие функции.</p>
106 <p>Для наглядности в примере ниже Маттиас скрыл все коллекции и создал обычную плоскость. Художник применил к ней кастомную связку, нажав на кнопку<strong>Добавить модификатор</strong>(Add Modifier) и выбрав модификатор из списка в категории<strong>Geometry Nodes</strong>.</p>
106 <p>Для наглядности в примере ниже Маттиас скрыл все коллекции и создал обычную плоскость. Художник применил к ней кастомную связку, нажав на кнопку<strong>Добавить модификатор</strong>(Add Modifier) и выбрав модификатор из списка в категории<strong>Geometry Nodes</strong>.</p>
107 Демонстрация модификатора Маттиаса в действии<em>Кадр:<a>Blender</a>/ YouTube</em><p>Примечательно, что действие фактически дублирует все манипуляции с подготовкой ассета на экспорт, о которых художник упоминал ранее, а сам процесс происходит намного быстрее.</p>
107 Демонстрация модификатора Маттиаса в действии<em>Кадр:<a>Blender</a>/ YouTube</em><p>Примечательно, что действие фактически дублирует все манипуляции с подготовкой ассета на экспорт, о которых художник упоминал ранее, а сам процесс происходит намного быстрее.</p>
108 <p>У этого подхода есть своя специфика. В частности, Маттиас заметил следующие нюансы:</p>
108 <p>У этого подхода есть своя специфика. В частности, Маттиас заметил следующие нюансы:</p>
109 <ul><li>Экземпляры сами по себе не экспортируются и нуждаются в преобразовании в геометрию.</li>
109 <ul><li>Экземпляры сами по себе не экспортируются и нуждаются в преобразовании в геометрию.</li>
110 <li>Преобразование (отмеченная галочка<strong>Realize All</strong>в ноде<strong>Realize Instances</strong>) сводит на нет действие ранее применённого модификатора<strong>Взвешенная нормаль</strong>(Weighted Normal), что можно увидеть в гифке ниже. Возможно, это баг, но в любом случае данный модификатор необходимо применить снова.</li>
110 <li>Преобразование (отмеченная галочка<strong>Realize All</strong>в ноде<strong>Realize Instances</strong>) сводит на нет действие ранее применённого модификатора<strong>Взвешенная нормаль</strong>(Weighted Normal), что можно увидеть в гифке ниже. Возможно, это баг, но в любом случае данный модификатор необходимо применить снова.</li>
111 </ul>Можно заметить, что в сцене шейдинг отображается корректно, но стоит отметить галочкой<strong>Realize All</strong> - нормали ломаются<em>Кадр:<a>Blender</a>/ YouTube</em><ul><li>Ограниченное отображение данных. Несмотря на то, что во вьюпорте материалы отображаются на объекте корректно, а UV-развёртка не изменилась, в самих настройках данные отсутствуют. Чтобы они появились, необходимо применить все модификаторы. Для этого следует навести курсор на поле модификатора и нажать<strong>Ctrl + A</strong>или выбрать опцию<strong>Применить</strong>(Apply), нажав на стрелку возле названия модификатора.</li>
111 </ul>Можно заметить, что в сцене шейдинг отображается корректно, но стоит отметить галочкой<strong>Realize All</strong> - нормали ломаются<em>Кадр:<a>Blender</a>/ YouTube</em><ul><li>Ограниченное отображение данных. Несмотря на то, что во вьюпорте материалы отображаются на объекте корректно, а UV-развёртка не изменилась, в самих настройках данные отсутствуют. Чтобы они появились, необходимо применить все модификаторы. Для этого следует навести курсор на поле модификатора и нажать<strong>Ctrl + A</strong>или выбрать опцию<strong>Применить</strong>(Apply), нажав на стрелку возле названия модификатора.</li>
112 </ul><em>Кадр:<a>Blender</a>/ YouTube</em><p>Чтобы в разделе модификаторов появилось меню с кнопкой<strong>Применить всё</strong>(Apply All), как у Маттиаса в кадрах выше, необходимо установить аддон<a>Modify Tools</a>.</p>
112 </ul><em>Кадр:<a>Blender</a>/ YouTube</em><p>Чтобы в разделе модификаторов появилось меню с кнопкой<strong>Применить всё</strong>(Apply All), как у Маттиаса в кадрах выше, необходимо установить аддон<a>Modify Tools</a>.</p>
113 <p><strong>Примечание</strong></p>
113 <p><strong>Примечание</strong></p>
114 <p>Применение модификаторов необходимо только для анализа составляющих ассета (то есть для проверки материалов, UV и так далее). Если ассет пойдёт на экспорт, это делать необязательно - достаточно просто отметить соответствующую опцию в настройках экспорта в разделе<strong>Геометрия</strong>(Geometry).</p>
114 <p>Применение модификаторов необходимо только для анализа составляющих ассета (то есть для проверки материалов, UV и так далее). Если ассет пойдёт на экспорт, это делать необязательно - достаточно просто отметить соответствующую опцию в настройках экспорта в разделе<strong>Геометрия</strong>(Geometry).</p>
115 <ul><li>Производительность может ухудшиться, особенно если сцена очень масштабная.</li>
115 <ul><li>Производительность может ухудшиться, особенно если сцена очень масштабная.</li>
116 </ul><p>Ознакомившись с нюансами работы в Blender в контексте пайплайна студии, далее рассмотрим, как работать над ассетами в AAA-играх.</p>
116 </ul><p>Ознакомившись с нюансами работы в Blender в контексте пайплайна студии, далее рассмотрим, как работать над ассетами в AAA-играх.</p>
117 <p>В процессе создания подобного контента важно следить за общей сложностью конструкции. Процесс начинается с простых форм и определения их размеров, а затем дорабатывается дизайн модели.</p>
117 <p>В процессе создания подобного контента важно следить за общей сложностью конструкции. Процесс начинается с простых форм и определения их размеров, а затем дорабатывается дизайн модели.</p>
118 Построение общих форм конструкции<em>Кадр:<a>Blender</a>/ YouTube</em><p>От конструкции отделяют элементы, которые можно использовать повторно, что в итоге приводит к созданию экземпляров. Термин "экземпляр", или его аналог Instance в англоязычных программах, наверняка знаком многим 3D-художникам. Например, в Blender можно создать<a>дубликат</a>объекта комбинацией<strong>Alt + D</strong>, при этом у копии сохранятся те же данные, что и у оригинала.</p>
118 Построение общих форм конструкции<em>Кадр:<a>Blender</a>/ YouTube</em><p>От конструкции отделяют элементы, которые можно использовать повторно, что в итоге приводит к созданию экземпляров. Термин "экземпляр", или его аналог Instance в англоязычных программах, наверняка знаком многим 3D-художникам. Например, в Blender можно создать<a>дубликат</a>объекта комбинацией<strong>Alt + D</strong>, при этом у копии сохранятся те же данные, что и у оригинала.</p>
119 Создание экземпляров объектов<em>Кадр:<a>Blender</a>/ YouTube</em><p>Маттиас активно использует в работе экземпляры коллекций. За счёт них можно легко продублировать содержимое коллекций в сцене. Такой экземпляр можно создать в сцене, нажав<strong>Shift + A</strong> -<strong>Добавить</strong>(Add) -<strong>Экземпляр коллекции</strong>(Collection Instance) и далее выбрав желаемую коллекцию из списка. Плюс такого подхода в том, что можно по-разному манипулировать различными элементами.</p>
119 Создание экземпляров объектов<em>Кадр:<a>Blender</a>/ YouTube</em><p>Маттиас активно использует в работе экземпляры коллекций. За счёт них можно легко продублировать содержимое коллекций в сцене. Такой экземпляр можно создать в сцене, нажав<strong>Shift + A</strong> -<strong>Добавить</strong>(Add) -<strong>Экземпляр коллекции</strong>(Collection Instance) и далее выбрав желаемую коллекцию из списка. Плюс такого подхода в том, что можно по-разному манипулировать различными элементами.</p>
120 Создание экземпляров коллекции<em>Кадр:<a>Blender</a>/ YouTube</em><p>Коллекции в сцене удобно размещать, привязав к ним<strong>Пустышку</strong>(Empty). В гифке ниже Маттиас открыл настройки<strong>Коллекции</strong>(Collection Properties), затем развернул вкладку в параметре<strong>Создание экземпляров</strong>(Instancing) в пункте<strong>Смещение экземпляра</strong>(Instance Offset) и выбрал<strong>Set Offset from Object</strong>. Таким образом он установил смещение экземпляра коллекции на основе положения активного объекта.</p>
120 Создание экземпляров коллекции<em>Кадр:<a>Blender</a>/ YouTube</em><p>Коллекции в сцене удобно размещать, привязав к ним<strong>Пустышку</strong>(Empty). В гифке ниже Маттиас открыл настройки<strong>Коллекции</strong>(Collection Properties), затем развернул вкладку в параметре<strong>Создание экземпляров</strong>(Instancing) в пункте<strong>Смещение экземпляра</strong>(Instance Offset) и выбрал<strong>Set Offset from Object</strong>. Таким образом он установил смещение экземпляра коллекции на основе положения активного объекта.</p>
121 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Модель станка Маттиаса, которая неоднократно демонстрировалась ранее на слайдах, также состоит из экземпляров коллекций. В гифке ниже представлены по отдельности все элементы, из которых художник собрал всю конструкцию.</p>
121 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Модель станка Маттиаса, которая неоднократно демонстрировалась ранее на слайдах, также состоит из экземпляров коллекций. В гифке ниже представлены по отдельности все элементы, из которых художник собрал всю конструкцию.</p>
122 <em>Кадр:<a>Blender</a>/ YouTube</em><p>В работе Маттиас использует несколько техник, упрощающих работу с ассетами. У него есть<a>оператор</a>, написанный на Python, который отключает связь расположения экземпляра ассета по отношению к оригинальному объекту. Необходимость в операторе возникла из-за того, что в процессе работы при перемещении какого-либо объекта экземпляры тоже начинали смещаться. И чтобы упростить себе задачу, Маттиас выделяет<strong>Пустышку</strong>(Empty), закреплённую за объектом, который нужно переместить, и нажимает<strong>Set the collection offset</strong>.</p>
122 <em>Кадр:<a>Blender</a>/ YouTube</em><p>В работе Маттиас использует несколько техник, упрощающих работу с ассетами. У него есть<a>оператор</a>, написанный на Python, который отключает связь расположения экземпляра ассета по отношению к оригинальному объекту. Необходимость в операторе возникла из-за того, что в процессе работы при перемещении какого-либо объекта экземпляры тоже начинали смещаться. И чтобы упростить себе задачу, Маттиас выделяет<strong>Пустышку</strong>(Empty), закреплённую за объектом, который нужно переместить, и нажимает<strong>Set the collection offset</strong>.</p>
123 <em>Кадр:<a>Blender</a>/ YouTube</em><p><strong>Примечание</strong></p>
123 <em>Кадр:<a>Blender</a>/ YouTube</em><p><strong>Примечание</strong></p>
124 <p>В своём докладе Маттиас не упоминал, как написать подобный скрипт. Впрочем, все его наработки, в том числе скрипты для управления коллекциями, можно найти на <a>GitHub</a>.</p>
124 <p>В своём докладе Маттиас не упоминал, как написать подобный скрипт. Впрочем, все его наработки, в том числе скрипты для управления коллекциями, можно найти на <a>GitHub</a>.</p>
125 <p>У сложных объектов может быть несколько тысяч элементов, а, как нам уже известно, перед экспортом необходимо упростить структуру. Ранее Маттиас упрощал объекты с помощью геометрического нода, о котором упоминалось ранее. Но проблема в том, что после преобразования экземпляров в меши ломалась структура объекта. Как итог - тысячи объектов разбиваются по разным категориям и ID-материалам.</p>
125 <p>У сложных объектов может быть несколько тысяч элементов, а, как нам уже известно, перед экспортом необходимо упростить структуру. Ранее Маттиас упрощал объекты с помощью геометрического нода, о котором упоминалось ранее. Но проблема в том, что после преобразования экземпляров в меши ломалась структура объекта. Как итог - тысячи объектов разбиваются по разным категориям и ID-материалам.</p>
126 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Экспериментируя, художник нашёл способ, как с помощью всё того же геометрического нода упорядочить иерархию объекта и разделить его на логические части. Маттиас предварительно распределил типы деталей по разным коллекциям и вместо преобразования всего объекта начал преобразовывать экземпляры из разных коллекций, а затем отделять некоторые элементы или изменять их.</p>
126 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Экспериментируя, художник нашёл способ, как с помощью всё того же геометрического нода упорядочить иерархию объекта и разделить его на логические части. Маттиас предварительно распределил типы деталей по разным коллекциям и вместо преобразования всего объекта начал преобразовывать экземпляры из разных коллекций, а затем отделять некоторые элементы или изменять их.</p>
127 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Таким образом можно создать несколько вариаций одного и того же меша и экспортировать выбранный дизайн в игровой движок.</p>
127 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Таким образом можно создать несколько вариаций одного и того же меша и экспортировать выбранный дизайн в игровой движок.</p>
128 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Ещё один плюс в этом подходе - возможность вносить в коллекцию определённые изменения. Например, добавить некоторым элементам хаотичности с помощью функции<strong>Случайная трансформация</strong>(Randomize Transform), которую можно найти во вкладке<strong>Объект</strong>(Object) -<strong>Трансформация</strong>(Transform).</p>
128 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Ещё один плюс в этом подходе - возможность вносить в коллекцию определённые изменения. Например, добавить некоторым элементам хаотичности с помощью функции<strong>Случайная трансформация</strong>(Randomize Transform), которую можно найти во вкладке<strong>Объект</strong>(Object) -<strong>Трансформация</strong>(Transform).</p>
129 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Все выполненные манипуляции распространяются и на остальные экземпляры в ассетах, которые можно в дальнейшем экспортировать в игровой движок или другое ПО для 3D-моделирования.</p>
129 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Все выполненные манипуляции распространяются и на остальные экземпляры в ассетах, которые можно в дальнейшем экспортировать в игровой движок или другое ПО для 3D-моделирования.</p>
130 <p>Полигональная сетка изначально должна быть максимально простой: затем её структуру дорабатывают модификаторами, включая<strong>Логический</strong>(Boolean),<strong>Объёмность</strong>(Solidify),<strong>Триангуляция</strong>(Triangulate) и другие функции, которые требуются для данной модели.</p>
130 <p>Полигональная сетка изначально должна быть максимально простой: затем её структуру дорабатывают модификаторами, включая<strong>Логический</strong>(Boolean),<strong>Объёмность</strong>(Solidify),<strong>Триангуляция</strong>(Triangulate) и другие функции, которые требуются для данной модели.</p>
131 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Правда, этот процесс деструктивен. При изменении полигональной сетки необходимо доработать топологию и UV.</p>
131 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Правда, этот процесс деструктивен. При изменении полигональной сетки необходимо доработать топологию и UV.</p>
132 Деталь в режиме редактирования и её UV-развёртка<em>Кадр:<a>Blender</a>/ YouTube</em><p>Этот процесс можно немного ускорить. Например, чтобы найти в полигональной сетке N-гоны, можно воспользоваться специальными аддонами. В качестве альтернативы в Blender заложена встроенная функция<strong>Выделить грани по количеству сторон</strong>(Select Faces by Sides). Она находится в <strong>Режиме редактирования</strong>(Edit Mode) во вкладке<strong>Выделение</strong>(Select) -<strong>Выделить всё по особенности</strong>(Select All By Trait) -<strong>Грани по количеству сторон</strong>(Faces by Sides). В <strong>Количестве вершин</strong>(Number of Vertices) указываем "4", а в <strong>Типе</strong>(Type) -<strong>Больше чем</strong>(Greater than). Таким образом в сетке покажутся все N-гоны.</p>
132 Деталь в режиме редактирования и её UV-развёртка<em>Кадр:<a>Blender</a>/ YouTube</em><p>Этот процесс можно немного ускорить. Например, чтобы найти в полигональной сетке N-гоны, можно воспользоваться специальными аддонами. В качестве альтернативы в Blender заложена встроенная функция<strong>Выделить грани по количеству сторон</strong>(Select Faces by Sides). Она находится в <strong>Режиме редактирования</strong>(Edit Mode) во вкладке<strong>Выделение</strong>(Select) -<strong>Выделить всё по особенности</strong>(Select All By Trait) -<strong>Грани по количеству сторон</strong>(Faces by Sides). В <strong>Количестве вершин</strong>(Number of Vertices) указываем "4", а в <strong>Типе</strong>(Type) -<strong>Больше чем</strong>(Greater than). Таким образом в сетке покажутся все N-гоны.</p>
133 <p>В последних версиях Blender доступен улучшенный оверлей для отображения данных полигональной сетки во вьюпорте. Его можно найти в режиме редактирования в меню отображения вьюпорта (значок сетки). В режиме UV-развёртки также есть свой полезный оверлей. Интерфейс всех вышеперечисленных функций можно увидеть на кадре ниже.</p>
133 <p>В последних версиях Blender доступен улучшенный оверлей для отображения данных полигональной сетки во вьюпорте. Его можно найти в режиме редактирования в меню отображения вьюпорта (значок сетки). В режиме UV-развёртки также есть свой полезный оверлей. Интерфейс всех вышеперечисленных функций можно увидеть на кадре ниже.</p>
134 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Для проверки корректного отображения нормалей Маттиас рекомендует использовать MatCaps в настройках вьюпорта. Подробнее об этой функции можно узнать в одном из наших<a>материалов</a>.</p>
134 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Для проверки корректного отображения нормалей Маттиас рекомендует использовать MatCaps в настройках вьюпорта. Подробнее об этой функции можно узнать в одном из наших<a>материалов</a>.</p>
135 <p>Ознакомившись с теорией, далее рассмотрим, как ассет, созданный в Blender, попадает в производство AAA-проекта.</p>
135 <p>Ознакомившись с теорией, далее рассмотрим, как ассет, созданный в Blender, попадает в производство AAA-проекта.</p>
136 <p>В качестве первого примера Маттиас продемонстрировал модели сценических ящиков в Alan Wake 2. Несмотря на то, что созданием подобного реквизита в проекте занимались hard-surface-моделлеры, художнику пришлось подключиться к созданию ассета из-за ограниченных ресурсов и времени команды.</p>
136 <p>В качестве первого примера Маттиас продемонстрировал модели сценических ящиков в Alan Wake 2. Несмотря на то, что созданием подобного реквизита в проекте занимались hard-surface-моделлеры, художнику пришлось подключиться к созданию ассета из-за ограниченных ресурсов и времени команды.</p>
137 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Маттиас начал с моделирования примитивной формы, которую сразу же экспортировал в движок, чтобы убедиться, что ассет разместится на уровне корректно. Затем он разделил элементы объектов на отдельные компоненты, которые можно использовать несколько раз (например, замки, колёса и другие детали).</p>
137 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Маттиас начал с моделирования примитивной формы, которую сразу же экспортировал в движок, чтобы убедиться, что ассет разместится на уровне корректно. Затем он разделил элементы объектов на отдельные компоненты, которые можно использовать несколько раз (например, замки, колёса и другие детали).</p>
138 <em>Кадр:<a>Blender</a>/ YouTube</em><p>На гифке ниже можно увидеть, что в наборе коллекций Маттиаса можно быстро заменить high-poly-элементы на low poly, применив соответствующие экземпляры коллекции.</p>
138 <em>Кадр:<a>Blender</a>/ YouTube</em><p>На гифке ниже можно увидеть, что в наборе коллекций Маттиаса можно быстро заменить high-poly-элементы на low poly, применив соответствующие экземпляры коллекции.</p>
139 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Благодаря вышеупомянутой связке геометрических нодов художник может экспортировать ассет в движок с любой точки производства - от момента с прототипом до этапа с высокополигональной моделью или промежуточным вариантом.</p>
139 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Благодаря вышеупомянутой связке геометрических нодов художник может экспортировать ассет в движок с любой точки производства - от момента с прототипом до этапа с высокополигональной моделью или промежуточным вариантом.</p>
140 <p>По этому же принципу можно быстро переназначить материалы с одной категории меша на другую. Например, у high poly могут быть только ID-материалы, которые не нужны для производства.</p>
140 <p>По этому же принципу можно быстро переназначить материалы с одной категории меша на другую. Например, у high poly могут быть только ID-материалы, которые не нужны для производства.</p>
141 <p>Для создания ассетов стеллажей в комнате архивов из дополнения Alan Wake 2: The Lake House Маттиас уже полноценно применял свой подход. На скриншоте ниже можно увидеть базовые модели шкафов и стеллажей, которые он загружал в движок, чтобы проверить масштабирование.</p>
141 <p>Для создания ассетов стеллажей в комнате архивов из дополнения Alan Wake 2: The Lake House Маттиас уже полноценно применял свой подход. На скриншоте ниже можно увидеть базовые модели шкафов и стеллажей, которые он загружал в движок, чтобы проверить масштабирование.</p>
142 <em>Кадр:<a>Blender</a>/ YouTube</em><p>И по аналогии с прошлыми примерами в BLEND-файле этого ассета находились коллекции с high-poly-, low-poly- и mid-poly-вариациями.</p>
142 <em>Кадр:<a>Blender</a>/ YouTube</em><p>И по аналогии с прошлыми примерами в BLEND-файле этого ассета находились коллекции с high-poly-, low-poly- и mid-poly-вариациями.</p>
143 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Затем Маттиас распределил объекты по коллекциям и применил на них геометрический нод, чтобы объединить меши. После этих операций он мог отправить любую вариацию своим коллегам, а те, в свою очередь, благодаря чёткой структуре могли быстро определиться, какой ассет необходимо экспортировать в движок. Также при необходимости он мог быстро изменить дизайн ящиков, и эти изменения применялись на все стеллажи.</p>
143 <em>Кадр:<a>Blender</a>/ YouTube</em><p>Затем Маттиас распределил объекты по коллекциям и применил на них геометрический нод, чтобы объединить меши. После этих операций он мог отправить любую вариацию своим коллегам, а те, в свою очередь, благодаря чёткой структуре могли быстро определиться, какой ассет необходимо экспортировать в движок. Также при необходимости он мог быстро изменить дизайн ящиков, и эти изменения применялись на все стеллажи.</p>
144 Тот же самый проект в Maya<em>Кадр:<a>Blender</a>/ YouTube</em><p>Ниже можно увидеть, как ассеты стеллажей выглядят в игре.</p>
144 Тот же самый проект в Maya<em>Кадр:<a>Blender</a>/ YouTube</em><p>Ниже можно увидеть, как ассеты стеллажей выглядят в игре.</p>
145 <em>Скриншот: игра Alan Wake 2: The Lake House / Remedy Entertainment</em><em>Скриншот: игра Alan Wake 2: The Lake House / Remedy Entertainment</em><em>Скриншот: игра Alan Wake 2: The Lake House / Remedy Entertainment</em><p>Пару лет назад наша редакция<a>разбирала</a>причины, мешающие Blender стать отраслевым стандартом. Тем не менее в рамках той статьи мы выяснили, что многие российские студии не против взять на работу моделлера, которому комфортнее работать в Blender. А опыт и наработки спикера текущего доклада доказывают, что к Blender лояльно относятся и крупные зарубежные студии.</p>
145 <em>Скриншот: игра Alan Wake 2: The Lake House / Remedy Entertainment</em><em>Скриншот: игра Alan Wake 2: The Lake House / Remedy Entertainment</em><em>Скриншот: игра Alan Wake 2: The Lake House / Remedy Entertainment</em><p>Пару лет назад наша редакция<a>разбирала</a>причины, мешающие Blender стать отраслевым стандартом. Тем не менее в рамках той статьи мы выяснили, что многие российские студии не против взять на работу моделлера, которому комфортнее работать в Blender. А опыт и наработки спикера текущего доклада доказывают, что к Blender лояльно относятся и крупные зарубежные студии.</p>
146 <p>Стоит уточнить, что Маттиас не просил своих коллег из Remedy перестроить пайплайн из-за своих предпочтений. Но художник очень рад, что компания позволила ему работать в софте, в котором ему по-настоящему комфортно и где он может достичь наилучшего результата.</p>
146 <p>Стоит уточнить, что Маттиас не просил своих коллег из Remedy перестроить пайплайн из-за своих предпочтений. Но художник очень рад, что компания позволила ему работать в софте, в котором ему по-настоящему комфортно и где он может достичь наилучшего результата.</p>
147 <a>Практический курс: "Blender.Design" Узнать про курс</a>
147 <a>Практический курс: "Blender.Design" Узнать про курс</a>