Ошибки в отображении 3D моделей в Unity 3D. Розовый, черный, белый цвет 3D модели в Unity. Проблемы с материалами, шейдерами, uv разверткой и кешем

В данной статье рассматриваются проблемы, возникающие при работе с текстурами, материалами, uv-разверткой и шейдерами в Unity 3D, приводящие к окрашиванию 3D модели в черный, белый или розовый цвета, а также приводящие к смещению текстуры на поверхности 3 D модели. Данная статья является в некотором смысле продолжением статьи Артефакты, возникающие при импорте моделей в игровые движки на примере Unity 5, в которой были кпомянуты описанные выше проблемы, но не были рассмотрены способы их устранения. Сейчас мы исправим данное упущение и расскажем и покажем на примере 3D моделей, созданных в Blender’е и импортированных в Unity3D версии 5.

Часто на различных форумах (не только русскоязычных), посвященным работе с игровыми движками, в частности, Unity 3D, можно встретить такие вопросы, как «Импортировал модель в Unity3D, поместил на сцену, а она темная. Почему?», «Импортированная модель перса окрашена розовым, что делать?» «Импортировал модель, наложил текстуру, а она смещена, лицо теперь находится на спине и руке», «Импортировал в Юнити модель, созданную в Блендере, почему не наложилась текстура на модель?», «Почему не экспортировалась модель из Blender’а в Unity», «Открыл/импортировал ассет в Unity, а вместо красивого спецэффекта вижу розовую плоскость. Где анимация взрыва?» И так далее… Так давайте рассмотрим, из-за чего случаются все эти казусы и как их избежать.
Первой проблемой, которая рассмотрена в статье, является розовый окрас модели.

pink3dmodel На рисунке показана импортированная в Unity3D модель, которая после переноса на сцену (импорта, манипуляций с папками проекта, удаления папок, щейдеров или материалов и т.д.), окрашена в розовый цвет. В данном случае, как видно на рисунке, у модели саркофага отсутствует материал. Данная ситуация была смоделирована путем удаления назначенного материала из папки Assets.

В данном случае проблема связана с материалом, либо с назначенным ему шейдером:
— модели не был назначен материал, материал не был импортирован вместе с моделью из ассета Unity,  материал не был создан при импорте модели;
— материалу не назначен шейдер;
— в назначенном материалу шейдере присутствует ошибка.

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

deletedshader

На рисунке слева показана 3D-модель с удаленным в папке Assets шейдером. В отличие от предыдущего рисунка, здесь мы видим, что материал модели назначен (“New Material”), а вот в поле Shader вместо названия шейдера можно заметить надпись “Hidden/InternalErrorShader”, кричащую об ошибку, связанную с шейдером.

Чтобы создать материал, щелкните Правой Кнопкой Мыши в желаемой подпапке папки ассетов (Assets) и в открывшемся меню выберите вкладку Create, а в ней — Material. Введите имя будущего материала и нажмите клавишу Enter (Ввод) или щелкните Левой Кнопкой Мыши в любой точке экрана. Введите имя материала, как вы это делаете при создании файла или папки, например, в ОС MS Windows. Материал будет создан со стандартным шейдером
3D модель может иметь несколько материалов, назначенных её составным объектам (мешам), так что в этом случае понадобится назначить им соответствующие материалы или создать новые, если таковых не имеется, и опять же назначить 3D модели.

materialcreation

На рисунке показано меню создания материала.
Чтобы назначить материал модели, выберите модель в окне сцены (“Scene”) Редактора или в окне Иерархии (Hierarchy), затем найдите вкладку материала модели в окне Инспектора (Inspector), затем перетащите созданный материал из папки ассетов на свою модель на сцене или вкладку в Иерархии. Далее перетащите текстуры (diffuse map), карты нормалей (normal maps), карту затенений (occlusion map) и т.д. в соответствующие слоты.

assignmaterial

На рисунке стрелками показан процесс назначения материалов в соответствующие слоты материала.

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

Чтобы назначить шейдер модели, сменить его на один из стандартных (включая Legacy шейдеры) или свой самописный (скачанный из интернета, переписанный из учебника по шейдерам, например, “Unity 5.x Shaders and Effects Cookbook”/”Шейдеры и эффекты в Unity. Книга рецептов”), необходимо выбрать модель и в окне Инспектора раскрыть свиток назначенного 3D модели материала и щелкнуть на стрелочке вниз справа от названия текущего шейдера, чтобы открыть выпадающий список шейдеров, встроенных в Unity3D или расположенных в папках вашего проекта.

 

shaderselection

На рисунке показано меню выбора шейдера из доступных в проекте.

Если же Unity сигналит вам об ошибке в шейдере вместо отображения его названия или в окне консоли (Colsole), следует исправить ошибку в шейдере либо найти шейдер, в котором уже исправлена данная ошибка, например, обновленную версию шейдера или ассета целиком, обновленного до версии, поддерживающей версию Unity3D, которая установлена на вашей машине. Если вам еще сложно разобраться в шейдерах Unity и исправить ошибку самому, вы можете  скопировать текст ошибки в свой любимый поисковик и, скорее всего, вы найдете решение своей проблемы.

 

detonatorexplosionframework

На рисунке показано меню импорта ассетаDetonator Explosion Framework”.

После импорта ассета в проект Unity 5 и подтверждения в диалоговом окне API Update Required того, что мы сделали бэкап и готовы проапгрейдить все скрипты и сборки в папке Assets, Unity просигнализировал(а) в консоли об ошибке в шейдере “ HeatDistort”.

detonatorerror

На рисунке показано, как ругается Unity на шейдер “HeatDistort”, что, однако, не мешает запустить проект.

Действительно, после запуска проекта вместо визуализированного эффекта взрывной волны мы видим лишь розовую плоскость.

detonatorinactionerror

На рисунке показана работа ассета с ошибкой в шейдере. Та самая розовая плоскость.

За решением того, как исправить данный баг, ходить далеко не пришлось: на странице ассета один из пользователей выложил решение проблемы.

detonatorinactionfixed

На рисунке показан шейдер с исправленным багом и рабочим ассетом. Детонатор работает и при этом остается бесплатным!

 Если вам не удалось найти ошибку среди результатов поиска, поищите ответ на свой вопрос или задайте его участникам сообщества Unity 3D в одном из разделов форумов, посвященных Unity3D.
Ошибки в шейдерах зачастую возникают при импорте/использовании моделей из ассетов Unity 3D. Такие ассеты могли быть созданы в более ранних версиях Unity и, даже если импорт прошел без ошибок,  не все составляющие ассетов поддерживаются в старших версиях Unity (не говоря уже про поддержку более свежих версий ассетов более старыми версиями Unitr3D), включая функции шейдеров, и не все ошибки в ассетах исправляются автоматически в процессе апдейта/обновления открываемого проекта. Описанные выше ошибки наблюдались при открытии в Unity5 ассетов с водой, упакованных в  четвертой (или третьей) версии Unity3D и для неё же и предназначенных.

pinkwater

На рисунке показан скриншот импортированного в Unity5 ассета для третьей версии Unity.

Хотя были импортированы все содержащиеся в ассете компоненты, при запуске проекта вода была окрашена в розовый цвет, а в окне консоли показаны ошибки, которые к этому привели. Забив в поисковике текст ошибки, можно найти ее решение. Использовав найденное решение, можно вернуть проекту его первоначальный вид (ну, или близкий к нему). А можно использовать один из стандартных шейдеров Unity последней версии.

correctedwater

На рисунке показана пара вариантов исправления шейдера воды.

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

importcarasset

На рисунке показано меню импорта в Unityассета Car Tutorial, предназначенного для Unity 3 со всеми выбранными (галочками) компонентами для импорта в проект.

Как при импорте, так и при экспорте в ассет, вы можете и, зачастую, просто обязаны, сохранить существующие зависимости импортируемых моделей с остальными  компонентами ассета/проекта (шейдерами, скриптами и т.д.). Снятие одного из флажком может порушить весь ассет после импорта в проект Unity 3D.
Сохранение зависимостей обеспечивает импортирование в ваш проект не только целевого объекта (3D-модели в данном случае), но и всех связанных с ним компонентов. Поднабравшись опыта, вы сможете определять, какие связанные компоненты нужно импортировать в том или ином случае, а какие нет. А пока можно импортировать все, а потом уже руками удалить ненужные. Кроме того, для Unity существуют ассеты, позволяющие выявлять неиспользуемые элементы проекта, например, Asset Hunter, Resource Checker и т.д., либо воспользоваться скриптами из статьи Automatically locate all unused unity assets или скачать проект Unity целиком.

Также данная проблема встречается при апдейте проекта, созданного, например, в Unity 4 до Unity 5. О том, что изменилось в работе с шейдерами и об изменениях в самих шейдерах можно почитать на официальной странице Shaders in Unity 5.0.

Если же вам ничего не помогает, например, 3D модели назначен материал, в шейдере нет ошибок и т.д. и т.п., то стоит попробовать очистить кеш проекта, для чего необходимо в главном меню выбрать вкладку Edit, в открывающемся списке которой выбрать Preferences. В открывшемся меню Unity Preferences выбрать в левой колонке GI Cache и щелкнуть на кнопке Clean Cache.

cleancache

На рисунке показано меню очистки кеша проекта Unity 3D.

 

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

 

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

materialsnotimported

На рисунке показан пример импортированной в Unity 3D-модели, созданной в Blender’е.

Как видно на рисунке модель окрашена белым цветом по-умолчанию. Что же произошло? Все дело в том, что, созданные в Blender’е материалы и текстуры при помощи Cycles при помощи нодов/узлов не поддерживаются в Unity3D. В Unity поддерживаются лишь материалы, созданные нативными средствами Blender’а, причем не все настройки и характеристики материала сохраняются, а лишь малая его часть: название и цвет материала. Также в файле (или файлах, в зависимости от формата, в который экспортируется 3D модель) экспортированной модели сохраняется имя файла,  примененной к материалу текстуры/текстур.
Допустим, в Blender’е вы создали и назначили модели материал с именем CharacterMaterial, выставили ему красный цвет и назначили текстуру (диффузную карту) MyTexture.jpg. При экспорте модели, к примеру, в одном из рекомендуемых разработчиками формате, а именно FBX, текстура не экспортируется вместе с моделью, а экспортируется/запоминается в файле с моделью лишь uv-развертка модели, имя и цвет материала, имя используемой одной или нескольких текстур. При импорте модели в Unity игровой движок руководствуется своими правилами поиска текстуры для материала модели и создания самого материала. Настройки импорта материала становятся доступны в панели Инспектора ,если выбрать импортированную в Unity3D модель в окне инспектора.

materialimportparameters
На рисунке показано меню настроек импорта модели в Инспекторе (слева), позволяющая автоматически настраивать материалы и определять расположение текстур.

Также правила поиска текстуры, создания материала модели и назначения ему текстуры игровым движком Unity3D описаны в соответствующей статье на сайте Unity. Как мне импортировать модели из моего 3D редактора?

Рассмотрим пример ручного импорта текстуры в Unity 3D. Такой вариант подходит, если вы скачали модель, например, в формате FBX или Blender, к которой была приложена текстура. Самым простым способом добавить/импортировать 3D-модель в Unity является  перетаскивание этой самой модели из папки, расположенной на жестком диске, в одну из папок или подпапок Assets. По желанию, вы можете одним махом перетащить в Unity сразу файл модели, текстуру, карту нормалей, карту отражений и т.д. При импорте модели в Unity в папке, куда вы импортировали модель, будет создана подпапка Materials, в которой будет создан материал (или несколько материалов) по умолчанию или с уже назначенной текстурой и определенным именем, в зависимости от того, был ли назначен материал модели в 3D-редакторе, была ли там же назначена текстура и были ли соблюдены правила импорта моделей и текстур при экспорте/импорте моделей, упомянутые выше, т.е. какое имя у файла модели, материала, текстуры и так далее.
Следующая серия причин неверного отображения текстуры на 3D моделях связана с uv разверткой модели.

 

Даже если в Blender’е текстура смотрится отлично на вашей 3D модели, то в Unity 3D без созданной uv- развертки добиться такого же результата не получится.

unityblenderwithoutuv

На рисунке показана модель сферы без uv-развертки с наложенной текстурой в Blender’е (вверху) и импортированная в Unity (внизу) через экспорт в формате FBX.

unityblenderwithuv

На рисунке показана модель сферы с созданной uv-разверткой с наложенной текстурой в Blender’е (слева) и импортированная в Unity (справа) через экспорт в формате FBX.

unassigneduvНа рисунке показана 3D модель (вторая справа и ее клон — крайняя справа) без uv развертки, импортированная в Unity 3D. Как можно заметить, вторая справа 3D модель окрашена в один из цветов назначенной ей текстуры (той же самой, что назначена первой и второй слева моделям). В качестве эксперимента самой крайней справа 3D модели был назначен материал, уже использовавшийся ранее. Как можно видеть, и здесь 3D модель приняла один из цветов назначенной ей текстуры.

В зависимости от того, какие цвета присутствуют на назначенной 3D модели, такой и будет выбран цвет импортированной в Unity 3D без uv развертки.

Как уже было сказано выше, данная проблема, как правило, связана с отсутствием у 3D-модели uv-развертки либо с неправильно созданной uv-разверткой. Следовательно, следует либо создать uv- развертку, либо исправить ее. В Blender’е доступны несколько видов создания uv-развертки, как вручную на основе созданных швов 3D-модели (как было показано выше), так и автоматически, например, из проекции, в зависимости от углов, как было показано на одном из скриншотах выше, демонстрирующем меню создание uv развертки.
Если вы текстурировали свою 3D модель в Blendere при помощи нативых материалов или материалов, созданных в Cycles, то ее необходимо будет запечь согласно созданной uv-развертки модели. Вы также можете создать/нарисовать новую текстуру, воспользовавшись встроенным инструментом раскрашивания текстуры. Если у вас уже есть готовая карта текстуры для 3D-модели, для которой вы создали развертку, или для другой похожей модели, то при должном умении работы в редакторах изображений (том же Photoshop’е или GIMP’е), вы сможете переделать имеющуюся текстуру под uv-развертку своей 3D модели.
Но прежде чем вы сможете запекать текстуру, карты нормалей, затененностей, смещения и т.д., вам придется создать, как минимум одно, изображение, чтобы запечь эти карты, как описано в статье Быстрый старт из MakeHuman в Unity3D. Создание low poly и high poly моделей персонажа. Запекание карты нормалей в Blender.

Если для модели была создана uv-развертка и в Blendere текстура была наложена на модель согласно uv-развертке, то в Unity и Blender’е она будет отображаться одинаково, т.е. текстура будет распределена по поверхности 3D модели согласно uv-развертке, как в Unity3D, так и в любом другом игровом движке или 3D редакторе. Будьте готовы к тому, что в Blender’е, Unity3D, Unreal Engine 4 и других 3D редакторах и игровых движках, помимо всего прочего, используются свои шейдеры т настройки освещения, так что затекстурированная модель в Blender’е и, к примеру, в Unity 3D будет выглядеть по-разному, что можно заметить на последнем рисунке. Чтобы в игровом движке 3D модель выглядела так же, как и в вашем 3D редакторе, будь то Blender, 3ds Max, Maya, Modo и т.д., вам придется подобрать соответствующий шейдер (или несколько шейдеров), а также настройки освещения.

Иногда, содержащаяся в blend-файле или импортированная в Blender модель имеет uv-развертку, но не имеет швов на самой модели, например, при импорте модели, созданной в MakeHuman. Про создание 3D модели в MakeHuman и импорт 3D модели в Unity 3D вместе с картой нормалей запеченной с high poly 3D модели в Blender’е вы можете прочитать в уже упомянутой выше статье.

Чтобы посмотреть или отредактировать созданную uv-развертку достаточно выбрать под одним из окон 3D вида вкладку текущего типа редактора (по умолчанию куб в изометрической проекции) и выбрать в раскрывающемся меню вкладку UV/Image Editor, чтобы отобразить в текущем (активном) окне Редактор изображения/UV развёртки.

uvimageeditorwindow

На рисунке показано меню текущего типа редактора для конкретной области, в котором выбрана вкладка Редактора UV/Изображения.

 Итак, чтобы создать швы согласно островам развертки, вы можете:

1) вручную выделить ребра на 3D модели;

2) на uv-развертке и пометить их как швы;

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

seamsfromislands

На рисунке показано создание швов на low poly 3D модели персонажа из островов uv-развертки. На верхнем рисунке показано меню UV с выбранной вкладкой создания швов из uv-островов. На нижнем рисунке показан результат работы инструмента. Красным выделены созданные швы uv-развертки.

 Иногда вам придётся подправлять uv-развертку, чтобы избежать артефактов отображения текстур и/или запекания и использования карт(ы) нормалей, карты затенений (occlusion map) и т.д.
3D-модель отлично будет себя чувствовать в игровых движках и без маркированных швов (но не без uv-развертки), однако, если вы захотите изменить uv-развертку, то в этом случае швы на 3D-модели вам понадобятся. Также помните, что при более-менее серьезном изменении развертки (перемещении uv-островов или их частей, вращении, масштабировании) или ее пересчете путем нажатия клавиши ‘U’ дважды (или после однократного нажатия клавиши U’ и выбора в открывшемся меню способа создания развертки), вам придется перерисовывать текстуру для своей модели, корректировать карту нормалей и все остальные карты, чтобы избежать артефактов отображения текстур. При небольших изменениях в геометрии 3D модели существует возможность закрепить вершины uv-развертки, чтобы при повторном ее создании, все закрепленные вершины uv-развертки остались на прежних местах. Для того чтобы закрепить вершины uv-развертки (“запинить” – жарг., от англ. Pin — прикалывать), достаточно выбрать вершины uv развертки и нажать клавишу ‘P’ (курсор мыши должен находиться в границах окна Редактора UV/Изображения), после чего все приколотые вершины окрасятся красным.

pinnedrecreateuv

На рисунке показана закрепленная uv развертка (слева) и меню создания uv развертки (справа). UV развертка создается только для выбранных элементов меша.

 

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

rotateuv

На рисунке показана 3D модель, uv-развертка которой была повернута на 90 градусов по часовой стрелке в окне Редактора UV/Изображения в Blender’е.

rotatedunity3d

На рисунке показаны две 3D модели, импортированные в Unity3D: слева показана 3D модель, uv развертка которой была повернута в Blender’е, справа – 3D модель, как она должна выглядеть ,т.е. uv развертка соответствует текстуре, карте нормалей и карте затенений.

Одним из действенных способов избежать подобных проблем является использование самой свежей версии текстуры с последней версией uv-развертки модели. Не следует изменять геометрию модели после создания для нее uv-развертки. Если такая необходимость возникла, то в случае незначительных изменений 3D-модели следует до или после ее изменения и обязательно до обновления uv-развертки закрепить существующую uv-развертку, после чего “развернуть” модель еще раз.
Закрепив uv-развертку, вы сможете обновить ее без создания новой развертки так, чтобы координаты 3D-модели в трехмерном пространстве соответствовали координатам обновленной uv-развертки. Только представьте, что вы создали uv-развертку, скомпоновали острова таким образом, чтобы они занимали всю выделенную под нее площадь изображения, оставив минимум пустых областей, и тут увидели недоделку в модели, заказчик попросил добавить 3D модели третий глаз или вы обнаружили ошибку в шве модели. Что делать? Заново создавать развертку после исправлений или модифицирования 3D-модели, а потом заново компоновать элементы uv-развертки? Не обязательно, ведь можно заново создать развертку лишь для измененной части 3D-модели, которую или часть которой вы предусмотрительно оставили незакрепленной. Далее вы можете загрузить в окно редактирования UV/Изображения имеющуюся текстуру и подогнать под нее расположение и даже форму измененной uv-развертки. Но помните, что значительное изменение геометрии uv-развертки чревато сжиманием и растяжением текстуры в измененных соответствующим образом местах uv развертки, а, следовательно, и модели.
Если модель представлена отдельными мешами и вам необходимо серьезно изменить геометрию одного из них, то вы можете «запинить» все острова uv-развертки, кроме uv-острова того меша (или его части), геометрию которого хотите изменить и/или создать для него uv-развертку заново, после чего выполнить развертку 3D модели. В этом случае uv-развертка будет полностью пересчитана с изменением геометрии (и, как правило, масштаба) незакрепленных островов uv-развертки. Изменившиеся размеры островов uv-развертки можно подогнать под «старые» размеры островов при помощи масштабирования. Чтобы изменить масштаб uv-острова, выберите его, например, при помощи клавиши ‘L’, поместив поверх одной из принадлежащей ему вершин курсор мыши, и нажмите клавишу ‘S’, после чего переместите мышь и подтвердите окончание масштабирования, нажав Левую Кнопку Мыши (или клавиши ‘Enter’).

adjustuv

На рисунке показана uv развертка 3D модели до повторного создания uv острова и после (в середине) с последующей корректировкой uv острова (справа) при помощи инструмента поворота (клавиша ‘R’), масштабирования (клавиша ‘S’) и перемещения (клавиша ‘G’).

Осталось лишь переместить заново развернутые uv острова на прежние позиции и придать им форму максимально повторяющую форму старых uv островов (или в любые другие свободные места uv-развертки) и подправить текстуру, если в этом есть необходимость. Чтобы избежать постоянной сверки и размещения заново развернутых uv островов, вы предварительно можете экспортировать uv развертку, а затем загрузить ее в качестве фонового изображения при помощи кнопки “Open”, расположенной под окном редактора развертки.

Помните, что если вы изменяете геометрию модели (или uv развертку), расположенную на границе двух (и более) островов, один из которых зафиксирован, а второй — нет, то данный способ не совсем подходит, поскольку придется «шаманить» с текстурой (и картами нормалей, затенения и т.д.) в районе шва либо замазывать артефакты на текстуре в самом 3D-редакторе (благо Blender позволяет рисовать текстурой по самой модели поверх существующей текстуры) и/или в программах, например, Substance Painter, DDO Painter и подобных им, позволяющих корректировать текстуры и другие карты. В противном случае придется смириться с искажениями карт в на швах. Альтернативной таким редакторам является перезапекание существующих карт: Ambient occlusion, карты высот/карты смещений, карты нормалей и т.д.
Однако из любой ситуации, даже из такой времязатратной, есть выход: отменить фиксирование соседнего острова (вершины и шов которого принадлежат измененной геометрии 3D-модели), чтобы для него также был создан обновленный остров. Просто теперь вам нужно будет подогнать размер еще для одного острова uv-развертки и поправить его карты.
При написании текста данной статьи именно в этот момент экран планшета мигнул и окрасился чёрным. К моей превеликой радости, таким образом планшет решил подсказать мне, что слишком долго пялиться в экран очень вредно, да и сохраняться почаще не помешало бы. В свою очередь, хочу посоветовать вам не полагаться на автосохранение Blender’а, а сохранять результаты своих трудов и делать резервные копии файлов, с которыми вы работаете, и бекапы носителей данных с ОС и важными данными./// Про резервные копии и восстановления из них будет посвящена небольшая статья.
Отдельно хочется отметить, что, если изначально ваша модель была сохранена в формате Blender’а, например, вы скачали ее с одного из репозиториев моделей/ассетов, такого как blendswap.com, то текстуры (а также карта нормалей, отражений и т.д.) для модели могут идти, как отдельными файлами, так и могут быть интегрированы в сам файл с моделью. В первом случае вам нужно будет в открыть blend-файл с моделью, убедиться, что модели назначен материал, у 3D модели есть развертка и текстура правильно отображается на модели, после чего экспортировать модель, например, в формате FBX, и импортировать модели и текстуры в проект Unity3D.
Во втором случае (когда текстуры запакованы в файл Blender’а) вам придется распаковать текстуры, например, в папку, где находится файл Blender’а вашей сцены или модели с расширением blend, а уже затем экспортировать модель в формате FBX и импортировать саму модель и текстуры для неё в игровой движок.

blenderunpack
На рисунке показано меню запаковки/распаковки текстур в файл Blender’а (blend).

 Поставив флажок напротив “Automatically Pack Into.blend” вы дадите Blender’у команду паковать все используемые на сцене текстуры в файл .blend вместе с вашей моделью/сценой. Чтобы распаковать текстуры, запакованные вместе с моделью, выберите один из пунктов меню, показанных на рисунке ниже.

unpackmenu

На рисунке показано меню выбора расположения файлов для распаковки.

 

Автор Максим Голдобин (aka MANMANA)
goldmaxval@gmail.com

Добавить комментарий