Позволяет заменять игровые текстуры на пользовательские 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.pngmat_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.png2. Установить все экземпляры текстуры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.