Skip to content

WMMT赛道模型&贴图解包

约 2674 字大约 9 分钟

2025-09-19

仅限于解包模型与贴图文件
最终效果可直接用于进行其他游戏的转模mod制作等操作

所需工具

1. 配置工具

提示

Python在开启安装程序的时候需要勾选:

  • Use admin privileges when installing py.exe
  • Add python.exe to PATH

在最终安装完的界面需要点击:

  • Disable path length limit

2. 获取地图文件

地图文件将会存放在以下的地方:

W6W10JPN05或者是其他版本的游戏本体

data

course

stage

A_FUKUOKA_DAY_NML

A_FUKUOKA_NGT_NML

A_HAKONE_DAY_EXT

A_HAKONE_DAY_NML

更多其他的地图的文件夹

提示

所有地图都划分成了 DAYNGT 以代表清晨 / 深夜
自行寻找对应的地图即可

如现在以 广岛 - 清晨 的地图为例
应找到 A_HIROSHIMA_DAY_NML 文件夹,并将其整个文件夹复制到其他目录下即可。

3. 分析地图文件

A_HIROSHIMA_DAY_NML 为例:

A_HIROSHIMA_DAY_NML

COMMON每区段共用的资源

clip未知用途

env_param未知用途

model模型与贴图

bin模型文件夹

nut贴图文件夹

LOADLIST_A_HIROSHIMA_DAY_NML_COMMON.lua未知用途

HIROSHIMA单独区段

clip未知用途

env_param未知用途

model模型与贴图

bin模型文件夹

nut贴图文件夹

LOADLIST_A_HIROSHIMA_DAY_NML_HIROSHIMA.lua未知用途

着重聚焦在 binnut 文件夹即可。

4. 解包并导入模型文件

HIROSHIMA/model/bin 中的文件为例

4.1 文件脱壳

unzipAllBinAndNut.py 文件放置在该目录中,然后右键该文件夹空白处,点击 在终端中打开

在终端中输入并执行:

python unzipAllBinAndNut.py

示例执行结果:

A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT101.bin 解压完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT101.bin
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT102.bin 解压完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT102.bin
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT103.bin 解压完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT103.bin
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT104.bin 解压完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT104.bin
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT105.bin 解压完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT105.bin
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT106.bin 解压完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT106.bin
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT107.bin 解压完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT107.bin
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT108.bin 解压完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT108.bin
所有文件处理完成!

处理完成后,在 HIROSHIMA/model/bin 目录中将会有 out 的文件夹出现,里面就是经过了脱壳(压缩)处理的文件。

4.2 解包模型文件

splitFiles.py 文件放置在 4.1 中产生的 out 文件夹中,然后右键该文件夹空白处,点击 在终端中打开

在终端中输入并执行:

python splitFiles.py

警告

如果执行后出现类似情况:

Traceback (most recent call last):
  File "D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\splitFiles.py", line 1, in <module>
    from csplitb import CSplitB
ModuleNotFoundError: No module named 'csplitb'

说明缺少依赖包 csplitb
请先在终端 (需使用管理员终端) 中安装该依赖:

pip install csplitb

示例执行结果:

A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT101.bin 拆分完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT101
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT102.bin 拆分完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT102
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT103.bin 拆分完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT103
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT104.bin 拆分完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT104
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT105.bin 拆分完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT105
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT106.bin 拆分完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT106
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT107.bin 拆分完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT107
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT108.bin 拆分完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT108
所有文件拆分完成!

然后在 out 文件夹中会出现与 .bin 文件名同样的文件夹
每个文件夹下就是存放的从 .bin 文件夹中解包出来的 .nud 文件

注意

DiscordWangan Midnight Emulation 群组中,Dax 认为应该将字符串查找从 NDWD 转变为 NDLX
因此可能需要将 splitFiles.py 中,split_marker 进行更改:

# -------- 参数配置 --------
split_marker = "4E445744"  # 原本是查找的NDWD
split_marker = "4E444C58"  # 现在应查找是NDLX
number_digits = 1           # 文件编号位数
suffix = ".nud"             # 输出文件扩展名
# --------------------------

4.3 导入模型

A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT101 内的 .nud 文件为例
先打开 Autodesk 3ds Max ,然后将 Namco_NDWD_Custom.ms 文件拖拽至 3ds Max 窗口中,会弹出该插件的窗口
点击 Import Model(s) 按钮,选择 A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT101 中的 .nud 文件(可批量)

等待导入完毕即可

提示

由于有部分模型会影响 Autodesk 3ds Max 对模型的显示,因此导入后建议直接导出为 .fbx 文件
然后再导入至 Blender 中,对有问题以及多余的文件删除后,再重新导出为 .fbx 文件
然后导入回 Autodesk 3ds Max 中即可

5. 导出贴图

5.1 文件脱壳

先前往 HIROSHIMA/model/nut 文件夹
unzipAllBinAndNut.py 文件放置在该目录中,然后右键该文件夹空白处,点击 在终端中打开

在终端中输入并执行:

python unzipAllBinAndNut.py

示例执行结果:

A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT101.bin 解压完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT101.bin
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT102.bin 解压完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT102.bin
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT103.bin 解压完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT103.bin
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT104.bin 解压完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT104.bin
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT105.bin 解压完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT105.bin
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT106.bin 解压完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT106.bin
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT107.bin 解压完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT107.bin
A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT108.bin 解压完成 -> D:\wmmtwork\A_HIROSHIMA_DAY_NML\HIROSHIMA\model\bin\out\A_HIROSHIMA_DAY_NML_HIROSHIMA_SECT108.bin
所有文件处理完成!

处理完成后,在 HIROSHIMA/model/nut 目录中将会有 out 的文件夹出现,里面就是经过了脱壳(压缩)处理的文件。

5.2 导出贴图

解压 quickbms.7z 后,打开里面的 quickbms.exe 程序(如果打不开则使用管理员打开)

  1. 打开后,弹出的第一个窗口选择下载的 NUT2DDS.bms 文件,点击 打开
  2. 选择后,弹出的第二个窗口选择 out 文件夹中的 .nut 文件,点击 打开
  3. 选择后,弹出的第三个窗口,在 out 文件夹中新建文件夹 alltex ,并选择该文件夹,点击 打开 即可

重复上述操作,将全部 .nut 文件都导出到 alltex 文件夹中即可,完成贴图导出。

6. 修复遗漏贴图

在导入模型的时候,其实是缺少了贴图的,那么需要将其进行修复。

以导入 SECT101 部分为例:

  1. 在已经导入模型后,将 missingTextures.ms 拖拽至 3ds Max 窗口中让其执行(期间不会弹出任何弹窗)
  2. 前往桌面,找到 missing_textures.txt,并将其用 Visual Studio Code 打开
  3. 打开后,里面将会显示当前 SECT 所遗漏的贴图名
  4. fixTextureName.py 复制到 HIROSHIMA/model/nut/out 文件夹中,然后用 Visual Studio Code 打开
  5. 根据以下解释对 fixTextureName.py 文件进行修改,将原来的贴图名删除,并将刚才 missing_textures.txt 中的贴图名添加进来,并且需要调整输入与输出文件夹位置
  1. HIROSHIMA/model/nut/out 文件夹中,在空白处右键,点击 在终端中打开
  2. 执行以下代码:
python fixTextureName.py

输出示例:

  1. 执行完毕后,其命名修复后的贴图就出现在刚才在 fixTextureName.py 中设置的 target_folder 文件夹中了。
  2. 将修复命名后的贴图全部复制到与模型文件同一文件夹(上述应该有建议导出 fbx 文件再导入的,那就复制到 fbx 文件同目录中),然后导入 fbx 文件即可

7. 整体流程

  1. 解包全部 SECT 的地图模型文件,然后分每个 SECT 导入至 3ds Max
  2. 将其每个 SECT 的模型导出为格子单独的 fbx 文件
  3. 各自导入至 Blender 中删除多余模型与影响视觉的模型,然后再重新各自导出为 fbx 文件
  4. 导出全部贴图
  5. 各自导入每个 SECTfbx 文件,然后输出缺漏的贴图名
  6. 使用 py 文件对贴图名进行重命名修复
  7. 各自放好 fbx 文件与其贴图,各自导入 fbx 文件至 3ds Max 中即可
  8. 最终合并全部 fbx 文件(可以是保存 max 文件再合并),最终得到完整地图模型。