Маппинг и SDK

KF2 SDK: свои текстуры через MaterialInstanceConstant

В ранние дни SDK Killing Floor 2 официального способа добавить в карту свои текстуры не было. Это руководство показывает рабочий обходной путь: использовать MaterialInstanceConstant (MIC), который наследуется от материала из самой игры, и подменить его текстуры своими. Это не урок по маппингу: предполагается, что вы уже умеете строить простую геометрию (в примере CSG, но модульные карты работают так же).

Начальная подготовка

Создайте простой полый куб 512x512x512, чтобы было что текстурировать.

Подготовка текстур

Нужны текстуры в формате .tga: диффузная и, при наличии, отдельные normal и specular. Автор взял текстуры из карты в стиле Doom, стилизованные normal map и частично specular. Подойдёт любой редактор (автор использует Photoshop CS6). Не кладите данные в альфа-канал, если текстура не прозрачная.

Исходные текстуры для урока Пример текстур, подготовленных в TGA.

Импорт в SDK

  1. Сохраните карту в папке Unpublished: C:\Users\YOU\Documents\My Games\KillingFloor2\KFGame\Unpublished\BrewedPC\Maps (в примере имя KF-TextureTesting).
  2. Откройте Content Browser (View, Browser Windows, Content Browser). Появится пакет с именем карты. Если он пуст, поставьте свет и постройте освещение: появятся текстуры shadowmap, и вы убедитесь, что пакет верный.
  3. Щёлкните правой кнопкой по пустому месту справа от списка пакетов, выберите Import и укажите текстуры. Импорт прямо в пакет карты проще и надёжнее.
  4. Для normal map выставьте сжатие TC_NormalMap и LODGroup TEXTUREGROUP_WorldNormalMap.

Создание MIC

Сырые текстуры напрямую использовать нельзя. Обычно вы создали бы свой Material, но игра его не распознает и покажет шахматную клетку по умолчанию. Поэтому щёлкните правой кнопкой и выберите New MaterialInstanceConstant, дайте понятное имя (автор добавляет _MIC).

Откройте MIC и найдите параметр Parent. Укажите стандартный материал, например:

Material'Env_Mat_Lib.Metal.Env_Basic_Metal_PM'

В превью появится блестящий металл. Теперь MIC наследует все свойства этого материала, а игра его знает и не грузит из другого пакета.

Редактор MIC с параметром Parent Редактор MIC со стандартным родительским материалом.

Раскройте Parameter Groups, затем Texture Parameter Values. Все флажки сняты; отметка флажка заставляет MIC переопределить параметр. Выберите диффузную текстуру в Content Browser (появится жёлтая рамка), вернитесь в окно MIC и нажмите зелёную стрелку рядом с Tex2d_Diff. Не забудьте поставить флажок, иначе превью не изменится. То же сделайте для normal и specular.

Подстановка диффузной текстуры в MIC Назначение диффузной текстуры в Tex2d_Diff.

Превью MIC с новой текстурой После отметки флажка превью показывает новую текстуру.

Настройка параметров

Кирпич не должен блестеть как металл. Откройте группу Specular и снизьте Scalar_Specular_Intensity примерно до 0.2 (поставив флажок). Значение false reflection можно обнулить. Качественные запечённые карты дадут результат лучше быстрых текстур автора.

Specular снижен до 0.2 Сниженный specular делает кирпич матовым.

Применение в карте

Перетащите миниатюру из Content Browser на поверхность или выделите поверхности, щёлкните правой кнопкой и выберите Apply Material. Сохраните через File, Save Current Level. Текстуры и MIC входят в пакет карты, поэтому карта загрузит их сама.

Готовая текстура в карте Готовая кирпичная текстура в тестовом кубе.

MIC можно делать с любым числом текстур, а также использовать со static mesh, включая собственные модели и перекраски. Для модульных карт: Static Mesh Actor, Static Mesh Component, Rendering, Materials - там задаётся свой материал.

Полезные родительские материалы

Если текстура выглядит плохо, попробуйте другой родитель:

  • Material'Env_Mat_Lib.Screen.Env_Screen_Basic_PM' - полностью светлый, подходит для экранов и ламп.
  • Material'Env_Mat_Lib.Metal.Env_Basic_Metal_PM' - очень блестящий, подходит для металла или как база для правок.
  • MaterialInstanceConstant'ENV_Paris_MAT.Building.Generic.Env_Paris_Gen_Bldg_02_Railing_LOD_MIC' - с альфой, но плоский, подходит для прозрачных текстур.

При импорте прозрачных текстур для MIC с альфой отметьте соответствующий флажок в окне импорта.

Вопросы и ответы

Почему мой собственный Material показывает шахматную клетку?
Игра не распознаёт пользовательские Material в пакете карты. Создайте MaterialInstanceConstant с родителем из стандартных материалов KF2 и переопределите его параметры текстур.
Какие настройки нужны для normal map при импорте?
Сжатие TC_NormalMap и LODGroup равный TEXTUREGROUP_WorldNormalMap.
Можно ли так делать для static mesh?
Да. MIC подходят и для перекраски существующих static mesh и для текстурирования своих через список Materials компонента Static Mesh.