返回首页
RENDERING PIPELINE / 蓝色星原 / APMI

项目总览:蓝原 MOD 工具链研究

面向读者:Modder / QA 面试官

用璐璐卡与忒拉拉两个角色样本,说明 APMI-Tools 目前如何从帧分析走到 Blender 编辑与游戏内热重载。

研究对象与结论

本项目研究的是 蓝色星原旅谣 在 3Dmigoto/XXMI 环境下的角色渲染资源链路。当前工具链不是只做“某个角色能替换”的演示,而是把角色资产拆成可复现的工程流程:

  • FrameAnalysis-* 捕获 draw / dispatch / shader / resource。
  • DumpOut/<角色>/APMI_d6e8a8e8 保存结构化提取结果。
  • Blender 侧导入 .fmt/.ib/.vb,恢复 A-Pose 和正确朝向。
  • 导出 Mods/<MOD名>,由 APMI Core + mod.ini 替换运行时 buffer。
  • 游戏内用 F10 热重载,用 F6 验证启停链路。

以璐璐卡样本为例,提取目录为:

XXMI/DumpOut/<角色>/<提取目录>

它的 Metadata.json 给出了一个很清楚的角色级结构:

字段
Root IB Hashacc1c236
Root VB0 Hash02736c6a
Vertex Count33946
Index Count136128
Rotation{ x: 90, y: 0, z: 0 }

这说明“人物躺在地上”的问题不是用户操作错误,而是 DirectX 到 Blender 的坐标系转换问题。现在 90 度校正已经成为默认行为,不再暴露给 UI。

璐璐卡 APMI_d6e8a8e8 点云预览loading / 拖动点云可旋转
由 Component *.fmt/.vb/.ib 采样生成;可拖动旋转。这个嵌入块用于在文章内快速解释组件拆分。
APMI 从 FrameAnalysis 到游戏内验证的工作流
APMI 从 FrameAnalysis 到游戏内验证的工作流

同样的流程也用于忒拉拉样本。它的提取根资源是 IB 3f7ce4fa / VB0 1e636b8e,总计 30385 个顶点、126087 个索引。下方点云来自同一个 APMI_d6e8a8e8 提取目录,适合和璐璐卡对照观察组件拆分密度。

忒拉拉 APMI_d6e8a8e8 点云预览loading / 拖动点云可旋转
由忒拉拉 Component 0-6 采样生成;C1/C3/C4 是这次替换与大世界回归中最值得关注的组件。

组件拆分

璐璐卡样本被拆成 7 个组件。这里的 Component 不是美术命名,而是运行时 draw / buffer / 材质绑定的基本单位。

ComponentIB HashVB0 HashVerticesIndicesLOD Count调试意义
C0acc1c23602736c6a9266369062身体/主体,曾暴露 Char/World 骨骼映射差异
C11a43ef65425f098c201386942面部相关,大世界出现过类似 C0 的拉丝问题
C286dd90b28e9d0b86174578182小型组件,适合做无修改导出对照
C3687504c4b8d9c40211296506402头发/高风险材质组件
C44e7a807def7a896c9456315181曾用于 HideTest,验证 F6 开关链路
C5cbafc4e67e46d1f2903360眼睛/小件,曾排查未提取问题
C6d027afe12aa3cde5802162小件,适合作为边界组件

忒拉拉则提供了另一个关键样本:C1 是替换目标之一,C3 是未直接修改但在大世界暴露材质通道风险的头发组件,C4 是另一处替换目标。它的组件表如下:

ComponentIB HashVB0 HashVerticesIndicesLOD Count研究意义
C03f7ce4fa1e636b8e2846102121身体/主体,角色界面 draw 样本之一
C1d7ed7ac659262f6711683525660替换目标,PS e1dce2d8ab548e15
C2ff238cbfac6fc56294445360小件,对照导出用
C3b4134b8ce5d453cc7463275911头发,高风险 COLOR0/TEXCOORD2 通道
C46a6fda88f2df1fbc7239305101替换目标,常用于单组件回归
C5062834217e46d1f2903360眼睛/小件
C65e772fa6eac23e0e1203361小件,适合做边界验证

这个表对 Modder 的价值是:你能知道替换哪个组件风险最高。对 QA 的价值是:每个组件可以成为独立测试对象。

已解决的问题

当前 APMI-Tools 已经处理过这些核心问题:

  • 导入朝向错误:默认按 DirectX 90 度修正。
  • A-Pose 丢失:默认启用 Auto A-Pose,优先保留 cs-t0/direct IA 数据。
  • 只能删面不能新增面:导出链路开始支持新增顶点,并处理 IB/VB 数量变化。
  • 无 LOD 不允许导出:改为允许无 LOD 导出,但给出风险提示。
  • F6/F10 链路混乱:区分开关命中、资源替换和 draw 成功。
  • C3 头发大世界杂点:定位到 COLOR0/TEXCOORD2 材质控制通道,而不是普通 UV0。

仍需谨慎的边界

蓝原目前的最大风险来自 角色界面与大世界差异。角色界面通过,不代表大世界通过。忒拉拉样本中,角色界面使用的 VS 为:

VS d6e8a8e8ae48ebf5
PS e1dce2d8ab548e15 / fb3f3f45d4bc8d69

但进入大世界后,同一 VS 下会出现更多拆分 draw,IB/VB hash 也变化,说明世界场景可能走了不同 LOD 或资源分段。

这就是为什么作品集里这项研究不应写成“我做了 MOD”,而应写成:我建立了一套角色渲染资产一致性测试链路