Если в Unity просто перекинуть файл с моделькой *.blender, то Unity Editor автоматически создаст для нее дефолтовый материал. Если для модельки используется одна текстура, то проблем нет — ее же и отобразит движок. Проблема возникает, если для модели используется больше одной текстуры. Даже в этом случае Unity создаст всего один материал, в котором будет только одна текстура. Может в следующих версиях Unity процесс импортирования переработают и все материалы и текстуры будут цепляться автоматически без специальной подготовки, но пока придется поработать «напильником»:
1. Создаем в Unity новый проект, назовем его «Cube-Multitexture».
2. Запускаем Blender и подготавливаем сцену — удаляем оттуда все лишнее и добавляем несколько источников света, так, чтобы сцена была освещена со всех сторон (я добавил 8 точечных источников света) и сохраняем файл в папке проекта Unity.
3. В папке проекта Unity (там, где находится файл .blend), создаем папку Textures и сохраняем туда 6 текстур (эти текстуры я создал в Gimp для данного примера):
4. Возвращаемся в Blender и добавляем на сцену куб (
5. Переключаем сцену в режим «UV Editing»
6. В правом окне (редактирования) выделяем грань куба (или несколько граней) и нажимаем клавишу
7. В левом окне (текстуры) выбираем файл текстуры и настраиваем расположение и размеры текстуры:
8. Повторяем шаги 6 и 7 для всех граней куба.
9. Сохраняем наш .blend — файл. Unity это увидит и автоматически добавит куб в проект вместе с материалами.
Это было руководство с сайта edy.
В случае такого способа импортирования модель получает правильное наименование материалов, но она становится развернутой на 90 градусов по оси X:
Чтобы этого избежать, нужно перед сохранением файла в папку с проектом Unity, развернуть модель на -90 градусов по оси X:
- Выделяем все объекты, которые будут экспортироваться (или просто
Ctrl +A ) - Выполняем вращение по оси X:
R ->X ->— 9 0 - Устанавливаем эту позицию по-умолчанию: Object -> Apply -> Rotate
- Возвращаем положение объекта к первоначальному (если необходимо дальнейшее редактирование модели):
R ->X ->9 0
Если вместо сохранения файла .blender в папку с Unity-проектом воспользоваться экспортом в Wavefront .obj, то такой проблемы уже не будет, однако в этом случае придется поменять названия созданных материалов (или хотя бы одно):
Результат:
Если произвести редактирование модели в Blender, а потом ее сохранить, она обновится и заново импортируется в проект Unity. Если некоторые из материалов удалялись или редактировались, то при импортировании они не будут повторно обновлены. Может возникнуть ситуация, когда нужно будет переназначить материалы вручную:
Это можно сделать, если выделить нужный меш и назначить ему другой материал, вместо удаленного:
update:
Вчера обнаружил баг с импортированием. Если в Blender создать две модели кубика — одну со стенками нулевой толщины, другую со стенками, имеющими толщину:
Затем, описанным выше способом импортировать их в Unity, то перепутаются текстуры, даже если корректно указать UV-развертку:
Это был кубик в окошке preview Unity.
А этот кубик в Blender, почувствуйте разницу…
P.S. Баг репорт отправил :)
- C#: Сравнить два массива - 12.12.2024
- EVE-Online: Фильтры каналов - 23.11.2024
- Не приходит СМС для авторизации на сайте Госуслуги - 01.11.2024