Lazy loaded image
3D游戏简单通用去码方法b
字数 1521阅读时长 4 分钟
2025-12-21
type
Post
status
Published
date
Dec 15, 2025
slug
summary
tags
纹理
工具
category
学习笔记
comment
Show
icon
password
111
😀
简单高效的去码方法——利用3Dmigoto去码 此方法适用大部分3D游戏和一部分2D游戏
 

一、适用范围

首先,在github页面我们可以看到,3dmigoto不针对任何引擎,而是针对directx11(dx11)。
dx11属于图形api,和游戏引擎不是一个类别,可以认为所有的游戏引擎都要经过图形接口才能完成渲染。而目前市面上绝大部分游戏都支持dx11。
3dmigoto就是在游戏引擎发送渲染指令后和图形接口渲染完成前实行修改,关系如下图所示。
notion image
总结,此方法适用于市面上绝大部分游戏,无论是什么引擎。
💢
需要注意:有些游戏码下面偷工减料没画东西,去了效果也差,而且并非所有dx11游戏都可以做到去马,举个例子,播片游戏,某些静态cg的2d游戏的马是直接画在图像上的,这种情况虽然也有办法,但是效果不好且难度大。

二、3Dmigoto下载与安装(Dx11)

1.下载

1.访问GitHub仓库获取最新版本:
2.在Releases页面选择最新版压缩包下载。
notion image

2.安装

把压缩包中x64文件夹的内容解压到游戏exe所在的目录中。
1.一般情况
notion image
2. 虚幻引擎游戏
虚幻引擎游戏正确的exe目录可能是:“游戏目录\游戏名\Binaries\Win64”,或者“游戏目录\Engine\Binaries\Win64”。如果安装失败请尝试寻找这个目录。
notion image
3. 特殊情况
前两种方法都失效的情况,使用外部folder注入

3.启动

经过上述步骤,3dmigoto应该已经成功安装,启动游戏exe文件,游戏上方和下方会显示一行绿字,此为启动成功。
notion image
notion image
特殊情况下的启动详见问题解答。

三、去码流程

1.原理

在数字键盘上按 / 和 * 可以循环浏览 Vertex Buffers(简称 vb,顶点缓冲区),包含了正在绘制到屏幕上的物体的顶点信息。
在数字键盘上按 7 和 8 可以循环浏览 Index Buffers (简称 ib,索引缓冲区),包含了顶点如何连接形成模型的信息。你可以用数字键盘 9 复制 Hash 值。
在数字键盘上按 4 和 5 可以循环浏览 Vertex Shaders(简称 vs,顶点着色器),包含了顶点/面在屏幕上的位置信息。使用数字键盘 6 来复制 Hash 值。
在数字键盘上按 1 和 2 可以循环浏览 Pixel Shaders(简称 ps,像素着色器),包含了如何将贴图和颜色应用到物体上的信息。使用数字键盘 3 来复制 Hash 值。
引自:https://github.com/SilentNightSound/GI-Model-Importer/blob/main/Guides/CN_UsageInstructions.md

2.调试

启动exe后会看到游戏上下方有绿字,切换到有带码的游戏场景,按小键盘的按键“1”和"2"、“4”和"5"、“7”和"8"、“/”和"*"直到码消失,按"+"键可以取消隐藏。
按小键盘的"1",意为隐藏下一个纹理,按“2”意为隐藏上一个纹理,只需要按其中一个遍历所有即可。其他组同理。
通过"1"和"2"使得码消失,按"3"复制hash值;
通过"4"和"5"使得码消失,按"6"复制hash值;
通过"7"和"8"使得码消失,按"9"复制hash值;
通过"/"和"*"使得码消失,按"-"复制hash值。
保存好hash值。

3.配置文件修改

并在d3dx.ini中加入如下代码。
; 用小键盘"1"和"2"、"4"和"5"找到hash值的情况,优先使用
[ShaderOverride_Mosaic1]
hash=找到的hash值
handling=skip
 
; 用小键盘"7"和"8"、"/"和"*"找到hash值的情况,基本不考虑
[TextureOverride_Mosaic1]
hash=找到的hash值
handling=skip
如果是多个作用下的结果,就复制多次,递增数字。
命名原理:[ShaderOverride<Name>]
至此去码已经完成,打开游戏应该默认就是已去码的情况。

4.隐藏上下绿字

如果之后不需要hunting,可以按数字键“0”隐藏,更推荐在ini中使hunting=0(默认隐藏)。

三、问题解答

问题基于之前发布的专栏进行回答。

1.Dx12

对于此问题,提出以下解决方案。具体操作见问题解答视频。
  1. 尝试变更为dx11运行:
创建快捷方式,目标引号后加 -dx11
  1. 尝试外部注入
一言以蔽之,外部存放,配置目标,先注后启
去码相关问题解答_哔哩哔哩_bilibili
  1. 1+2混合使用
  1. 把压缩包解压过去的d3d11.dll更名为d3d12.dll
  1. 尝试将D3D12文件夹内的d3d12更名为d3d11

2.键位问题

d3dx.ini中搜NUMPAD并修改键位

3.模拟器

不一定可行。因为现在的模拟器多是采用dxvk将dx转译为vulkan,如果能够保证3dmigoto一定在dxvk前加载,或许可行。具体需要实际操作尝试。

4.码画在贴图上

1、寻找steam版游戏
2、自己做
这种情况比较难,目前我提出的思路是利用3dmigoto找出带马贴图,导出后丢给ai或者自己画好,再替换贴图,此方法成本高效果不一定好,需要权衡成本和效益。
如果你想这样实现,还需要进一步学习如何做mod,推荐此项目下的所有教程:
原神纹理修改教程:
3Dmigoto的应用远不止去码,目前最多是应用在各种游戏的mod制作(如原神),感兴趣的朋友可以进一步学习一些3D知识。
 
💡
免责声明:此内容仅供技术交流,严禁将此内容用于任何商业或非法用途。对于因违反此规定而产生的任何法律后果,用户需自行承担全部责任。

评论
Loading...