自定义纹理

创作者: aedenthorn
已更新:2025-02-22 06:26:45
15KB

关于此 MOD

允许你用自定义png文件替换游戏纹理实例。
描述

这个模组应该允许你替换以下内容:

  • 玩家模型纹理
  • 物品栏图标
  • 盔甲、武器和工具等装备纹理
  • 地形和水面纹理
  • 环境纹理
  • 特殊地点纹理(村庄、地穴、符文石等)
  • 世界物体纹理,游戏世界中的几乎其他所有内容

现在还支持图层,因此你可以将多个纹理应用到同一个原版纹理上(见 图层 如下)。

要创建你自己的自定义纹理需要基本的阅读理解能力!这并不难,但请阅读下面的所有信息 小心地 在寻求帮助之前。


基本用法

为了提取原版纹理作为参考,我使用 资产工作室纹理在 瓦尔海姆_数据/共享资源 文件。

要替换纹理,只需添加一个 png 将文件移到该文件夹 BepInEx/plugins/CustomTextures 使用下面说明的正确名称格式,然后加载游戏。

你也可以将纹理整理到子文件夹中!如果你要发布纹理包,我鼓励你这样做,以便于轻松安装和移除。

另外,如果你要发布材质包,在创建zip文件之前把材质放进CustomTextures文件夹,Vortex就能自动安装它们!


要在游戏内重新加载世界纹理,有一个快捷键(默认 下一页)。注意:这不会重新加载任何原版纹理,因此如果你删除了自定义纹理文件,必须重启游戏才能再次看到原版纹理。

点击此处查看使用此模组创建自定义纹理的模组列表 需求 在这段描述上方。

这是某位好心人制作的视频,讲解如何将此模组与预制纹理包配合使用。


过滤模式

英灵神殿纹理使用 点 过滤,这使它们在近距离看起来有像素感。如果你想使用 双线性 或 三线性 正在筛选更高分辨率纹理,请将您的纹理放入名为 双线性 或 三线性 并且模组会更改这些纹理的过滤模式(如果你选择的话,它们仍然可以放在子子文件夹中)。


文件命名摘要

文件名最多由四部分组成:前缀、标识符、属性名称和层级名称。要获取大部分此类信息,请使用场景转储(参见 场景转储 以下)

你创建文件名时以一个前缀开头,通常后跟一个下划线,然后是一个标识符,接着是属性名(还可以选择后跟一个下划线和图层名称,详见 图层),即完整的纹理替换:

<前缀>_<标识符><属性名>.png

或对于图层:

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

你最终会得到一个像这样的文件名,然后把它放在 自定义纹理 文件夹。

属性名通常以下划线开头,所以别忘了这一点。另外,如果你的Windows隐藏了文件扩展名,不要
添加 .png 坚持到底,否则你最终会得到一个名为 <前缀>_<标识符><属性名称>.png.png 这样行不通。说真的,让Windows显示文件扩展名吧,不显示真是太蠢了。

下面是这四个部分的解释:

前缀

以下前缀已根据所修改内容的类型实现:

  • 玩家模型 用于玩家纹理
  • 图集物品图标 用于物品栏图标
  • 对象 用于物体纹理
  • 护甲 用于盔甲纹理
  • 区域 水面纹理
  • 地形 用于地形纹理
  • 环境 环境纹理
  • 位置 用于特殊地点

对于物体、水体、地形、环境及地点纹理,前缀可进一步按如下方式修改:

  • <前缀>渲染器 - 用于替换特定命名事物上特定命名渲染器的纹理
  • <前缀>材质 - 用于替换特定命名物品上特定命名材质的纹理
  • <prefix>渲染器材质 - 用于替换特定命名事物上特定命名渲染器上特定命名材质的纹理
  • <prefix>纹理 - 用于替换特定命名物体上的特定命名纹理

例如:

环境渲染材质_世界树树枝_树枝_世界树之枝(副本)_MainTex.png

将替换主纹理于 世界树之枝(副本) 材料在 分支 渲染器开启 世界树之枝 环境物体。

你也可以根据组件名称使用以下前缀:

  • 纹理 用于全局替换纹理(在支持的情况下)
  • 渲染器 用于替换任何命名渲染器上的纹理
  • 垫子 用于替换任何已命名材质上的纹理:
那么,完成上述操作的更简单方法有:

树皮纹理_d_MainTex.png
世界树之枝(实例)_主纹理.png


标识符

你可以在场景转储中找到与上述前缀一起使用的标识符。更多内容见下方各详细章节。


属性名称

你也可以在场景转储中找到属性名称。大多数情况下,你会想要替换 主纹理 也许 凹凸贴图 或 _皮肤凹凸贴图.


图层名称:

查看 图层 以下。


替换类型

以下是每种替换类型的详细信息:

玩家材质

对于基础玩家角色纹理,请使用以下语法:

玩家模型_<模型编号><后缀>.png


替换 <模型编号> 以任意一种方式 0 男性或 1 供女性使用。例如:

玩家_模型_1主纹理.png


物品栏图标

这些是库存中显示的小图像,用来代表游戏内的物品。它们都在一张称为 sactx-2048x2048-Uncompressed-IconAtlas-61238c20 #845.

要替换物品栏图标表,请创建一个同等的表,命名为:

图集_物品_图标.png


你可以使用任何分辨率,它会自动缩放以适应。

你也可以使用图层替换单个物品图标(参见 图层 以下)。


对象 和护甲纹理

注:
装备和世界物体现在都被视为 物件。该模组仍会识别 物品_ 前缀,仅为向后兼容。

除了玩家模型和物品栏图标外,此模组影响的其他所有内容都被视为 对象.

例如:

  • 煤和木材等资源
  • 锤子和耕耘机之类的工具
  • 植物、树木、灌木
  • 积木
  • 敌人

护甲 是你穿戴它时的样子(而不是跟其他破烂一起扔在地上时的样子)。


所有这些内容的通用文件名语法是:

_<标识符>.png


前缀:

以下对象和护甲的前缀现已实装:

  • 物体 - 用于更改该类型的所有纹理 <suffix> 在特定的世界对象类型上。 <标识符> 应该是生成对象的名称
  • 对象渲染器 (网格对象 也可行,但已弃用) - 用于更改该类型的所有纹理 <suffix> 在特定对象的特定渲染器上。 <标识符> (见 标识符) 应为对象名和渲染器名,用下划线分隔: <objectName>_<rendererName>
  • 对象纹理 - 用于更改该类型中特定命名的纹理 <suffix> 在每个渲染器上针对特定对象。该 <标识符> (见 标识符)应为对象名称和纹理名称,两者之间用下划线分隔: <objectName>_<textureName>
  • 物品材质 - 用于更改特定对象上所有指定名称材质的纹理。该 <标识符> (见 标识符) 应为对象名称和材质名称,以下划线分隔: <对象名>_<材料名>
  • 对象渲染材质 - 用于更改特定对象上特定渲染器中特定命名材质的纹理。该 <标识符> (见 标识符) 应为对象名称和材质名称,以下划线分隔: <对象名称><渲染器名称><材料名称>
  • 纹理 - 用于更改该类型特定纹理的所有实例 <suffix> 所有使用该纹理的对象和物品上。 <标识符> (见 标识符) 应该是纹理名称(不一定是导出的文件名!)
  • 渲染器 - 用于更改该类型的纹理 <suffix> 在所有对象和物品上特定渲染器的所有实例上。 <标识符> (见 标识符) 应为渲染器名称。
  • 垫子 - 用于更改该类型的纹理 <suffix> 在所有对象和物品上的特定材质的所有实例上。 <标识符> (见 标识符)应为材料名称。
  • 护甲 - 用于更改护甲物品的胸甲或护腿 - 请注意,护甲的其余部分会受到以下影响 对象_ 而不是这个。


后缀:

注意:后缀已全面重做。旧后缀的 纹理 和 碰撞 仍然可以识别,但应替换为实际的属性名称。

后缀告诉模组你想替换哪个纹理,称为“属性。

场景转储会列出对象上每个材质的属性,例如:

对象 ArmorIronChest 拥有 1 个 SkinnedMeshRenderers:
    蒙皮网格渲染器名称:铁甲
        铁甲需要1个材料
            铁甲胸甲_材质(实例):
                属性:
                    主纹理 铁甲胸甲_d
                    _凹凸贴图 铁甲胸甲_n
                    _发射贴图
                    金属光泽贴图 铁甲胸甲_m
                    样式纹理
盔甲 ArmorIronChest 拥有材质:
    护甲名称:IronArmorPlayer_chest
                属性:
                    主纹理
                    铁甲胸甲玩家碰撞贴图_n
                    _金属铁甲胸甲玩家_m
                    铁甲胸甲玩家
                    _腿部凹凸贴图
                    金属腿
                    _腿部纹理
                    _皮肤凹凸贴图

此对象同时具有蒙皮网格渲染器和护甲材质。它们是分开的。

这 对象 是所有粘在玩家身上的花哨玩意儿。

该 护甲 是贴在玩家腿部和胸部的纹理。

每个属性都会显示其纹理名称(如果有的话),例如对象的名称 主纹理 是 铁甲胸甲_d.

主纹理
指的是主纹理。大多数情况下,这就是你想要替换的那个。不过对于护甲来说,替换_MainTex可能不会起作用——用透明纹理来替换似乎效果最好。要改变实际的护甲,你需要使用 宝箱纹理 和/或 腿部纹理 并确保它只覆盖实际护甲的区域(参见导出的 铁甲胸甲玩家_m.png 例如)。所以,你需要创建以下内容:

对象_护甲铁胸甲_主纹理.png
护甲_铁甲胸甲宝箱纹理.png

护甲系统很复杂,最好自己试试!


标识符

要获取对象的标识符,请使用此处生成列表中的名称:

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

他们也会出现在上述的场景转储中。


水和地形纹理

水和地形纹理使用与对象类似的语法,即:

<前缀>_<标识符><后缀>.png


水

水面纹理位于区域对象内部,因此在场景转储中你现在会看到:

区域 _GameMain 有 2 个网格渲染器:
    网格渲染器名称:水面
        水面先生有1个材质
            水(实例):
                属性:
                    泡沫纹理
                    普通 nRHPu
                    _FoamHighTex 高分辨率泡沫纹理
                    普通精细法线贴图2
                    _随机泡沫纹理 随机泡沫
    网格渲染器名称:sub_water_opak_thingyu
        sub_water_opak_thingyu先生有1个材料
            水底面(实例):
                属性:


这里的前缀是 区域,所以使用,例如:

泡沫纹理 (注意双下划线!)


地形

进入区域后,你会立刻看到:

地形 _GameMain,预制体 _Zone(UnityEngine.GameObject)
                属性:
                    主纹理 草地
                    噪声纹理 噪声
                    _已清理遮罩纹理
                    _崖壁普通 岩彩大_北
                    已培育普通作物
                    _DiffuseTex0 漫反射0
                    _泥土法线 dirt_normal_generated
                    森林_n
                    _GrassNormal 普通草地_生成
                    _铺装普通 paved_n
                    _岩石普通 水粉岩石_n
                    雪地普通 snow_normal


这里的前缀是 地形,所以使用,例如:

地形__GameMain_DiffuseTex0.png

那个 漫反射0 纹理上似乎有十六个格子,每个格子包含不同的地形类型。你可以在截图中看到它的使用示例。


环境纹理

环境纹理包括雨、云、雾,还有天上那棵巨大的树状物。

场景转储显示,例如:

环境 YggdrasilBranch 有 1 个 MeshRenderers:
    网格渲染器名称:分支
        分支先生有2份材料
            尤克特拉希尔之枝(实例):
                属性:
                    主纹理 yggbark_d
                    _凹凸贴图 yggbark_n
                    自发光贴图 yggdrasil_emissive
                    苔藓纹理 ygg_moss
                    _EmissiveMaskTex yggdrasil_emissivmask
                    折射正常
            世界树之枝树叶(实例):
                属性:
                    主纹理 世界树之叶_深度
                    凹凸贴图 世界树之叶 法线
                    自发光纹理
                    苔藓纹理
                    自发光遮罩纹理
                    _折射法线



那么,如上所述:

环境渲染器材质分支_世界树之枝(副本)主纹理.png

将替换以下内容的主纹理: 世界树之枝(实例) 材质 分支 渲染器,在 世界树之枝 环境对象。


特殊地点

地点预制体与游戏的其他模型是分开的,因此必须单独处理。它们有大量渲染器,所以遍历起来可能非常耗时。出于这个原因,你可以在配置中禁用地点替换。此外,地点必须使用 地点 前缀 (纹理_ 将不会产生任何效果)。


图层

图层允许你在现有或修改后的纹理之上应用部分纹理。除了精灵之外,其他所有内容的工作方式都相同:


纹理层

要为除精灵图以外的任何内容添加图层,请使用与上述相应部分中替换该类型纹理时相同的语法,并添加 _<你的层名称> 到最后。所以,对于一个叫做 真实之眼,那就是:

player_model_0_MainTex_RealEyes.png

<你的图层名称> 可以随意设置,只要它唯一且 不包含任何下划线.


精灵图层

物品图标表的精灵图层工作方式不同,会完全覆盖精灵表的一块区域。因此,精灵图层png的大小应仅为你想要替换的那块区域的大小。物品图标图层的文件格式如下:

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

这是因为你可能正在使用放大后的纹理,所以需要让模组知道你正在处理的理论图集有多大。模组会将其与现有图集(或被其他纹理替换的图集)进行比较,并据此推算出你的图层纹理的缩放比例。因此,举例来说,要替换木盾纹理,我使用一个名为以下名称的64x64像素png:

atlas_item_icons_1224_1840_2048_2048.png

这表示我的png来自一张图集 2048x2048 像素大(与原始图集尺寸相同),并用我的64x64像素png从像素开始替换现有图集 1224x1840 左上角。


示例

让我们以场景转储中的一个例子来说明:

维京船对象有1个蒙皮网格渲染器:
    蒙皮网格渲染器名称:sail_full
        smr sail_full 有 1 个材料
            航海(副本):
                属性:
                    主纹理 帆船漫反射
                    凹凸贴图 sail_normal
                    自发光贴图
                    苔藓纹理


你可以根据你想做什么来选择使用哪个前缀和标识符:


将某类对象的所有纹理设为统一设置

维京船主纹理.png

这将替换对象中每个材质的主纹理,因此如果一个对象使用了多个纹理,可能效果不佳。这对我们的示例来说不太适用,因为飞船上还有一堆MeshRenderer。如果我们想更改凹凸贴图,可以使用:

维京船凹凸贴图.png


2. 设置纹理的所有实例

texture_sail_diffuse_MainTex.png

这将替换所有名为 船帆漫反射,所以每个使用该纹理的物体都会受到影响。在我们的示例中,它会替换
其他船型如果使用该纹理,也会出现船帆。


3. 为对象类型上的单个网格设置纹理

维京船帆全开渲染对象主纹理.png

这将替换任何名为以下名称的渲染器的纹理 全速航行 对所有人 维京船 物体。


4. 按名称在对象类型上设置纹理

物体纹理维京船航行漫反射主纹理.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: 英灵神殿 的热门 MOD

探索适用于 Valheim: 英灵神殿 的最佳MOD,带来新功能、升级画面,以及令人兴奋的方式来改变您的游戏体验。

使用 Xmod 解锁 Valheim: 英灵神殿 的全部潜力 — 今天就探索这些顶级 MOD!