自定义纹理

创作者: cjayride
已更新:2022-02-02 22:30:22
136KB

关于此 MOD

为《英灵神殿》1.0打造的aedenthorn CustomTextures分支版。允许你用自定义png文件替换游戏纹理实例。

自定义纹理

为《英灵神殿》1.0版本更新

一个分支自 艾登索恩/自定义纹理

雷神商店 | GitHub

用自定义png文件替换游戏纹理。

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

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

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

示例

  • https://imgur.com/a/Jsgxrms

  • 将上面的图像作为Karve船帆使用,将其保存为"renderer_sail_full_MainTex.png"

  • 把它放进 cjayride-CustomTextures/CustomTextures 文件夹

下次运行游戏时,它将用此图像替换卡维尔船的帆。

基础用法

为了提取原版纹理作为参考,我使用 资产工作室纹理位于 valheim_Data/sharedassets 文件。

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

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

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

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

这是某位好心人制作的视频,讲解如何将这个模组与预设材质包搭配使用。

筛选模式

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

文件命名摘要

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

你创建文件名时通常以某个前缀开头,后面跟一个下划线,然后是一个标识符,再是属性名(可选地再跟一个下划线和一个层名,详见 层),即进行完整的纹理替换:

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

或者对于某个层:

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

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

详细信息

前缀

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

以下是四个部分的逐一说明:

以下前缀是根据被修改对象的类型实现的:

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

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

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

例如:

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

将替换以下对象的主纹理: 世界树之枝 材质在 分支 渲染器开启 世界树之枝 环境对象。

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

  • 纹理 用于通用替换纹理(在支持的情况下)
  • 渲染器 用于替换任何已命名渲染器上的纹理
  • 垫子 用于替换任何指定材质上的纹理******:******

那么,更简单的做法就是:

texture_yggbark_d_MainTex.png

替换纹理 伊格树皮_d 如果是主纹理,纹理可在任意位置。

标识符

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

属性名称

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

图层名称:

查看 图层 下方。

替换类型

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

玩家材质

对于基础玩家角色纹理,请使用以下语法:
玩家模型_<模型编号><后缀>.png

替换 型号 与任一 0 或男性用 1 女性。例如:

玩家模型_1_主纹理.png

物品栏图标

这些是显示在你物品栏中代表游戏内物品的小图片。它们全部在一张名为 sactx-2048x2048-Uncompressed-IconAtlas-61238c20 #845.

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

** atlas_item_icons.png**

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

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

对象 和护甲纹理 注意: 装备和世界物体现在都被视为 对象. 模组仍会识别这些 **物品带有 ** 前缀,仅为向后兼容。

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

例如:

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

护甲 是你穿戴时物体的样子(而不是把它和其他垃圾一起扔在地上时)。

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

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

前缀:

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

  • 对象 - 用于更改该类型的所有纹理 <suffix> 在特定的世界对象类型上。 <标识符> 应该是对象生成的名称

  • 对象渲染器 (objectmesh 也可用,但已弃用)——用于更改特定对象上特定渲染器中所有 <suffix> 类型的纹理。<identifier>(见“标识符”)应为对象名和渲染器名,以下划线分隔:<objectName>_<rendererName>

  • 物体纹理 - 用于更改特定对象上每个渲染器中类型为 <suffix> 的特定命名纹理。<identifier>(参见标识符)应为对象名称和纹理名称,以下划线分隔:<objectName>_<textureName>

  • 物件材质 - 用于更改特定对象上所有特定命名材质的纹理。<identifier>(见标识符)应为对象名和材质名,以下划线分隔:<objectName>_<materialName>

  • 对象渲染器材质 - 用于更改特定对象上特定命名渲染器上特定命名材质的纹理。 <标识符>(参见标识符)应为对象名称和材质名称,用下划线分隔: <对象名称>渲染器名称<材料名称>

  • 纹理 - 用于更改所有使用该纹理的对象和物品上类型为<suffix>的特定纹理的所有实例。<identifier>(参见标识符)应为纹理名称(不一定是导出的文件名!)

  • 渲染器 - 用于更改所有对象和物品上特定渲染器所有实例中类型为<suffix>的纹理。<identifier>(见标识符)应为渲染器名称。

  • 垫子 - 用于更改所有对象和物品上特定材质所有实例中类型为<suffix>的纹理。<identifier>(参见标识符)应使用材质名称。

  • 护甲 - 用于更改护甲物品的胸甲或护腿 - 请注意,护甲其余部分受物体影响而非此项。

后缀:

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

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

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

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

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

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

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

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

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

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

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

标识符

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

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

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

水和地形纹理

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

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

水

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

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

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

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

地形

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

地形 _GameMain,预制体 _Zone(UnityEngine.GameObject)
属性:
主纹理 草地
_NoiseTex 噪声
_已清除遮罩纹理
_CliffNormal gouacherock_big_n
耕种普通耕种_n
_漫反射纹理0 漫反射0
_污垢法线 dirt_normal_generated
森林 普通 forest_n
_GrassNormal grass_normal_generated
_铺装普通 paved_n
_普通岩石 水粉岩_n
雪地普通 雪地普通

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

地形__GameMain_DiffuseTex0.png

这 扩散0 纹理上似乎有十六个图块,分别对应不同的地形类型。你可以在截图中看到它的使用示例。

环境纹理

环境纹理包括雨、云、雾,还有天上那棵巨大的树形玩意儿。

场景转储显示,例如:

环境 YggdrasilBranch 拥有 1 个 MeshRenderer:
网格渲染器名称:branch
布兰奇先生有2个材料
世界树之枝(实例):
属性:
主纹理 yggbark_d
凹凸贴图 yggbark_n
_自发光纹理 yggdrasil_emissive
_苔藓纹理 世界树苔藓
_EmissiveMaskTex 世界树_自发光遮罩
折射法线
世界树之枝·叶(实例):
属性:
主纹理 ygg_leaf_d
凹凸贴图 ygg_leaf_n
自发光纹理
苔藓纹理
自发光遮罩纹理
折射法线

那么,如上所述:

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

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

特殊地点

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

图层

图层允许你在现有或已修改的纹理上叠加部分纹理。除精灵外,其他所有内容的工作原理都相同:

纹理层

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

player_model_0_MainTex_RealEyes.png

<你的图层名称> 可以设置成任何你想要的内容,只要它是唯一的并且 不包含任何下划线.

精灵图层

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

图集物品图标_<startX><startY><sheetWidth>_<sheetHeight>.png

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

atlas_item_icons_1224_1840_2048_2048.png

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

示例

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

维京船有1个蒙皮网格渲染器:
蒙皮网格渲染器名称:sail_full
帆船满帆需要1个材料
sail(实例):
属性:
主纹理 sail_diffuse
凹凸贴图 帆船法线
自发光贴图
苔藓纹理

你可以根据自己想要做的事情,选择使用哪个前缀和标识符:

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

维京船主纹理.png

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

维京船_凹凸贴图.png

2. 设置纹理的所有实例

texture_sail_diffuse_MainTex.png

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

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

维京船帆满帆主纹理.png

这将替换任何名为以下内容的渲染器的纹理 全速航行 全部开启 维京船 物体。

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

维京船帆主纹理.png

这将替换所有名为 帆船漫反射 全部开启 维京船 物品。

4. 设置局部纹理层

以上任何示例都可以通过在末尾添加图层名称来作为局部图层添加。因此,如果你只想在维京船的帆上添加一个贴花,你可以这样做:

维京船帆_骷髅与交叉骨_主纹理_酷炫骷髅与交叉骨.png

配置

配置文件 BepInEx/config/aedenthorn.CustomTextures.cfg 是在使用此模组运行一次游戏后创建的)。

你可以使用文本编辑器编辑此文件,或在游戏内使用 配置管理器.

场景转储

要获取生成上述名称所需的全部信息,请设置配置选项 转储场景纹理 到 真,然后运行游戏并加载进入你的世界一次。一个文件 BepInEx/plugins/CustomTextures/scene_dump.txt 应创建。您可以将其重新设置为 假 在你导出纹理之后,否则每次运行游戏时它都会重新创建该文件。

这个模组仍在制作中。

已知问题

需要 BepInExPack Valheim 5.4.2350+(Unity 6)。必须关闭跨平台游玩,BepInEx 才能加载。

配置

  • 配置文件 BepInEx/配置/cjayride.CustomTextures.cfg 是在启用此模组运行游戏一次后创建的。

联系

  • 𝕏:x.com/cjayride

  • Discord:discord.gg/cjayride(在用户列表顶部找我)“cjayride”

  • Twitch:twitch.tv/cjayride

AI生成

这段代码并非由AI生成,但使用了AI来验证其与新版本游戏的兼容性。

Valheim: 英灵神殿 的热门 MOD

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

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