Возникла следующая ситуация:
На сцене в проекте Unity уже есть модель, но мы ее переделали в Blender. При этом почти все материалы остались старые, меняется только один объект сцены. Мы в Blender делаем экспорт в .FBX, и Unity обнаруживает обновление файла в папке Assets и автоматом импортирует его в проект.
В принципе это хорошо, если вы используете режим импортирования материалов Material Naming -> By Base Texture Name, который является дефолтовым. Но я не использую данный режим, а пользуюсь From Model’s Material. В этом случае к моим настроенным материалам добавляются новые импортированные материалы с названиями, образованными от имени текстуры. В общем, получается каша. Хотя это рекомендуемые метод:
We recommend using By Base texture Name, because it is less complicated and has more consistent behavior.FBXImporter-Model
Можно отключить автоматическое импортирование: Edit -> Preferences -> General -> Auto Refresh. Если убрать галочку, то при экспортировании модели из Blender она не будет автоматически импортирована в Unity, а значит и не будут созданы новые материалы. Но тогда появляется проблема с добавлением или обновлением моделей. Импортирование перетаскиванием уже не работает. Если нажать
На картинке ниже импортировано две модели с одинаковыми текстурами, но разными материалами. Один из материалов немного прозрачный. Если бы я импортировал с опцией наименования материалов по имени текстуры, было бы создано только 6 материалов, а не 10 и такого эффекта бы не получилось:
Пока эту «фичу» не исправили, я сохраняю уже настроенные материалы в отдельную папку внутри папки Materials, и для моделей указываю материалы из этой папки.
В дополнение мне прислали скрипт ModelImporterDefaultSettings.cs, который нужно поместить в папку Editor текущего проекта:
using UnityEngine;
using UnityEditor;
public class ModelImporterDefaultSettings : AssetPostprocessor {
void OnPreprocessModel() {
ModelImporter modelImporter = assetImporter as ModelImporter;
if (modelImporter != null) {
// see here for other settings:
// https://docs.unity3d.com/ScriptReference/ModelImporter.html
modelImporter.materialName = ModelImporterMaterialName.BasedOnMaterialName;
}
}
}
В техподдержке также сообщили, что в одной следующих версий редактора (примерно 2017.1) они переделают логику работы с материалами. Таким образом больше не будет создаваться отдельная папка для материалов. Материалы станут больше похожи на меши и аватары, а храниться будут внутри FBX префаба.
- C#: Сравнить два массива - 12.12.2024
- EVE-Online: Фильтры каналов - 23.11.2024
- Не приходит СМС для авторизации на сайте Госуслуги - 01.11.2024