Custom Textures — Пользовательские текстуры
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 после того, как вы сбросили текстуры, в противном случае он будет воссоздавать файл каждый раз, когда вы запускаете игру.
Комментарии могут писать только зарегистрированные пользователи, пройдите быструю регистрацию.