【教程】仰视光照修复与贴图污染修复
前言

这篇教程简单讲一下一些mod普遍存在的当大世界中视角为仰视察看mod时,角色出现光照错误(比如光照过暗)的原因和解决方法,以及非ZZMI(XXMI)启动器用户(或者XXMI用户在使用了修复工具,mod出现的贴图污染(比如头发贴图错误)的原因和解决办法。

这两个问题分别对应了贴图替换的两种写法:槽位替换hash替换,各自的弊端产生了这两个问题,但也都有对应的解决办法。

仰视光照问题

首先说原因:

如果mod是使用的槽位进行贴图替换,那么就会出现此问题。因为当视角变为仰视时,角色的光照贴图会从ps-t5、ps-t6变为ps-t6、ps-t7

解决办法:

首先建议mod制作者们在制作mod时,对ini的贴图配置优先考虑使用hash替换贴图,仅法线贴图ps-t4使用槽位替换。这样直接从根本解决问题。

对于已经存在问题的mod,有两种解决方法。一种是直接把槽位替换改成hash替换(只保留法线为槽位替换

如上图,槽位替换就是直接在ib下面写ps-t3456这种格式,hash替换就是直接使用贴图的hash,用this的写法直接指定贴图资源进行替换。至于贴图的hash怎么获取,可以自己dump获取,也可以打开其他使用了贴图hash的同角色mod的ini直接照抄。

另一种解决方法适用于不方便使用hash替换的情况(比如角色存在多个IB共用贴图的情况,直接使用hash替换可能导致贴图污染),这时可以采用为贴图hash进行贴标签的方法:

写法如上图所示,将光照贴图ps-t5和ps-t6进行如图的if写法修改,然后给6号位的光照贴图hash写一个标签filter_index(筛选索引),这个数字可以看作是给贴图的编号,可以随意写一个,但是要和这个if语句后面使用的数字相同。(我写了两个标签是因为高低显的贴图hash不同,我都写了标签来保证兼容性)

贴图污染问题

同样先说原因:

一些角色存在不同部位共用贴图的情况,比如头发和四肢是两个不同的ib(两个模型),但是它们共用同一张贴图。如果一个mod只改了四肢的模型和贴图,但没有改动头发,这时直接使用hash替换贴图的话,就可能会导致头发的贴图也会被错误地替换掉。

解决办法:

使用ZZMI或XXMI,因为ZZMI(XXMI)使用了单独的指令run = CommandListSkinTexture对每个IB的贴图槽位进行检查,如果IB下没有这条指令,就不会进行贴图替换,这就避免了头发错乱等贴图污染问题。

如果不想换启动器,也有解决办法,一是把hash改槽位写法(上面介绍的写标签的方法),二是直接改3dmigoto的d3dx.ini文件,改成XXMI的写法,如下图:

默认只检查ps-t0,下面再加一条CommandListSkinTexture指令检查其他槽位。

然而

即使XXMI用户也可能遇到头发贴图错乱等贴图污染问题,这一般发生在对hash替换贴图的mod使用了修复工具之后。修复工具会自动为所有使用到该贴图的IB添加贴图检查,打开mod的ini,搜索Hair.IB,会发现下面的代码:

只要修改为下图即可:

by 哈米猫特HammyCatte 更新于 2025-02-09
若有附件,打赏后可直接下载 赠人玫瑰 手留余香
1个大佬推荐该主题
默认
最新


1