Пользовательские текстуры

Автор:aedenthornПоследнее обновление:22/02/2025 06:26:45240.9K15KB

Valheim Пользовательские текстуры-1-lagofast mod master
Valheim Пользовательские текстуры-2-lagofast mod master
Valheim Пользовательские текстуры-3-lagofast mod master
Valheim Пользовательские текстуры-4-lagofast mod master
Valheim Пользовательские текстуры-5-lagofast mod master
Valheim Пользовательские текстуры-6-lagofast mod master
Valheim Пользовательские текстуры-7-lagofast mod master
Valheim Пользовательские текстуры-8-lagofast mod master
Valheim Пользовательские текстуры-1-lagofast mod master
Valheim Пользовательские текстуры-2-lagofast mod master
Valheim Пользовательские текстуры-3-lagofast mod master
Valheim Пользовательские текстуры-4-lagofast mod master
Valheim Пользовательские текстуры-5-lagofast mod master
Valheim Пользовательские текстуры-6-lagofast mod master
Valheim Пользовательские текстуры-7-lagofast mod master
Valheim Пользовательские текстуры-8-lagofast mod master

Введение в мод

Позволяет заменять игровые текстуры на пользовательские PNG-файлы.
Описание

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

  • текстуры модели игрока
  • иконки предметов инвентаря
  • текстуры снаряжения, такие как броня, оружие и инструменты
  • текстуры рельефа и воды
  • текстуры окружения
  • особые текстуры локаций (деревни, склепы, рунические камни и т. д.)
  • текстуры объектов мира, почти всё остальное в игровом мире

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

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


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

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

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

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

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


Чтобы перезагрузить текстуры мира во время игры, есть горячая клавиша (по умолчанию Page Down). Примечание: это не перезагружает стандартные текстуры, поэтому если вы удалите файл пользовательской текстуры, вам придётся перезапустить игру, чтобы снова увидеть стандартную текстуру.

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

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


Режим фильтрации

Текстуры Valheim используют точка фильтрацию, из-за чего вблизи они выглядят пиксельными. Если вы хотите использовать билинейный или трилинейный фильтрация для текстур более высокого разрешения, поместите ваши текстуры в подпапку с именем билинейный или трилинейная и мод изменит режим фильтрации для этих текстур (они всё ещё могут находиться во вложенных подпапках, если вы выберете это).


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

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

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

<prefix>_<identifier><propertyName>.png

или для слоя:

<prefix>_<identifier><propertyName>_<layerName>.png

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

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

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

Префиксы

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

  • модель_игрока для текстур игрока
  • атлас_иконок_предметов для иконок инвентаря
  • объект для текстур объектов
  • броня для текстур брони
  • зона для текстур воды
  • местность для текстур ландшафта
  • окружение для текстур окружения
  • локация для особых локаций

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

  • <prefix>рендерер - для замены текстур на определённых именованных рендерерах у определённых именованных объектов
  • мат - для замены текстур на определённых именованных материалах на определённых именованных объектах
  • рендерермат - для замены текстур на определённых именованных материалах на определённых именованных рендерерах у определённых именованных объектов
  • <prefix>текстура - для замены конкретных именованных текстур на конкретных именованных объектах

например:

environmentrenderermat_YggdrasilBranch_branch_ветвь Иггдрасиля (экземпляр)_MainTex.png

заменит основную текстуру на ветвь Иггдрасиля (экземпляр) материал на ветвь рендерер на Ветвь Иггдрасиля объект окружения.

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

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

texture_yggbark_d_MainTex.png
mat_yggdrasil_branch (Instance)_MainTex.png


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

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


Названия свойств

Имена свойств также можно найти в дампе сцены. В большинстве случаев вам нужно заменить _MainTex а может быть _BumpMap или _КартаРельефаСкина.


Названия слоёв:

Смотреть Слои ниже.


Типы замены

Вот подробности о каждом типе замены:

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

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

player_model_<modelNumber><suffix>.png


Заменить <modelNumber> с любым из 0 для мужчин или 1 для женского пола. Например:

player_model_1_MainTex.png


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

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

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

atlas_item_icons.png


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

Вы также можете заменить значок одного предмета с помощью слоя (см. Слои ниже).


Объект и текстуры брони

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

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

Например:

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

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


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

<prefix>_<identifier><suffix>.png


Префиксы:

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

  • объект - используется для изменения всех текстур этого типа <suffix> на определённом типе объекта мира. <идентификатор> должно быть именем спавна объекта
  • objectrenderer (objectmesh также работает, но устарело) - используется для изменения всех текстур данного типа <suffix> на конкретном рендерере на конкретном объекте. <идентификатор> (см. Идентификаторы) должно быть именем объекта и именем рендерера, разделёнными подчёркиванием: <objectName>_<rendererName>
  • текстура объекта - используется для изменения конкретной именованной текстуры этого типа <suffix> на каждом рендерере на конкретном объекте. <идентификатор> (смотри Идентификаторы) должно быть именем объекта и именем текстуры, разделёнными подчёркиванием: <objectName>_<textureName>
  • объектмат - используется для изменения текстур на всех специально именованных материалах конкретного объекта. <идентификатор> (смотреть Идентификаторы) должно быть именем объекта и именем материала, разделёнными подчёркиванием: <objectName>_<materialName>
  • объектрендерермат - используется для изменения текстур на конкретно названном материале на конкретно названном рендерере конкретного объекта. <идентификатор> (смотреть Идентификаторы) должно быть именем объекта и именем материала, разделёнными подчёркиванием: <objectName>_<rendererName>_<materialName>
  • текстура - используется для замены всех экземпляров определённой текстуры данного типа <suffix> на всех объектах и предметах, использующих эту текстуру. <идентификатор> (смотреть Идентификаторы) должно быть именем текстуры (не обязательно именем экспортированного файла!)
  • рендерер - используется для изменения текстур этого типа <suffix> на всех экземплярах конкретного рендерера на всех объектах и предметах. <идентификатор> (смотреть Идентификаторы) должно быть именем рендерера.
  • мат - используется для изменения текстур типа <suffix> на всех экземплярах определённого материала на всех объектах и предметах. <идентификатор> (смотреть Идентификаторы) должно быть названием материала.
  • броня - используется для изменения нагрудника или поножей брони — учтите, что остальные части брони подвержены влиянию объект_ а не это.


Суффиксы:

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

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

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

объект ArmorIronChest имеет 1 SkinnedMeshRenderer:
    Имя SkinnedMeshRenderer: IronArmor
        смр IronArmor имеет 1 материал
            БроняЖелезнаяНагрудник_мат (Экземпляр):
                свойства:
                    _MainTex IronArmorChest_d
                    _BumpMap IronArmorChest_n
                    _EmissionMap
                    _MetallicGlossMap IronArmorChest_m
                    _StyleTex
Броня ArmorIronChest имеет материал:
    Название брони: IronArmorPlayer_chest
                свойства:
                    _MainTex
                    _СундукКартаЖелезнаяБроняГрудьИгрок_n
                    _СундукМеталлЖелезнаяБроняСундукИгрок_m
                    _СундукТекст БроняЖелезнаяСундукИгрок_d
                    _LegsBumpMap
                    _Металлические ноги
                    _НогиТекс
                    _КартаРельефаСкина

У этого объекта есть и рендерер сканированной сетки, и материал брони. Они отдельные.

Определённый артикль объект это все те навороченные штуки, которые прилипают к игроку.

The броня это текстура, которая накладывается на ноги и грудь игрока.

Каждое свойство отображается с названием своей текстуры (если оно есть), например, названием объекта _MainTex is ЖелезныйНагрудник_d.

_MainTex
относится к основной текстуре. В большинстве случаев именно её вы и хотите заменить. Однако для брони замена _MainTex может ничего не дать — лучше всего работает замена её на прозрачную текстуру. Чтобы изменить саму броню, нужно использовать _СундукТекс и / или _НогиТекс и убедитесь, что он покрывает только область самой брони (см. экспортированный БроняЖелезнаяНагрудникИгрок_м.png например). Итак, вам нужно создать следующее:

object_ArmorIronChest_MainTex.png
броня_БроняЖелезныйНагрудник_ChestTex.png

Броня — штука сложная, лучше экспериментируй!


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

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

https://www.reddit.com/r/valheim/comments/lig8ml/spawn_item_command_list/

Они также будут в дампе сцены, упомянутом выше.


Текстуры воды и ландшафта

Текстуры воды и ландшафта используют синтаксис, аналогичный объектам, то есть:

<prefix>_<identifier><suffix>.png


Вода

Текстуры воды находятся внутри объектов зон, поэтому в дампе сцены вы теперь увидите:

Зона _GameMain содержит 2 MeshRenderer:
    MeshRenderer name: WaterSurface
        У г-на WaterSurface есть 1 материал
            вода (Instance):
                свойства:
                    _ПенаТекс пена
                    _Обычный nRHPu
                    _ПенаВысокоеКачество пена_высокое_разрешение
                    _NormalFine normalmap2
                    _СлучайнаяТекстураПены random_foam
    MeshRenderer имя: sub_water_opak_thingyu
        мистер sub_water_opak_thingyu имеет 1 материал
            water_bottomplane (Экземпляр):
                свойства:


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

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


Местность

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

terrain _GameMain, prefab _Zone (UnityEngine.GameObject)
                свойства:
                    _MainTex трава
                    _NoiseTex Шум
                    _ОчищеннаяМаскаТекстуры
                    _CliffNormal gouacherock_big_n
                    _КультивированныйНормальный cultivated_n
                    _DiffuseTex0 diffuse0
                    _ГрязьОбычная грязь_обычная_сгенерированная
                    _ЛеснойОбычный forest_n
                    _ТраваОбычная grass_normal_generated
                    _МощёныйОбычный мощёный_н
                    _RockNormal gouacherock_n
                    _SnowNormal снег_обычный


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

terrain__GameMain_DiffuseTex0.png

Определённый артикль diffuse0 Текстура, по-видимому, содержит шестнадцать тайлов с различными типами местности. Пример её использования можно увидеть на скриншотах.


Текстуры окружения

Текстуры окружения — это всякие там дождь, облака, туман и эта здоровенная древесная хреновина в небе.

Дамп сцены показывает, например:

environment YggdrasilBranch имеет 1 MeshRenderers:
    Название MeshRenderer: branch
        У мистера Бранча есть 2 материала
            ветвь иггдрасиля (экземпляр):
                свойства:
                    _MainTex yggbark_d
                    _BumpMap yggbark_n
                    _EmissiveTex yggdrasil_emissive
                    _МоссТекс ygg_мох
                    _EmissiveMaskTex yggdrasil_emissivmask
                    _RefractionNormal
            ветви_листья_иггдрасиля (Экземпляр):
                свойства:
                    _MainTex ygg_leaf_d
                    _BumpMap ygg_leaf_n
                    _EmissiveTex
                    _MossTex
                    _EmissiveMaskTex
                    _RefractionNormal



Итак, как упоминалось выше:

environmentrenderermat_branch_ветвь Иггдрасиля (экземпляр)_MainTex.png

заменит основную текстуру на ветвь Иггдрасиля (экземпляр) материал на ветвь рендерер, на Ветвь Иггдрасиля объект окружения.


Особые места

Префабы локаций отделены от остальных моделей игры, поэтому с ними нужно работать отдельно. У них много рендереров, так что их перебор может занимать много времени. По этой причине вы можете отключить замену локаций в конфиге. Кроме того, локации должны использовать локация префикс (текстура_ не будет иметь эффекта).


Слои

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


Слои текстур

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

player_model_0_MainTex_RealEyes.png

<НазваниеСлоя> можно задать любое значение, главное чтобы оно было уникальным и не содержит символов подчёркивания.


Слои спрайтов

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

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

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

atlas_item_icons_1224_1840_2048_2048.png

Это указывает ему, что мой png взят из листа 2048x2048 пикселей большой (равный размеру стандартного листа), и заменить существующий лист моим PNG-файлом 64x64 пикселя, начиная с пикселя 1224x1840 как верхний левый угол.


Примеры

Возьмём пример из дампа сцены:

object VikingShip имеет 1 SkinnedMeshRenderers:
    Имя SkinnedMeshRenderer: sail_full
        smr sail_full имеет 1 материал
            парус (Экземпляр):
                свойства:
                    _MainTex sail_diffuse
                    _BumpMap sail_normal
                    _EmissiveTex
                    _MossTex


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


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

object_VikingShip_MainTex.png

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

object_VikingShip_BumpMap.png


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

texture_sail_diffuse_MainTex.png

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


3. Установите текстуру для отдельного меша на типе объекта

objectrenderer_VikingShip_sail_full_MainTex.png

Это заменит текстуру любого рендерера с именем парус_полный включить всё Викингский корабль объекты.


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

текстура объекта_Викингский корабль_sail_diffuse_MainTex.png

Это заменит любую текстуру с именем парус_диффузный включено везде Варяг объекты.


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

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

objecttexture_VikingShip_sail_diffuse_MainTex_CoolSkullAndCrossBones.png



Конфигурация

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

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



Дамп сцены

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


Этот мод всё ещё находится в разработке.



Технический

Чтобы установить этот мод, проще всего просто использовать Вортекс, менеджер модов Nexus Mods. Он должен позаботиться обо всех зависимостях.

Для ручной установки поместите файл dll в папку BepInEx/plugins. Вам потребуется BepInEx.

Код находится в https://github.com/aedenthorn/ValheimMods.

Если вы хотите пожаловаться, попросить помощи или помочь мне тестировать мои моды, вы можете посетить Мой сервер Discord.

Нажмите здесь, чтобы просмотреть список всех моих модов для Valheim.
Этот инструмент предоставлен сторонним разработчиком [bufftool]Внимание (Нормальное)

Загрузите моды сейчас

Установите LagoFast, запустите Valheim и играйте с модами, которые вам нравятся.