3DMigoto / ZZMI INI 文档指南
发布时间:2026-10-24 | 浏览:1
本文档综合整理了适用于绝区零 (ZZZ)的 3DMigoto (ZZMI) 的 INI 配置文件说明,涵盖基础配置、Mod 结构、覆盖系统、快捷键绑定、高级技巧等内容。
什么是 3DMigoto / ZZMI?
3DMigoto 是一个 DirectX 11 API 钩子(hook)工具,最初用于 NVIDIA 3D Vision 立体驱动修复,后来被广泛用于游戏 Mod 制作。
3DMigoto 是一个 DirectX 11 API 钩子(hook)工具,最初用于 NVIDIA 3D Vision 立体驱动修复,后来被广泛用于游戏 Mod 制作。
GIMI (GI-Model-Importer) 是由 SilentNightSound 基于 3DMigoto 二次开发的分支,专门针对米哈游游戏(原神、崩坏:星穹铁道、绝区零)优化,增加了模型导入/导出、纹理替换等 Mod 功能。
GIMI (GI-Model-Importer) 是由 SilentNightSound 基于 3DMigoto 二次开发的分支,专门针对米哈游游戏(原神、崩坏:星穹铁道、绝区零)优化,增加了模型导入/导出、纹理替换等 Mod 功能。
ZZMI 是 GIMI 针对绝区零的进一步适配版本。
ZZMI 是 GIMI 针对绝区零的进一步适配版本。
3DMigoto 通过注入到游戏进程,拦截 DirectX 11 的绘制调用(Draw Call)。用户在 INI 文件中通过 Hash 值 定位特定的纹理、顶点缓冲或着色器,然后指定替换资源或跳过绘制,从而实现模型/纹理替换。
启用狩猎模式(Hunting Mode)、屏幕绿色调试信息,功能完整但性能稍慢
1.从 https://github.com/leotorrez/ZZ-Model-Importer 下载对应版本。
2.将压缩包解压到 非游戏根目录 的文件夹(例如 D:\3DMigoto\ZZZ\ ),避免被反作弊系统扫描。
用任意文本编辑器打开 d3dx.ini ,进行以下修改:
找到 [Loader] 节,修改或添加:
步骤二:修改 CommandListSkin
找到 [CommandListSkin] 和 [CommandListSkinTexture] (如果没有则新建),修改为以下内容:
> 注意 :某些教程写的是 [CommandListskinl] (末尾是小写 L),但标准写法是 [CommandListSkin] ,两种写法在 3DMigoto 中都可能生效,建议使用标准写法。
以管理员身份 运行 3DMigoto Loader.exe 。
出现黑色命令行窗口,提示 3DMigoto ready - Now run the game.
2.启动《绝区零》游戏客户端。
3.验证注入:游戏左下角出现绿色文字(开发版),或按 F1 弹出帮助界面(玩家版)。
[Loader] , [Logging] , [Constants]
[CommandListSkin] , [CommandListXxx]
以 ShaderOverride 或 TextureOverride 开头,可有多实例
[TextureOverrideBody] , [ShaderOverrideRemove]
以 Resource 开头,定义外部资源
[ResourceBodyVB] , [ResourceDiffuse] |
节名称 不区分大小写 : [textureoverridebody] 等价于 [TextureOverrideBody]
节名称 不区分大小写 : [textureoverridebody] 等价于 [TextureOverrideBody]
自定义名称中建议使用字母、数字和下划线,避免特殊字符
自定义名称中建议使用字母、数字和下划线,避免特殊字符
注释以 英文 ; 开始(必须单独一行或行尾,行尾注释需注意兼容性)
注释以 英文 ; 开始(必须单独一行或行尾,行尾注释需注意兼容性)
[Include] 节允许模块化加载配置:
[Loader] — 加载器设置
[Logging] — 日志控制
[Constants] — 全局常量与变量
[Rendering] — 渲染管线设置
[Device] — 显示与分辨率
[Present] — 每帧执行
[System] — 运行时行为
每个 Mod 放在 Mods 目录下的独立子文件夹中:
多部件 Mod 的推荐结构
3DMigoto 启动时递归加载 Mods/ 下所有 .ini 文件
3DMigoto 启动时递归加载 Mods/ 下所有 .ini 文件
游戏内按 F10 热加载所有 Mod(无需重启游戏)
游戏内按 F10 热加载所有 Mod(无需重启游戏)
每个角色同一时间只能应用一个 Mod(因为共享 Hash 值会冲突)
每个角色同一时间只能应用一个 Mod(因为共享 Hash 值会冲突)
禁用 Mod:将文件夹名或 .ini 文件名标记为 DISABLED (如 DISABLED_OldMod.ini )或添加 .disabled 后缀
禁用 Mod:将文件夹名或 .ini 文件名标记为 DISABLED (如 DISABLED_OldMod.ini )或添加 .disabled 后缀
必需。要匹配的纹理/缓冲 Hash 值
skip = 跳过原始绘制; default = 正常绘制
auto = 自动绘制自定义资源
match_first_index
匹配第一个索引(用于同一缓冲中的多对象区分)
match_index_count
match_first_vertex
match_vertex_count
vb0 , vb1 , vb2
allow_duplicate_hashes
true / overrule
与 checktextureoverride 配合的过滤变量
匹配纹理格式(如 28 = DXGI_FORMAT_R8G8B8A8_UNORM)
阻止游戏从纹理读取数据(返回空白缓冲给游戏)
纹理槽 (ps-t) 说明
漫反射贴图 (Diffuse/Albedo)
光照贴图 (LightMap)
法线贴图 (Normal Map)
阴影贴图 (Shadow/SSS)
金属/粗糙度贴图 (Metal/Roughness)
发光贴图 (Emission)
混合贴图 (Blend Mask)
各槽位的具体用途取决于游戏的着色器实现,建议通过 框架分析 (Frame Analysis) 确认。
部件区分(match_first_index)
当多个模型部件共享同一个顶点/索引缓冲时,通过 match_first_index 区分:
要匹配的着色器 Hash(从狩猎模式获取)
handling = skip
handling = abort
run = CommandListName
post run = CommandListName
与 checktextureoverride 配合
allow_duplicate_hashes
允许重复 Hash 匹配(用于多个条件下的同着色器)
preset = PresetName
disable_scissor = 1
限制着色器模型(如 ps_5_0 )
ps-t0 = ResourceName
配合 TextureOverride 修复贴图丢失
当 TextureOverride 的贴图替换不生效时,通常需要为对应的着色器添加 run = CommandListSkinTexture :
当多个着色器具有相同的 Hash 值但需要不同处理时:
支持的纹理格式: .dds (推荐,支持 DXT1/3/5、BC7(sRGB,DX 11+) 等压缩格式)。
stride (步长)必须与原始缓冲完全一致,否则模型变形
顶点缓冲文件的二进制格式需通过 3DMigoto 的工具导出
checktextureoverride = ps-tX
checktextureoverride = vbX
checktextureoverride = ib
handling = skip
run = AnotherCommandList
$variable = value
支持 if / else if / else / endif 嵌套。条件表达式可以是:
$变量名 — 变量值为真(非零)时成立
$變量名 == 值 — 等于比较
$變量名 != 值 — 不等于比较
(条件1) && (条件2) — 与运算
(条件1) || (条件2) — 或运算
ZZZ 的标准 CommandListSkin
这是 ZZZ Mod 运行的核心命令列表,确保贴图和缓冲替换生效:
CommandListSkinTexture
与原神/GIMI 兼容的命令列表,按需运行在单个 TextureOverride 中:
在 Mod 的 INI 文件中通过 run = CommandListSkinTexture 调用。
VK_OEM_PLUS (等号/加号)
XB_A , XB_LEFT_TRIGGER
NO_MODIFIERS F1
过渡动画 (transition)
用于立体参数(separation/convergence)的平滑过渡:
预设系统 (Preset)
global $name = value
`global persist $name = valu
全局 + 自动保存到 d3dx_user.ini
$\namespace\name = value
IniParams — 向着色器传递参数
IniParams 通过 t120 纹理寄存器暴露给像素/顶点着色器:
狩猎模式是 Mod 制作者定位游戏资源的核心功能。仅 ForDevelopment 版本可用。
游戏中按数字 0 进入/退出狩猎模式
游戏中按数字 0 进入/退出狩猎模式
进入后游戏左下角显示绿色调试文字
进入后游戏左下角显示绿色调试文字
屏幕上方显示当前浏览的资源类型和编号
屏幕上方显示当前浏览的资源类型和编号
循环浏览 VB (Vertex Buffer) — 顶点缓冲
循环浏览 IB (Index Buffer) — 索引缓冲
循环浏览 VS (Vertex Shader) — 顶点着色器
循环浏览 PS (Pixel Shader) — 像素着色器
复制当前 IB 的 Hash 到剪贴板
复制当前 VS 的 Hash 到剪贴板
复制当前 PS 的 Hash 到剪贴板
进入游戏角色界面(按 C 键)
按小键盘 / 和 * 遍历顶点缓冲(VB),观察模型哪个部分高亮消失
定位到身体部位后,注意记住 VB 对应的索引
切换到索引缓冲(按小键盘 7 / 8 ),按 9 复制 IB Hash
将复制的 Hash 填入 [TextureOverrideX] 的 hash =
框架分析 (Frame Analysis)
当狩猎模式不足以定位资源时,使用框架分析:
按 F10 刷新,按 F8 执行转储
在 FrameAnalysis-YYYY-MM-DD-HHMMSS 文件夹中查看分析结果
搜索相关 Hash,确认 ps-t 槽位及着色器 Hash
关于 Hash 的注意事项
显存不同 Hash 不同 :显卡显存 ≥ 6GB(高显)与 < 6GB(低显)的 Hash 不同
显存不同 Hash 不同 :显卡显存 ≥ 6GB(高显)与 < 6GB(低显)的 Hash 不同
服务器版本影响 :国服/国际服/亚服的 Hash 可能不同
服务器版本影响 :国服/国际服/亚服的 Hash 可能不同
游戏版本影响 :每次游戏更新后 Hash 可能变化
游戏版本影响 :每次游戏更新后 Hash 可能变化
Mod 作者分享时需注明对应版本,使用者需自行确认 Hash 是否一致
Mod 作者分享时需注明对应版本,使用者需自行确认 Hash 是否一致
VB(Vertex Buffer,顶点缓冲区)
Position(顶点位置)
Position代表3D模型中顶点在三维空间中的坐标。它是构成3D几何图元(如三角形)最基础的属性,定义了模型在模型空间(Model Space)中的形状和轮廓。在3Dmigoto的顶点缓冲区(Vertex Buffer)中,Position数据决定了模型在游戏引擎中最终呈现的几何形态。
Texcoord(纹理坐标)
Texcoord是“Texture Coordinates”的缩写,即纹理坐标(通常在3D软件中也被称为UV坐标)。它的作用是将2D的纹理图像准确地“贴”到3D模型的表面上。
在3Dmigoto和Blender等工具中,Texcoord数据定义了模型上的每一个顶点对应于2D纹理图片上的哪一个具体像素点。
如果Texcoord数据缺失或映射错误,会导致游戏内的模型出现贴图拉伸、错位或显示异常等问题。
在3Dmigoto的语境下,Blend通常指代顶点混合(Vertex Blending)或蒙皮权重(Skinning),这是一种用于3D角色动画的核心技术。
当一个3D模型需要跟随骨骼运动时(例如角色弯曲手臂),处于关节处的顶点会受到多根骨骼的影响。
Blend机制通过计算这些骨骼对同一顶点的“权重(Weight)”,将不同骨骼的变换结果进行加权混合,从而实现模型表面平滑、自然的形变动画。在导入/导出模型时,必须确保这些混合权重和顶点组(Vertex Groups)与原始模型完全匹配,否则会导致模型扭曲或变形。 (注:在TouchDesigner等其他图形软件中,Blend也指代组件或父子变换的混合节点,但在3Dmigoto模型修改中,主要指代上述的顶点/骨骼混合机制。)
IB(Index Buffer,索引缓冲区)
如果说前面提到的 Position(顶点缓冲区,即VB)定义了模型的所有“点”,那么 IB 就是用来定义这些点如何“连线”的图纸。它的具体作用如下:
IB 记录了构成模型表面(通常是三角形)的顶点索引顺序。例如,它告诉显卡:“把第1个、第2个和第3个顶点连起来形成一个面,再把第2个、第4个和第5个顶点连起来形成下一个面”。
在Mod制作与替换中的关键地位
在3Dmigoto的狩猎(Hunting)和修改流程中,IB 扮演着极其重要的角色:
精准定位模型部件:在狩猎模式下,通过循环切换 IB(通常使用数字小键盘的 7 和 8 键),你可以精确地选中并隐藏/显示游戏中的特定模型部件(如角色的武器、头发或衣服),从而找到你想要修改的目标哈希值(Hash)13。
纹理替换的锚点:当你想要替换某个部件的贴图时,必须先找到负责绘制该部件的 IB 哈希值。只有在对应的 .ini 配置文件中匹配了这个 IB 的 Hash,3Dmigoto 才知道该把新贴图应用到模型的哪个部位3。
模型导出与匹配:在将修改好的模型导出为游戏可用格式时,工具会自动收集相关的缓冲区文件,确保新模型的顶点索引与原始 IB 的哈希值准确匹配,否则游戏将无法正确渲染该模型15。
简单来说,VB 提供了模型的“肉”(顶点数据),而 IB 提供了模型的“骨架结构”(连接方式)。在制作 Mod 时,保持原始 IB 哈希值的正确匹配,是确保模型不破碎、贴图不错位的核心前提。
; 使用方法:将此文件放入 Mods 文件夹,按 F10 刷新,
; 然后按 F8 执行转储。分析结果在 FrameAnalysis-* 文件夹中。
问题 1:3DMigoto 注入失败
现象 :游戏左下角无绿色文字,F1 无反应。
确认 d3dx.ini 中 [Loader] 的 target = ZenlessZoneZero.exe 已正确设置
确认 d3dx.ini 中 [Loader] 的 target = ZenlessZoneZero.exe 已正确设置
以管理员身份 运行 3DMigoto Loader.exe
以管理员身份 运行 3DMigoto Loader.exe
检查游戏版本更新后是否需要更新 ZZMI
检查游戏版本更新后是否需要更新 ZZMI
确保 3DMigoto 不在游戏根目录下
确保 3DMigoto 不在游戏根目录下
问题 2:贴图不生效(模型显示但无自定义贴图)
现象 :模型形状变了,但贴图还是游戏原版。
在 [TextureOverride] 中添加 run = CommandListSkinTexture
确认 [CommandListSkin] 中包含了所有必要的 checktextureoverride 条目
添加 [ShaderOverride] 并设置 run = CommandListSkinTexture
检查贴图文件格式是否为 .dds 且置于正确路径
问题 3:模型部分残留(阴影/轮廓还在)
现象 :主要模型已被替换或移除,但阴影、轮廓或某些部件还在。
进入狩猎模式,遍历所有 VS/PS,找到负责残留部分的着色器
用 [ShaderOverrideX] 配合 handling = skip 跳过
现象 :模型显示但顶点扭曲/拉伸。
检查 stride (步长)值是否与原始一致。VB 的 stride 必须精确匹配
重新导出模型数据,确认导出设置正确
问题 5:Hash 不同导致 Mod 不工作
确认显存大小(4GB 分界线)
确认服务器版本(国服/国际服)
使用狩猎模式自行获取当前版本的 Hash
问题 6:游戏更新后 Mod 失效
现象 :游戏版本更新后 Mod 不工作。
等待 Mod 作者更新,或自行重新获取 Hash
查看 GameBanana 或踩蘑菇社区是否有 修复 工具
在 Mods/ 文件夹名称中添加 DISABLED 前缀临时禁用所有 Mod,逐步排查
问题 7:按 F10 没有反应
现象 :游戏中按 F10 不能刷新 Mod。
确认 F6 打开 Mod 时左下角有提示
现象 :使用 Mod 后游戏变卡。
使用 ForPlaying 版本替代 ForDevelopment
简化 INI 配置,减少不必要的覆盖
刷新 Mod 列表(热加载 INI)
向前循环 VB (Vertex Buffer)
向后循环 VB (Vertex Buffer)
向前循环 IB (Index Buffer)
向后循环 IB (Index Buffer
向前循环 VS (Vertex Shader
向前循环 VS (Vertex Shader)
向前循环 PS (Pixel Shader
向后循环 PS (Pixel Shader)
> 注意 :部分笔记本键盘没有独立小键盘,可能需要外接键盘或修改按键配置。
3DMigoto INI File Documentation (LeoTorrez) — 官方 INI 文档
Zelbert 的 3DMigoto 笔记 (语雀) — 中文社区笔记
小林小猪: 3DMigoto INI 文件解析 — 中文博客
SilentNightSound/GI-Model-Importer (GitHub) — GIMI 官方仓库
3DMigoto Configuration System (DeepWiki) — 配置系统深度解析
ZZZ 绝区零 GIMI 安装教程 (Bilibili) — 视频教程
绝区零 GIMI 模型导入器 (游民星空) — 下载与安装指南
绝区零 Mod 社区 (踩蘑菇) — Mod 下载与交流
> 免责声明 :使用 Mod 修改游戏客户端存在账号封禁风险,请自行评估风险。本指南仅用于技术学习与交流,请勿用于任何违规用途。