|
|
本帖最后由 鼓掌之间 于 2026-10-25 15:20 编辑
转自:https://www.nexusmods.com/skyrimspecialedition/mods/192698
前置要求
- SKSE插件地址库:https://bbs.3dmgame.com/thread-6549645-1-1.html
- 《上古卷轴5》脚本扩展器(64位SKSE):https://bbs.3dmgame.com/thread-6550387-1-1.html
- powerofthree's Tweaks 调整插件:https://bbs.3dmgame.com/thread-6560570-1-1.html
概述
毫不夸张地说,《上古卷轴5》的投影材质系统缺陷很多。如果你遇到过山上的积雪和地表积雪质感不匹配、屋顶下方不该有雪的位置出现积雪、本该有雪的区域反而出现无雪斑块……你一定懂这种痛点。本MOD旨在修复该系统最常见的一批问题,同时为MOD作者提供可进一步扩展的框架。
它仍基于原版系统运行,也就是说物体仍需要手动添加MATO(材质对象),本MOD不会自动完成这项工作。它会对现有的单通道MATO进行修补(可单个处理,也可按积雪、火山灰等分组处理),实现以下功能:
- 支持为每个MATO单独自定义投影漫反射/法线/噪声/细节法线纹理。这意味着你的积雪、火山灰等材质可以直接使用自定义纹理,无需调用全局的projecteddiffuse.dds,从此各处的积雪质感完全统一。
- 插件可覆盖原版MATO的参数,包括最大角度、衰减缩放、衰减偏移、噪声UV缩放等。
- 支持按MATO单独中和顶点颜色/透明度,消除指定模型上顶点颜色对投影材质的影响。
- 移除高光,避免投影材质出现不符合现实的反光效果。
- 屋顶遮挡功能:消除屋顶下方的投影材质。
以上所有功能及对应参数都可以按单个MATO(或MATO分组)控制,也支持后续新增的MATO扩展。例如,你可以制作一套全新的自定义苔藓材质,并为它定义专属参数。本MOD的默认配置针对积雪与火山灰(包含原版与PBR版本),安装后即可直接看到效果提升。
XPMF并非BDS3这类MOD的完全替代品。因为本MOD不会为物体额外添加积雪/火山灰效果,仅修补已有的单通道投影材质。此外,BDS3这类MOD还具备一些实用特性,比如多样化的积雪步道纹理、修改后的模型等。部分经过修改的模型和XPMF搭配效果极佳——它们修复了顶点问题;而部分原版模型存在结构破损,搭配本MOD的屋顶遮挡功能时会出现硬截断边缘,而非自然渐变。
最后说明:本MOD无法修复垂直表面上的UV拉伸问题。该修复需要修改GPU着色器,而本插件完全在CPU层面运行,以保证与社区着色器(CS)、ENB的兼容性。社区着色器已内置该问题的修复方案。
兼容性
支持游戏版本:1.7.104、1.6.1170、1.4.15(VR版)、1.5.97。其他版本会在时间允许的范围内尽力兼容。
可与所有MOD兼容(包括社区着色器、ENB、《上古卷轴:四季》)。如果发现不兼容的情况欢迎发帖反馈,我会跟进排查。
XPMF仅修补单通道配置的MATO。也就是说,如果你使用了多通道的积雪/火山灰MOD(比如《简约积雪》《更好的动态雪2》《更好的动态雪2 终极版》),视觉差异会很小。
技术细节
面向MOD作者的框架说明
XPMF虽然自带原版材质的配置,但本框架支持扩展到其他材质,甚至仅修改原版材质参数。你可以在Data/SKSE/Plugins/xpmf/路径下创建任意命名的JSON配置文件。文件包含部分必填字段与大量可选字段,具体说明见下文,可参考MOD自带的默认JSON文件作为配置示例。配套的JSON模式文件可在此处获取。
- name(必填):材质配置的名称,仅作标签使用,不影响实际功能。
- editorIds(必填):应用该配置的EDID列表。可填写完整EDID,也可使用通配符匹配。
- excludeEditorIds(可选 / 默认空数组):排除的EDID列表。可填写完整EDID,也可使用通配符。
- pbr(可选 / 默认false):设为true时,配置仅匹配PBR材质的MATO(需有对应的PBRMaterialObjects JSON文件)。
- diffuseTexture(可选 / 默认不替换):材质使用的漫反射纹理。未定义则使用projecteddiffuse.dds。
- normalTexture(可选 / 默认不替换):材质使用的法线纹理。未定义则使用projectednormal.dds。
- noiseTexture(可选 / 默认不替换):材质使用的噪声纹理。未定义则使用projectednoise.dds。
- detailNormalTexture(可选 / 默认不替换):材质使用的细节法线纹理。未定义则使用projectednormaldetail.dds。
- isSnow(可选 / 默认不替换):覆盖MATO记录中的积雪标识。
- falloffScale(可选 / 默认不替换):覆盖MATO记录中的衰减缩放值。
- falloffBias(可选 / 默认不替换):覆盖MATO记录中的衰减偏移值。
- noiseUVScale(可选 / 默认不替换):覆盖MATO记录中的噪声UV缩放值。
- maxAngle(可选 / 默认不替换):覆盖STAT(或其他调用MATO的结构)记录中的最大角度。
- specularMult(可选 / 默认无变化):模型高光乘以该系数(设为0则关闭高光)。对PBR材质的MATO无效。
- neutralizeVertexColors(可选 / 默认true):开启后,会将影响MATO的顶点颜色设为纯白色。
- neutralizeVertexColorsSkip(可选 / 默认空数组):跳过顶点颜色中和的基础记录EDID列表,支持通配符。
- neutralizeVertexAlpha(可选 / 默认true):开启后,会将影响MATO的顶点透明度设为完全不透明。
- neutralizeVertexAlphaSkip(可选 / 默认空数组):跳过顶点透明度中和的基础记录EDID列表(比如BDS3的步道,可参考默认配置),支持通配符。
- roofShelter(可选 / 默认true):开启后,屋顶下方的材质会以自然渐变的形式隐藏。
- roofShelterSkip(可选 / 默认空数组):跳过屋顶遮挡的基础记录EDID列表。注意这不会阻止被跳过的物体遮挡其他物体。支持通配符。
- shelterFade(可选 / 默认64):取值范围0-128,单位为游戏世界单位,代表遮挡下材质的渐变过渡距离;简单来说,就是材质被风吹入遮挡区域并逐渐消失的范围大小。
如果多个JSON文件匹配同一个MATO,字母顺序靠前的优先级更高(A优先于Z)。但如果其中一个JSON的EDID匹配比另一个更精确(比如*snow*对比*LandSnowMaterial*,后者更精确),则更精确的优先级更高。pbr: true(匹配PBR材质MATO)被视为比未设置的更精确。
给PBR材质作者的提示:你可能需要在PBRMaterialObjects JSON文件中,将baseColorScale值重置为全白(1.0, 1.0, 1.0),颜色匹配才能正常生效。之后你可以直接提供PBR纹理供MATO使用(可参考默认配置中火山灰/积雪的PBR示例)。
材质对象(MATO)修补
该功能负责实时修补MATO记录,替换纹理与颜色数值。系统通过EDID(在XPMF配置中定义)查找对应材质。多通道MATO会被跳过,因为将多通道转为单通道可能导致无效的着色器组合(出现蓝色模型)。系统会遍历场景中所有MATO,匹配成功的进入下一步处理。
由于本框架中每个MATO都定义了明确的纹理,MATO的颜色会始终设为全白(255, 255, 255),MATO记录中的颜色值会被忽略。绘制前,系统会在着色器调度阶段根据配置替换纹理。投影材质着色器本身仍完全是原版逻辑,但这套系统让我们可以在不同场景下为它提供不同的纹理,这在原版投影材质系统中是无法实现的。
屋顶遮挡
XPMF的另一部分功能,是在运行时修改场景中模型的顶点颜色。加载时会检查所有单元格引用。计算屋顶遮挡时,STAT、MSTT、SCOL形状会被判定为遮挡物。后台线程会计算场景中符合条件的模型每个顶点的“开阔度”。开阔度通过垂直柱体检测,判断指定顶点上方是否存在遮挡物。
确定开阔度分布后,系统会计算渐变过渡,并主动添加少量噪点让效果更自然,然后修改顶点透明度来调整每个顶点的积雪量。如果之前存在非白色的顶点透明度,会根据遮挡计算结果乘以0到1之间的数值;如果shelterVertMult设为false,则会直接覆盖原值。
顶点颜色/透明度中和
读取场景模型后,系统会确定投影材质覆盖的顶点(这部分和屋顶遮挡逻辑有部分重叠,因为二者需要相似的数据)。这些顶点会被设为全白顶点颜色和/或满强度透明度,分别解决两类问题:部分模型用顶点颜色加深边缘导致的材质发暗,以及模型部分区域材质缺失的问题。
下载地址:
|
评分
-
1
查看全部评分
-
|