Автор урока: AdeLana
Автор иллюстраций: AdeLana
Добавление нового компонента - сабсета (Subset), к мешу предмета. Делаем сабсет перекрашивающимся.
Необходимая информация для этого урока была взята из этой темы с MTS и урока от IgnorantBliss
Для чего нужно добавлять сабсеты, спросите вы? Допустим вам понадобилось сделать объект, в котором части имеют не только разные цвета, но и разные свойства материалов (Например штора в которой есть портьера и тюль). А в клонированном вами объекте всего один сабсет. Тут-то вам и понадобится этот урок.
Вам понадобятся:
- SimPE (последняя версия)
- CEP, последняя версия (если добавлять перекрашиваемый сабсет на объект, который первоначально не имел перекрасок)
- Базовые знания SimPE и создания пользовательского объекта
Внимание! Вы можете добавлять сколько угодно сабсетов к мешу, НО перекрашиваемых максимум два.
Введение.
Мы не будем тут рассматривать, как создаётся меш объекта. У вас уже должен быть готов в 3D редакторе, меш предмета с необходимым вам количеством сабсетов.
Я буду делать декоративный архитектурный элемент – СТЕНА.
Я подготовила меш с четырьмя частями (сабсетами)
-glass – стекло, будет безтекстурным материалом
-window – оконная рама, будет всегда белой
-floor – пол, будет перекрашиваемая часть
-base – стена, будет перекрашиваемая часть
Запускаем SimPe -> Workshop -> Начать
Так как мой объект будет декором, выбираю из раздела Украшения -> Скульптуры
такую вазу (потому, что у вазы ест LOD, а мне нужно чтоб мой объект было видно с карты города)
Отступление! У некоторых предметов - как у нашего - есть дополнительная версия LOD90 - это упрощенная версия предмета, показывающаяся на экране соседства (Neighborhood View). У таких объектов, каждому TXMT "полноценного" объекта должен соответствовать TXMT "упрощенного" объекта, иначе объект будет показываться мерцающим синим на экране соседства. Обычно упрощенные TXMT не содержат никаких спец-свойств (как рельеф, или отражаемость, да и текстура там есть не всегда). Имя упрощенного TXMT обязательно должно быть точно таким же, как для полноценного TXMT, только в части "название части меша" должно быть добавлено lod90.
Клонируем. Меняем Гуид.
1 Редактируем Geometric Data Container
Открываем ресурс Geometric Data Container, тень можно удалить. У нас остался один сабсет – base
Импортируем новый меш ->
Заменяем только base, остальное импортируем не меняя
Видим, что наши сабсеты добавлены. Меш заменился.
2 Добавляем Texture Image для новых сабсетов
Для стекла нам текстура не нужна, для остальных частей клонируем имеющуюся текстуру. Если у вас несколько сабсетов будут использовать одну и туже текстуру, не нужно клонировать её несколько раз, достаточно прописать в сабсетах использование нужной текстуры.
Лишние текстуры от старого объекта можно удалить – бамп карту и тень.
Мне нужно три текстуры для стены, пола и рамы
- Самый простой способ добавления новой текстуры - клонировать ресурс текстуры (не тень).
- Чтобы клонировать, щелкните правой кнопкой мыши на существующем Texture Image и выберите Клонировать. Новый файл появится в списке.
Теперь нам нужно заменить текстуру (картинку) на свою, новым текстурам дать новое имя и тоже заменить картинку.
Переименовать файл текстуры изображения, но оставить TXTR-расширение нетронутым. Не изменяйте первые несколько прочерков с названиями сабсета (fabric, frame, surface), только конец файла (в выделенную на скриншоте). Или через тире допишите новое название несли нужно, например wood, fiolet и т.п.
3 Добавляем Material Definition для новых сабсетов
Клонируем для каждого сабсета ресурс Material Definition, таким же методом, как в предыдущем шаге.
Новый материал нужно переименовать соответственно сабсету к которому он будет относиться. Не забываем, что мы не трогаем и не удаляем:
- расширение txmt в конце
- приставку, обозначающую имя сабсета
- нижние прочерки разделения
Ещё нужно прописать в нашем материале текстуру которую он будет использовать, можете скопировать имя вашей текстуры из TXTR (без окончания _txtr) и вставить его после приставки ##0x1C050000!
Примечание! Если нехотите или не знаете как прописывать вручную свойства материалов, можно экспортировать их из подходящего по свойствам ресурса, из любого пакаджа.
Я импортировала свойства стекла из максис окон. Остальное оставила как было.
4 Редактирование ресурса SHAPE
Откроем SHAPE, и в Plugin View вкладку Content
Нужно добавить новые записи для наших сабсетов, чтоб они указывали к свойствам материалов (Material Definition)
Чтобы сделать это, нажмите кнопку Добавить (add), а затем нажмите на новой линии, которая появляется в списке (только с двоеточия: в этой точке), чтобы сделать его активным.
В строке под названием Subset Name введите имя вашего сабсета. В строке под названием Material Definition file введите название материала созданного в предыдущем шаге,
НО! без суффикса (_txmt) и с префиксом (## 0x1C050000!)
ВАЖНО! Выполните "Fix Integrity" (Сервис -> Инструменты объекта -> Fix Integrity -> update -> ok), сохраните пакадж.
Если вы не хотите делать перекрашиваемые сабсеты, то шаг 5 можете пропустит!
5 Редактирование Geometric Node
Откройте Geometric Node, на выпадающем списке Blocklist, выберите строку под названием "tsDesignModeEnabled".
На вкладке cExtension, в списке Items перечислены перекрашиваемые сабсеты объекта. (Если уже есть два, вы не можете добавить третий). Чтобы добавить еще один, нажмите кнопку Добавить (add), а затем нажмите на новой линии в списке, чтобы сделать её активной, и напишите название вашего нового сабсета в поле Name, и нажмите Commit.
6 Добавляем Material Override для новых сабсетов
Клонируем ресурс Material Override для новых сабсетов как в предыдущих шагах.
Нажмите на линии под названием "family" и открыть Сервис -> Инструменты объекта -> Hash Generator (under Tools -> Object Tools -> Hash Generator). Проверьте опцию GUID, а затем скопировать и вставить хэш-значения в поле Значение (Value) для "family". Нажмите кнопку Commit.
Нажмите на линию под названием "name" в списке, и измените значение в поле справа, чтобы соответствовало материал Definition имя вашего нового сабсета (плюс ## префикс 0x1C050000 и минус _txmt суффикс!). Нажмите кнопку Commit.
Нажмите на линии под названием "subsetName" в списке, и переименуйте его на имя вашего нового сабсета. Нажмите кнопку Commit.
ВАЖНО! Выполните "Fix Integrity" (Сервис -> Инструменты объекта -> Fix Integrity -> update -> ok), сохраните пакадж.
Повторить для каждого Material Override.
Смотрим результат в игре.