SRMI 工具的常见问题列表。
三个最常见的问题是:
- 仔细检查你在 d3dx.ini 文件中的 Genshin.exe/Yuanshen.exe 位置是否正确(V7 及以上版本可以跳过这个步骤),游戏文件夹中有两个 exe 程序,一个是启动器,一个是用于游戏本身,你需要的是后者
- 如果绿色文本没有显示出来,请确保你使用的是开发者版本。精简版没有绿色文本
- 确保你是以管理员身份运行 SRMI 加载器和原神
如果 3dmigoto 加载器的控制台窗口在游戏加载后关闭,这没有问题,这是预期的行为。
如果你得到一个类似“Unable to verify if 3dmigoto successfully loaded”的消息,这并不意味着该程序未能注入,只是加载器无法判断。如果它在游戏中看起来是正常的,你可以关闭这个窗口(事实上,你应该这样做,因为让这个窗口打开会导致计算机速度减慢)。
3dmigoto 可以和其他类型的原神修改工具或加载器一起运行——只要先运行 3dmigoto 加载器,然后再运行你的其他程序。
我偶尔注意到一个问题,即使一切设置正确,3dmigoto 也无法注入——在这些情况下,重新尝试注入就能解决这个问题。
如果你在该文件夹中没有看到任何东西,请确保你是从 ModelData 文件夹而不是 Mod 文件夹中载入数据的(目前不支持从 Mod 文件夹中载入文件)。正确的文件夹应该包含 vb 和 ib.txt 文件。
几乎所有其他错误都是由于你试图加载的模型的问题。最常见的是 4D 法线,这是由于收集脚本转储了模型的一个组件,并错误地将其标记为法线。
在排除故障之前,请仔细检查你已经完成了以下列表中的所有事项:
- 你试图在 Blender 场景中导出的对象被命名为 ObjectHead、ObjectBody、ObjectDress 和 ObjectExtra,而且每个对象只有一个(你有多少个对象取决于原始模型有多少个)
- 你正在导出原始模型所在的 ObjectData 文件夹(不是 Mod 文件夹),并将其导出为 Object.vb。仔细检查你导出的文件夹是否有 hash.json。
- 你正试图导出与你要替换的模型原来相同数量的组件
- 你在场景中导出的对象没有一个是完全空的(需要在所有对象上至少有一个面,可以把它缩小来隐藏它)。
- 所有的对象都有 3dmigoto 的自定义属性,要么是通过与最初使用该插件导入的对象合并,要么是通过使用自定义属性转移脚本。(https://github.com/SilentNightSound/GI-Model-Importer/blob/main/Tools/custom_property_transfer_script.txt)
- UV 图被命名为 TEXCOORD.xy、TEXCOORD1.xy、TEXCOORD2.xy......等等,直到模型的原始编号为止。
- 该模型有顶点色,颜色组件被称为 COLOR
现在,说说最常见的问题。你可以通过打开控制台窗口来获得更多关于导出时出现问题的细节:
这是故障排除中最棘手的部分——在将模型导入游戏时,有很多很多东西会出错。我将尝试涵盖一些最常见的问题类别
确保 3dmigoto 确实在运行,并且你已经把 mod 放在正确的 Mods 文件夹中。还要确保在游戏中按下 F10 键,重新加载 mods。最后,如果所有其他方法都失败了,试着清空你的 ShaderCache 和 ShaderFixes 文件夹,因为这些有时会导致加载 mods 时出现问题。
这是由于模型上的顶点限制。任何带有混合权重/顶点组的东西都有一个奇怪的地方,顶点限制实际上需要在 3dmigoto dll 中提高,以便它能正常工作。我提高了大多数角色的顶点限制,但漏掉了一些——仍在研究为所有对象设置顶点限制的方法。
这是由于游戏试图将一个以上的文件加载到同一个哈希值而造成的。这通常是由于同时为同一个角色使用两个 mods 造成的,但旧版本的工具也有一个 bug,共享的脸部组件在多个地方被覆盖。
要解决这个问题,请删除任何重复的 mod 文件夹。如果你确定你已经删除了所有这些文件夹,但警告仍然出现,请进入警告中提到的.ini 文件,删除或注释这些行。
与警告不同,错误通常表明程序在 mod 中加载失败。原因可能各不相同,但一些常见的原因是:
- 名称不正确(.ini 文件中的名称与文件夹中的文件不一致,如扩展名不同)
- 纹理有错误的格式(查看原件以了解什么格式,通常是 dds,并且必须有高度/宽度是 2 的幂,并且有 1024x1024、2048x2048、1024x2048 等整数比例)。
- 当旧模型有顶点组时,没有在新模型上绘制/转移任何顶点组。
这是因为在 blender 中由 3dmigoto 导入的对象和你要替换的对象使用的是不同的坐标空间。即使它们在 Blender 中看起来是一致的,你实际上可能需要相对于 3dmigoto 模型进行旋转和平移,以获得正确的方向。最常见的是,将角色模型旋转 90 度,使其朝上,然后选择所有的模型并应用所有的变换。
旧(枫原万叶)和新(诺艾尔)之间正确方向的例子
很可能是由于顶点组的问题。顶点组的数量、顺序和位置需要在新模型和旧模型之间进行匹配。确认所有的顶点组在新模型中都存在,它们的顺序是正确的(例如 4 6 7 8 5 应该是 4 5 6 7 8)并且没有缺少(例如 4 7 8 9 -> 4 5 6 7 8 9)。
仍然是顶点组的问题——仔细检查上述内容,并确保该部分的新模型的重量与原模型的重量相一致
这可能是由于各种各样的原因,最常见的是:
- 没有将 uv 图命名为 TEXCOORD.xy
- 反转法线
- 损坏或不正确的 ObjectTexcoord.buf
- 忘了用新的纹理替换,所以仍然在加载原始模型的旧纹理。
这很可能是由于你使用的纹理图没有 alpha 通道。详细情况请参考本项目中的指南,基本上要确保你在任何纹理文件的顶部有一个透明层(顶层用于控制发射并使事物明亮,底层用于绘制模型的颜色和图案)。
这是由于一个不正确的顶点色值造成的,有三种方法可以解决:
- 从模型的某个部分复制顶点色数据,该部分在原件上有正确的轮廓。(详见https://youtu.be/z2nvJzkwHHQ?t=475)
- 用这个脚本改变轮廓的厚度:https://github.com/SilentNightSound/GI-Model-Importer/blob/main/Tools/genshin_set_outlines.py (放置在 mod 文件夹中,使用 cmd 或者 powershell 命令输入:
python .\genshin_set_outlines.py --thickness t
其中 t 是 0-255 的数字,代表轮廓的粗细,0 是没有轮廓,255 是轮廓最大值,大部分游戏使用的值是 80-130,但你应该试验下多少数值才是最适合你的模型) - 使用这个脚本删除轮廓: https://github.com/SilentNightSound/GI-Model-Importer/blob/main/Tools/genshin_remove_outlines.py
在正常使用中,你可能不会遇到这些东西,但我只是想展示一下我的古神图片集。
步骤不正确的.ini 文件
不匹配的 IB 和 VB
在 VB 上重写而不是 IB
Section 即将到来,模型转储脚本仍然是实验性的。