尼尔机械纪元解包,导入Blender、UE5教程
尼尔机械纪元解包,导入Blender、UE5教程,导入Blender、UE5教程
本教程仅供个人学习研究及技术交流使用,请勿用于任何商业用途。所有游戏资产版权归原作者及游戏公司所有。请支持正版游戏。
参考文献
- https://www.bilibili.com/video/BV1Nd4y1M7KM?spm_id_from=333.788.videopod.episodes&vd_source=ec6f2bd6777a5cba3607eb49e3a4ef43
- https://www.cgjoy.com/thread-217954-1-1.html
- https://www.zhihu.com/people/na-pian-hong-shu-lin/posts
- https://github.com/ArthurHeitmann/NierDocs
- https://github.com/WoefulWolf/NieR2Blender2NieR
- https://github.com/Kerilk/noesis_bayonetta_pc
- https://richwhitehouse.com/index.php?content=inc_projects.php&showproject=91
- https://niermodding.com/res/automata/tools
鸣谢大佬
- CPVDM:https://github.com/WoefulWolf
- Rich Whitehouse:https://x.com/DickWhitehouse
- Brice Videau:https://github.com/Kerilk
- S.银色子弹:https://www.cgjoy.com/home.php?mod=space&uid=703684
- 那片红树林:https://www.zhihu.com/people/na-pian-hong-shu-lin
- 挑食不要啊:https://space.bilibili.com/22296066?spm_id_from=333.788.upinfo.head.click
需要的工具
blender(示例4.2LST):https://www.blender.org/download/lts/4-2/
提取工具Noesis: https://richwhitehouse.com/index.php?content=inc_projects.php&showproject=91
Noesis插件noesis_bayonetta_pc:https://github.com/Kerilk/noesis_bayonetta_pc
解压工具nier_cli:https://github.com/ArthurHeitmann/nier_cli
blender插件NieR2Blender2NieR:https://github.com/WoefulWolf/NieR2Blender2NieR
模型提取
如果你只需要模型,看这个就好
找到资产
找到你的游戏目录下的NieRAutomata\data,这里存放着游戏的所有资产的CPK,CPK相当于一个压缩包
你可以对照着该文档选择你需要提取的包,2B、9S等主要人物的资产存放于data006.CPK,A2在data016.CPK
解压
下载工具nier_cli,这个工具可以用来解压CPK文件,操作很简单,将CPK文件拖入程序文件nier_cli.exe即可
将想要提取的CPK文件拖入nier_cli.exe,这个程序会自动在源文件目录下新建一个文件夹进行解压
我们得到了data006提取的文件

可以看到提取的文件中有四个文件夹,分别代表敌人、扩展、玩家角色、武器
2B的文件在pl文件中
可以看到pl文件中有很多.dtt和.dat文件,其中.dtt中有模型、贴图文件,而.dat文件中有动作文件,只需要模型则不用管.dat文件
和CPK文件一样,nier_cli.exe也可以解压dat和dtt文件,将整个文件夹的文件(或你自己选的文件)拖入程序
程序生成了一个nier2blender_extracted文件夹存储提取的资源
若需要2B的模型,进入文件夹pl0000.dtt
其中.wmb为模型文件,.wtp文件为贴图纹理文件
Blender无法直接导入这两个文件,这时候就需要用到插件
插件导入Blender
使用插件NieR2Blender2NieR可以快速导入.wmb模型文件并自动将.wtp纹理材质与模型匹配
下载安装插件
进入插件的GitHub仓库后,点击Code下的DownLodeZip
这样我们可以得到插件的压缩包,千万不要解压插件,Blender的插件无需解压
进入Blender(示例4.2LST),编辑->偏好设置->插件->从磁盘安装,找到你存放插件的地方,选择插件
最后记得启动
导入wmb模型文件
文件->导入->wmb文件,可以发现多了很多可导入的类型,若只需要模型导入wmb即可
选择2B的模型文件pl0000.wmb
这一步会将当前场景的文件清空,若不希望如此,可以取消勾选Reset Blender Scene On Import
成功导入2B模型与材质
骨骼是竖着的没关系,顶点组的权重没问题,就是K帧可能有点难(但本篇不讲K帧)
如果觉得2B的战甲会勾起一些不好的回忆,可以用插件隐藏Armor_Body-0和Armor_Head-0
最后一定要记得合并模型再导出,否则有bug,透明材质会直接穿透整个身体
如果遇到这种bug把局部对应的材质属性->设置->渲染方法由混合的改为抖动
至此若你只需模型便不用看了,接下来讲这么导出动画
动画提取
请先完成模型提取的解压步骤
解压完了.dat和.dtt文件后,进入.dat文件,可以看到有很多.mot文件和.bxm文件,其中.mot文件就是动画文件
提取的问题
其中2B的动画文件存于pl000f.dat,目测下来有几百个,如果你想一个一个看也可以,NieR2Blender2NieR插件可以导入.mot文件,但这很难找到你需要的动画,当然你可以使用插件的全部导出选项,单击BulkImport复选框即可,但这会导致一个问题
首先你会发现动画导入巨慢,内存不够的还会导致导入失败,并且动画难以拆分,为此,我们需要用到工具Noesis与插件noesis_bayonetta_pc
下载工具与插件
Noesis进入网页无脑点下载再解压就行了,这里不过多介绍
下载好Noesis后,进入noesis_bayonetta_pc项目的Github仓库,查看其发行的版本,下最新版即可,选x64版本就行
下载好后进入Noesis安装目录的Noesis\plugins\x64文件夹,这是用于存放差插件的文件夹,就在该目录下解压插件即可,有同名文件替换就好
批量提取动画文件
其实Noesis64也可以解压CPK文件,双击CPK文件就好,
打开Noesis64,进入解压好CPK的文件夹的pl文件夹(很多.dtt和.dat那个),双击pl0000.dtt,会弹出对话框,要求你选择模型对应的文件
点击OK,接着选择pl000f.dat,2B的动作文件存放于此处
再次弹出对话框,但这次选择取消
为方便预览,我们可以打开Tools->DataViewer
其中mesh里装着2B的模型,Animation则是2B的动画
我们可以双击模型战甲的Skiprender以跳过渲染(最后导出还是会附加战甲)
检查Tools->BayonettaPC->AnimationPrompt参数是否为1

右击模型文件->Export
选择希望导出的路径,但路径最后一定要是pl0000out
动画导出选择动画序列,这样才可以批量导出,避免动画全绑定再一个骨骼上
单击Export后,又会弹出对话框问你动作文件,老样子点击OK后选择pl000f.dat,在对话框第二次问你时点击取消,这样Noesis就会开始批量导出所有动画为FBX动画
在我们输出动画的文件下会发现还连带着输出了角色的纹理和模型
将动画导入Blender
直接导入的问题
虽然Noesis也可以导出人物模型,但有两个Bug,其一是模型导入时会缩小100倍,这很好解决,在导入时放大100倍即可,其二时模型导入Blender后会出现经典的贴图错误,全身发紫

解决方法如下
方法1
- 直接使用NieR2Blender2NieR插件导入.wmb模型(记得取消勾选清空场景),但这会出现问题,.wmb模型无法套用动作,因为他们的骨骼命名不同



- 隐藏骨骼、战甲方便操作,进入着色视图开始着色,我们要利用.wmb模型已经贴好的贴图替换掉.fbx的贴图
任意选择身体上紫色部分,将其材质替换为同名材质


一个一个换完材质,这样问题就解决了

方法2
继方法1的第一步之后执行以下代码修改骨骼命名,使之于动画骨骼名称一样
1 | import bpy |
导入动作
我们现在已经完成了模型材质的修复,并且批量将动作导出为FBX格式,如果你想用其他软件自己尝试不同动画至此可自己去试试了,我这主要将Blender如何操作,你可以参考该方法去其他软件尝试
导入动画的FBX文件(可以批量导入,很慢,记得调整缩放100倍)

可以发现导入了一堆骨骼,就是这些骨骼驱动了动画,现在只需要将模型的骨骼于动画骨骼链接即可先隐藏刚刚导入的动画骨骼,方便操作,显示角色模型的骨骼,进入动画窗口

将时间轴改为动作编辑器

在时间轴上将动画绑定为动画骨骼


摁下空格键即可播放动画了
角色动作id整理:
在查看武器动画时会发现武器种类是有划分id的,而且人物动画和武器动画id是有匹配关系的
通用动作: 动画id:[0256) 十六进制:[099)
小型剑000: 动画id:[256512) 十六进制:[100200)
大型剑200: 动画id:[512768) 十六进制:[200300)
抢400: 动画id:[7681024) 十六进制:[300400)
格斗600: 动画id:[10241280) 十六进制:[400500)
空手: 动画id:[12801536) 十六进制:[500600)
小型剑连招:
弱连击:动作id【00256、00257、00258、00259、00260、00261、00262】
弱长按:动作id【】
强连击:动作id【00272、00275、00278】
强长按:动作id【】
抢连招:
弱连击:动作id【00768、00769、00770、00771、00772、00773】
当然解包出来的动作文件编号是16进制,可以用以下代码替换
1 | import os |
导入UE5
前置步骤
我们查看任一动画的骨骼,可以发现他们的对象名都为bone-1
虚幻里要求所有动画资产必须要有一个与角色根骨骼名称相同的根骨骼,而这个特点也导致我们需要保持命名相同
几百个动画资产,毕竟是二进制文件,我们不可能一个个去改,所以我们可以更改角色的对象名
这里仍用2B的模型做演示
我们将pl0000与pl0000Amt都改为bone-1
接着解决纹理贴图问题,Nier使用的贴图类型为.dds,而问题在于Unreal无法导入.dds的贴图,为了保证透明效果,我们选用PNG
首先,关闭自动打包资源,我们需要将所有.dds贴图文件改为.PNG文件,为此我们不能使用打包的资源,要重新连接
接着选则解包资源,选择使用当前目录的文件,这样会将模型所用到的所有贴图打包放入textures文件夹
接着我们需要将这些.dds文件转换为.PNG文件,这里推荐用XnConvert,可以快速批量转换文件类型
下载软件后打开,将textures文件夹的图片全部拖入软件
点击输出选项卡,将格式改为PNG,位置可以和dds文件放在一起或者自己决定,但是最后还是要放回textures文件夹
删除原来的.dds文件(或是自己存起来,但不要放在textures及其子文件夹下),转而放入刚刚生成的.PNG文件
重启blender工程文件,可以发现当前角色模型贴图呈现错误的紫色,这是因为我们更改了图片的类型,而blender所链接的贴图文件名还没更改
现在我们只需要让blender所链接的贴图文件名更改即可,用如下脚本
1 | import bpy |

成功赋予贴图,此时你可以选择打包资源
导出FBX文件
现在进行FBX文件的导出
在刚刚我们解包了角色的材质贴图放在了textures文件夹,在此建议把FBX模型文件也放入textures,他俩将形影不离
导出时有两个设置要改,一个是由于unreal以x为正方向,所以需要将朝向改为x向前z向上,还有就是关闭动画选项
至此,模型成功导出unreal可用的FBX模型
导入Unreal
直接将我们的FBX模型拖入你的项目,直接导入所有,可能会有许多纹理命名报错和骨骼报错,不过不用管他
我们可用看到2B的羽袖上透明贴图没有起效果
进入羽袖对应的纹理
在细节面板上我们可以注意到混合模式默认为不透明,这导致我们无法使用透明通道,将其修改为已遮罩就可以解决该问题

头发同理
至此我们完美的导入了2B小姐姐
导入动作
我们前面依旧将所有.mot动作导出为.FBX文件并以十进制重命名了,至于具体需要什么动作只能参考上述对照表,这里拿50号动作举例如何导入
有两处地方需要我们设置
- 骨骼要选择模型的骨骼
- 前面有说Noesis导出的模型动作有bug导致大小缩小了100倍,这里需要放大100倍


我们成功导入了2B小姐姐叉腰的动作
最后,愿人类荣光永存