Custom Textures — модификация которая позволяет заменять игровые текстуры пользовательскими файлами png.

Моды, которые нужно установить для правильный работы


Моды, требующие этот мод

Описание

Этот мод должен позволить вам заменить следующее:

  • текстуры модели игрока;
  • значки инвентаря предметов;
  • текстуры оборудования, такие как броня, оружие и инструменты;
  • текстуры ландшафта и воды;
  • текстуры окружающей среды;
  • текстуры объектов мира, почти все остальное в игровом мире.

Он также теперь поддерживает слои, поэтому вы можете применить несколько текстур к одной и той же ванильной текстуре (см. Слои ниже).

Чтобы создавать свои собственные текстуры, требуется базовое понимание прочитанного. Это не так сложно, но, пожалуйста, прочитайте всю информацию ниже тщательно, прежде чем просить о помощи.

Основное использование

Чтобы извлечь ванильные текстуры для справки, используйте Asset Studio . Текстуры находятся в файлах valheim_Data / sharedassets.

Чтобы заменить текстуру, вы просто добавляете файл png в папку BepInEx / plugins / CustomTextures с соответствующим форматом имени, описанным ниже, а затем загружаете игру.

Вы также можете организовать текстуры во вложенные папки. Если вы публикуете пакет текстур,  рекомендуем вам сделать это, чтобы упростить установку и удаление.

Кроме того, если вы публикуете пакет текстур, размещение текстур в папке CustomTextures перед созданием zip-файла позволит Vortex установить их автоматически.

Чтобы перезагрузить текстуры мира во время игры, есть горячая клавиша (по умолчанию Page Down ).

Примечание:

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

Чтобы просмотреть список модов, создающих пользовательские текстуры с помощью этого мода, нажмите « Требования» над этим описанием.

Сводка по именам файлов

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

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

<префикс> _ <идентификатор> <Имени Свойства> .png

или для слоя:

<префикс> _ <идентификатор> <Имени Свойства> _ <layerName> .png

В конечном итоге с таким именем файла, и вы помещаете его где-нибудь в папке CustomTextures .

Имена свойств обычно начинаются с символа подчеркивания, так что не забывайте и об этом. Кроме того, если у вас Windows скрывает ваши расширения файлов, не
добавляйте .png в конец, иначе вы получите файл с именем <prefix>_<identifier> <propertyName> .png.png, который не будет работать. Серьезно, просто пусть Windows показывает расширения файлов, глупо, что это не так.

Вот объяснение каждой из четырех частей:

Префиксы

Следующие префиксы реализованы в зависимости от типа изменяемого объекта:

  • player_model для текстур игроков;
  • atlas_item_icons для значков инвентаря;
  • объект для текстур объекта;
  • броня для текстур брони;
  • зона для текстур воды;
  • terrain для текстур ландшафта;
  • окружение для текстур окружения.

Для текстур объектов, воды, ландшафта и окружающей среды префикс можно изменить следующим образом:

  • <префикс> средство визуализации — для замены текстур на определенных именованных средствах визуализации на определенных именованных объектах;
  • <префикс> мат — для замены текстур на определенных именованных материалах на определенных именованных вещах;
  • <префикс> renderermat — для замены текстур на определенных именованных материалах на определенных именованных средствах визуализации на определенных именованных объектах;
  • <prefix> texture — для замены определенных именованных текстур на определенные именованные объекты.

например:

environmentrenderermat_branch_ yggdrasil_branch (Экземпляр) _MainTex.png

заменит основную текстуру материала yggdrasil_branch на рендерере ветви на объекте среды YggdrasilBranch .

Вы также можете использовать следующие префиксы в зависимости от имени компонента:

  • текстура для универсальной замены текстуры (где поддерживается);
  • рендерер для замены текстуры на любом названном рендерере;
  • мат для замены текстуры на любом названном материале;
  • Итак, более простой способ сделать это — просто: texture_yggbark_d_MainTex.png, который заменяет текстуру yggbark_d в любом месте, если это основная текстура.

Идентификаторы.

Идентификаторы, используемые с указанными выше префиксами, можно найти в дампе сцены. Подробнее об этом в каждом подробном разделе ниже.

Имена свойств

Вы также можете найти имена свойств в дампе сцены. В основном вы захотите заменить _MainTex и, возможно, _BumpMap или _SkinBumpMap .

Имена слоев:

см. Слои ниже.

Типы замены

Подробная информация о каждом типе замены:

Текстуры игрока

Для базовой текстуры персонажа игрока используйте следующий синтаксис:

player_model_ <modelNumber> <suffix> .png

Замените <modelNumber> на 0 для мужчин или 1 для женщин. Например:

player_ model_1 _MainTex .png

Значки инвентаря предметов

Это маленькие изображения, которые появляются в вашем инвентаре, чтобы представить предмет в игре. Все они находятся на одном графическом изображении с именем sactx-2048×2048-Uncompressed-IconAtlas-61238c20 # 845 .

Чтобы заменить лист значков инвентаря, создайте эквивалентный лист с именем:

atlas_item_icons.png

Вы можете использовать любое разрешение, так как оно будет масштабировано по размеру.

Вы также можете заменить значок отдельного элемента, используя слой (см. Слои ниже).

Текстуры объектов и доспехов

Примечание. Теперь все объекты снаряжения и мира считаются объектами . Мод по-прежнему распознает префикс items_ только для обратной совместимости.

Кроме моделей игроков и значков инвентаря, все остальное, на что влияет этот мод, считается объектом.

Например:

  • Ресурсы, такие как уголь и древесина;
  • Такие инструменты, как молотки и культиваторы;
  • Растения, деревья, кусты;
  • Строительные блоки;
  • Враги.

Броня — это то, как объект выглядит, когда вы его носите (в отличие от того, чтобы бросить его на землю вместе с остальным).

Общий синтаксис имени файла для всех этих вещей:

<префикс >_<идентификатор> <суффикс> .png

Префиксы:

Теперь реализованы следующие префиксы для объектов и брони:

  • object — используется для изменения всех текстур типа <suffix> на конкретном мировом типе объекта. <identifier> должно быть именем порождения объекта;
  • objectrenderer ( объектная сетка также работает, но устарела ) — используется для изменения всех текстур типа <suffix> на определенном рендерере на определенном объекте. <Идентификатор> (см идентификаторов ) должно быть имя объекта и имя рендерера, разделенное подчеркивание: <ObjectName> _ <rendererName>;
  • objecttexture — используется для изменения определенной именованной текстуры типа <suffix> на каждом рендерере определенного объекта. <Идентификатор> (см идентификаторов ) должно быть имя объекта и имя текстуры, разделенное подчеркивание: <ObjectName> _ <textureName>;
    objectmat — используется для изменения текстур на всех специально названных материалах на определенном объекте. <Идентификатор> (см идентификаторов ) должно быть имя объекта и название материала, разделенное подчеркивание: <ObjectName> _ <materialName>;
  • objectrenderermat — используется для изменения текстуры материала с конкретным именем в модуле визуализации с конкретным именем на конкретном объекте. <Идентификатор>(смидентификаторов) должно быть имя объекта и название материала, разделенное подчеркивание:<ObjectName>_ < rendererName >_ <materialName>;
  • текстура — используется для изменения всех экземпляров определенной текстуры типа <suffix> на всех объектах и ​​элементах, которые используют эту текстуру. <Идентификатор> (см идентификаторов ) должно быть имя текстуры (не обязательно экспортируемое имя файла!);
    рендерер — используется для изменения текстур типа <суффикс> на всех экземплярах определенного рендерера на всех объектах и ​​элементах. <Идентификатор> (см идентификаторов ) должно быть имя визуализатора;
  • mat — используется для изменения текстур типа <suffix> на всех экземплярах определенного материала на всех объектах и ​​элементах. <Идентификатор> (см Идентификаторы ) должно быть название материала;
  • броня — используется для изменения сундука или ног предметов брони — обратите внимание, что на остальные части брони влияет объект, а не он.

Суффиксы:

Примечание:

суффиксы были переработаны. Старые суффиксы _texture и _bump по-прежнему распознаются, но их следует заменить фактическим именем свойства.

Суффиксы сообщают моду, какую текстуру вы хотите заменить, называемые « свойствами ».

Дамп сцены дает список свойств для каждого материала объекта, например:

объект ArmorIronChest имеет 1 SkinnedMeshRenderers:

  • SkinnedMeshRenderer имя: IronArmor
  • smr IronArmor имеет 1 материал
  • IronArmorChest_mat (Instance):
    properties:
  • MainTex
  • IronArmorChest_d _BorumpMap
  • EmissionMap
  • MetallicGlossMap IronArmorChest_m
  • StyleTex
  • броня ArmorIronChest имеет Материал:
    имя Броня: IronArmorPlayer_chest
    свойство:
  • MainTex
  • ChestBumpMap IronArmorChestPlayer_n
  • ChestMetal IronArmorChestPlayer_m
  • ChestTex IronArmorChestPlayer_d
  • LegsBumpMap
  • LegsMetal
  • LegsTex
  • SkinBumpMap.

Этот объект имеет как кожуру сетки визуализатора и броневой материал. Они отдельные. Объект это все причудливые элементы, которые застревают в плеере. Броня является текстурой , которая получает наклеенную на ноги игрока и грудь. Каждое свойство отображается с именем текстуры (если оно есть), например имя _MainTex объекта — IronArmorChest_d . _MainTex относится к основной текстуре. В основном это тот, который вы хотите заменить. Однако для брони замена _MainTex может ничего не сделать — замена его прозрачной текстурой, кажется, работает лучше всего. Чтобы изменить фактическую броню, вам нужно использовать _ChestTex и / или _LegsTex и убедиться, что они покрывают только область реальной брони (см. Экспортированный IronArmorChestPlayer_m .png

Например:

Итак, вам нужно создать следующее:

object_ ArmorIronChest_MainTex.png
armor _ ArmorIronChest _ChestTex.png

Armoris сложный, лучше всего поэкспериментировать. Идентификаторы Чтобы получить идентификаторы для объектов, используйте имена в списке появления здесь: https://www.reddit.com/r/valheim/comments/lig8ml/spawn_item_command_list/ Они также будут в дампе сцены, упомянутом выше.

Вода и Terrain текстуры для воды и местность текстура использует аналогичный синтаксис для объектов, то есть: <префикс> _ <идентификатор> <Суффикс> .png Вода Вода текстура внутри объектов зоны, поэтому на свалке сцены теперь вы увидите: зона _GameMain имеет 2 MeshRenderers:

MeshRenderer имя: водная поверхность
г — н водной поверхности имеет 1 Материалы
воды (Instance):

свойства:

  • FoamTex пена
  • Normal nRHPu
  • FoamHighTex foam_highres
  • NormalFine normalmap2
  • RandomFoamTex random_foam
  • MeshRenderer Название: sub_water_opak_thingyu
  • г — н sub_water_opak_thingyu имеет 1 Материалы.

water_bottomplane (Instance):

Свойства:

Префикс здесь зона , так что используйте , например:

zone__GameMain_FoamTex.png (обратите внимание на двойное подчеркивание!)

Ландшафт

Сразу после входа зоны, вы увидите:

рельеф местности _GameMain, сборные _Zone (UnityEngine.GameObject)

свойства:

  • MainTex трава
  • NoiseTex Шум
  • ClearedMaskTex
  • CliffNormal gouacherock_big_n
  • CultivatedNormal cultivated_n
  • DiffuseTex0 diffuse0
  • DirtNormal dirt_normal_generated
  • ForestNormal forest_n
  • GrassNormal grass_normal_generated
  • PavedNormal paved_n
  • RockNormal gouacherock_n
  • SnowNormal snow_normal.

Приставка здесь рельеф местности , поэтому использование, например:

terrain__GameMain_DiffuseTex0.png diffuse0 текстуры , как представляется , имеет шестнадцать плитки с различными типами рельефа на нем. Вы можете увидеть пример его использования на скриншотах. Текстуры окружающей среды Текстуры окружающей среды — это такие вещи, как дождь, облака, туман и это большое дерево в небе. Дамп сцены показывает, например: environment YggdrasilBranch имеет 1 MeshRenderers: MeshRenderer name: branch mr branch имеет 2 материала yggdrasil_branch (Instance):

характеристики:

  • MainTex yggbark_d _BumpMap yggbark_n
  • EmissiveTex yggdrasil_emissive
  • MossTex ygg_moss
  • EmissiveMaskTex yggdrasil_emissivmask
  • RefractionNormal

yggdrasil_branch_leafs (экземпляра):

свойства:

  • MainTex ygg_leaf_d
  • BumpMap ygg_leaf_n
  • EmissiveTex
  • MossTex
  • EmissiveMaskTex
  • RefractionNormal.

Таким образом, как упоминалось выше:

environmentrenderermat_branch_ yggdrasil_branch (Instance) _MainTex.png

заменит основную текстуру наyggdrasil_branch (Instance) материал на ветви визуализатора, на YggdrasilBranch объекта окружающей среды.

Слои

Слои позволяют накладывать частичную текстуру поверх существующей или измененной текстуры. Для всего, кроме спрайтов, это работает одинаково:

Слои текстуры

Чтобы добавить слой к чему-либо, кроме таблицы спрайтов, используйте тот же синтаксис, как если бы вы заменяли этот тип текстуры в соответствующем разделе выше, и добавьте _ <YourLayerName> в конец. Итак, для текстуры глаза игрока мода под названием RealEyes это будет:

player_model_0_MainTex_RealEyes.png

<YourLayerName> может быть установлен как угодно, если он уникален ине содержит подчеркиваний .

Слои

спрайтов Слои спрайтов для листа значков элементов работают по-другому, полностью перезаписывая фрагмент листа спрайтов. В результате слой спрайта png должен быть размером только с патчем, который вы хотите заменить. Формат файла для слоев значков элементов следующий:

atlas_item_icons_ <startX> _ <startY> _ <sheetWidth> _ <sheetHeight> .png

Это связано с тем, что вы можете работать с масштабированными текстурами, поэтому вам нужно сообщить моду, насколько велик теоретический лист, с которым вы работаете, есть. Мод сравнит его с существующим листом (или листом, замененным другой текстурой) и определит масштаб текстуры вашего слоя на его основе. Итак, чтобы заменить текстуру деревянного щита, например, я использую png размером 64×64 пикселя:

atlas_item_icons_1224_1840_2048_2048.png

Это говорит о том, что мой png из листа размером 2048×2048 пикселей (равен размеру ванильного листа) и для замены существующего листа моим png размером 64×64 пикселя, начиная с пикселя 1224×1840 в верхнем левом углу.

Примеры

Давайте возьмем пример из дампа сцены:

объект VikingShip имеет 1 SkinnedMeshRenderers:
SkinnedMeshRenderer имя: sail_full
smr sail_full имеет 1
парус материалов (Instance):

характеристики:

  • MainTex sail_diffuse
  • BumpMap sail_normal
  • EmissiveTex
  • MossTex

Вы можете выбрать, какой префикс и идентификатор использовать, в зависимости от того, что вы хотите сделать:

1. Установить все текстуры для типа объекта

object_VikingShip_MainTex.png

Это заменяет основную текстуру каждого материала в объекте, поэтому, если объект использует несколько текстур, он вероятно, не сработает. В нашем примере это не сработает, так как на корабле есть несколько MeshRenderers. Если мы хотим изменить карту рельефа, мы можем использовать:

object_VikingShip_BumpMap .png

2. Установить все экземпляры текстуры

texture_sail_diffuse_MainTex.png

Это заменяет все текстуры с именем sail_diffuse , поэтому должен быть затронут каждый объект, использующий эту текстуру. В нашем примере он заменит
плывет и на других типах кораблей, если они используют эту текстуру.

3. Установите текстуру для одиночной сетки для типа объекта

objectrenderer_VikingShip_sail_full _MainTex .png

Это заменит текстуру любого средства визуализации с именем sail_full на всех объектах VikingShip .

4. Задайте текстуру по имени для типа объекта

objecttexture _VikingShip_ sail_diffuse _MainTex.png

Это заменит любую текстуру с именем sail_diffuse на всех объектах VikingShip .

5. Установите частичный слой текстуры.

В качестве альтернативы любой из приведенных выше примеров можно добавить как частичный слой, добавив имя слоя в конце. Итак, если вы просто хотите добавить декаль на парус корабля викингов, вы можете сделать:

objecttexture_VikingShip_sail_diffuse_MainTex_CoolSkullAndCrossBones.png

Конфиг

Конфигурационный файл BepInEx / config / aedenthorn.CustomTextures.cfg создается после запуска игры с этим модом один раз).

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

Дамп сцены

Чтобы получить всю информацию, необходимую для создания названий выше, установите для параметра конфигурации DumpSceneTextures значение true , затем запустите игру и загрузите ее в свой мир один раз. ФайлBepInEx / plugins / CustomTextures / scene_dump.txt должен быть создан. Вы можете вернуть для него значение false после того, как вы сбросили текстуры, в противном случае он будет воссоздавать файл каждый раз, когда вы запускаете игру.

Изменения: Исправлена ​​ошибка, из-за которой не загружался дамп всей сцены. Убрано отслеживание незатронутых объектов.
Комментарии

Комментарии могут писать только зарегистрированные пользователи, пройдите быструю регистрацию.

Загрузка комментариев
Последние комментарии
Equipment and Quick Slots — Снаряжение и быстрые слоты dixakman dixakman 18 марта в 20:45

Добавьте побольше модов на оружие, на огнемет какой нибудь)) будет вообще круто!

BetterUI — улучшение интерфейса Valheim Анна Подольская Анна Подольская 23 марта в 20:39

dixakman, да ну вроде все понятно)