描述这个模组应该允许你替换以下内容:
- 玩家模型纹理
- 物品栏图标
- 盔甲、武器和工具等装备纹理
- 地形和水面纹理
- 环境纹理
- 特殊地点纹理(村庄、地穴、符文石等)
- 世界物体纹理,游戏世界中的几乎其他所有内容
现在还支持图层,因此你可以将多个纹理应用到同一个原版纹理上(见
图层 如下)。
要创建你自己的自定义纹理需要基本的阅读理解能力!这并不难,但请阅读下面的所有信息
小心地 在寻求帮助之前。
基本用法为了提取原版纹理作为参考,我使用
资产工作室纹理在
瓦尔海姆_数据/共享资源 文件。
要替换纹理,只需添加一个
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。如果我们想更改凹凸贴图,可以使用:
维京船凹凸贴图.png2. 设置纹理的所有实例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服务器.
点击此处查看我为英灵神殿制作的所有模组列表。