实际上,如果只是想替换游戏中的Texture,使用3Dmigoto难免有些大材小用之嫌。很多时候可以直接使用各类工具修改静态的资源文件实现修改,即使是不方便对静态的资源文件直接修改的情况,也可以使用SpecialK简单的在可视化界面中在运行时对texture进行dump和replace。

SpecialK中查看和修改Texture的界面

但是上图所示的游戏,使用SpecialK并不能获取到Spine纹理,具体原因不清楚,此处也不具体展开。

SpecialK的原理和3Dmigoto类似,也是在DX11上做文章,实际上3Dmigoto也能实现texture的替换。

(以下键位均为3Dmigoto默认键位)

启动3DMigoto Loader后再启动游戏,点击数字键盘0进入hunting mode,按下F8来analyse frame,可以在3DMigoto文件夹找到analyse的文件,在其中找到我们想替换的spine纹理

根据文件名中的hash信息,写出Mods/replace.ini(不要忘了在d3dx.ini中include_recursive = Mods),其中ShaderFixes\output2.png是用来替换纹理的图片(注意,assetstudio或者uabea导出的图片与3DMigoto dump出的texture是颠倒的)

namespace=global\Replace

[ResourceReplaceTexture1]
filename = ShaderFixes\output2.png

[ShaderOverrideReplace1]
hash = d8276e7f62f71386
checktextureoverride = ps-t0

[TextureOverride]
Hash = b774513c
ps-t0 = ResourceReplaceTexture1
测试效果

可以发现,与替换前有明显色差,即使使用dump出的jpg文件而非直接使用assetstudio导出的图片一样会有色差。但是注意到默认的analyse_options同时还会导出dds格式,使用ffmpeg把dds转为png格式再作为用于替换的纹理,可以发现色差消失了。或者直接对着dds文件修改,替换时使用dds文件,因为我测试时使用某些软件编辑dds导出的png再替换也会有色差。(可以使用F10重新加载配置来实时查看效果)