本帖最后由 iorilucifer 于 2017-10-14 11:17 编辑
首先感谢BKVM、绿燕、风之术师、千人斩、邋遢鬼等人的研究,他们的研究为跨版本跨作品移植MOT提供了重要的理论依据。当前已攻克Z52、大蛇MOT移植354s,35OL由于MOT版本及结构和Z52、大蛇相同,有兴趣的朋友可以按照本教程进行尝试。
没有354sMOT修改基础的,请先搜索阅读BKVM帖子: 《进阶修改心得——MOT破解法&单招式动作替换法》 《我的354S最后一个修改教程——动作修改方法初探》
本教程首先对扩容修改做一下补遗:
IDX记录了如下信息: 每个人物IDX有两行,第一行第一个四字节为MOV起始地址/800H,第二个四字节为MOV+ATK+normalmot+ATKMOT1+atkmot2+0字节补齐部分大小/800H,第三个四字节为MOV+ATK+normalmot+ATKMOT1+atkmot2实际大小。 第二行则是PLAYMOT起始地址/800H,第二个四字节为PLAYMOT块+0字节补齐部分大小/800H,第三个四字节为PLAYMOT块实际大小。
着重说一下第二个四字节中为什么有0字节补齐部分——因为354s人物动作地址必须是800H的整数倍数字才能被读取,而MOV+ATK+normalmot+ATKMOT1+atkmot2实际大小或PLAYMOT块实际大小往往并不是800H整数倍,于是不足地方用0字节补齐。
如赵云IDX第二行:
PLAYMOT实际大小为46614H,而加上补齐部分大小为8D×800H=46800H。 如果大家对MOV+ATK+normalmot+ATKMOT1+atkmot2或PLAYMOT块扩容后改变了他的实际大小,那么一定要用0字节在其后补齐至800H的整数倍。然后修改IDX中对应的信息。
下面进入正题,即无双大蛇、Z52MOT移植方法。
1、第一步,修改版本号、去除多余的动画指针、修改关节索引并调整MOT总大小数值。 图一、图二分别为修改前的大蛇MOT和修改后的MOT开头前三行:
图一
图二
5F413147为文件头开始标记。32343030(大蛇)和30343030(354s)为版本号。 0603和1003为MOT大小(高位在后低位在前,实际大小分别为3060H和3100H)。 9A99593F是总动作时间,用数据解释器在9A处可以看到实际数字为8.5E-1,即0..85,乘以60可转换为帧数(0.85×60=51帧)。 图片1中第二行第二个四字节62000000为动画指针,即从开头跳转620H,便到了关节动画起始部分。
图三为大蛇MOT的关节索引,图四为修改后变成354sMOT的关节索引: 图三
图四
其中首行第一个四字节含义如下,以图三举例:1A001900代表,共有1AH个关节,编号为0-19H。 大蛇关节索引顺序和数量和354s的有区别,具体如下: 大蛇关节索引顺序:00 身体整体
01 下身整体
02 右髋
03 左髋
04 右膝
05 左膝
06 右踝
07 左踝
08 上身整体
09 腰(胸部相对于腹部)
0A 脖子(脖子相对于胸)
0B 头(头相对于脖子)
0C 右肩胛
0D 左肩胛
0E 右肩
0F 左肩
10 右肘
11 左肘
12 右腕
13 左腕
14 武器1(相对于手)
15 武器2(相对于手)
16 …………(后面的有手指、武器3、4、5之类的) 354s关节索引顺序:00 身体整体的移动
01 下身的整体移动
02 右髋
03 左髋
04 右膝
05 左膝
06 右踝
07 左踝
08 右脚掌
09 左脚掌
0A 上身的整体移动
0B 脖子
0C 右肩胛
0D 左肩胛
0E 右肩
0F 左肩
10 右肘
11 左肘
12 右腕
13 左腕
14 腰部
15 脖子和脑袋交接处
16 右手掌(其实就是四跟手指的整体移动)
17 左手掌
18-21 十个手指(似乎没什么修改价值,所以没具体考虑)
2A,2B 不详,似乎和手有什么关系
2C左手武器
2D右手武器或长武器
有区别需要调换索引数值的地方:
大蛇索引 |
| 354s索引
| 08 | 上身整体 | 0A | 09 | 腰 | 14 | 0A | 脖子 | 0B | 0B | 头 | 15 | 14 | 左手武器 | 2D | 15 | 右手武器 | 2C | 16 | 手指 | 18 | 17 | 手指 | 19 |
由于关节索引必须按顺序排列,因此大蛇MOT的关节索引少于354s的时候,需要增加关节索引,并屏蔽一些空索引,图四中标为“33”的关节索引都是被屏蔽的,因为33超过了2D,不被读取。由于增加关节索引行段使整个MOT大小变化了,所以要修改图一、图二中大小数值。具体调换索引数值及屏蔽关节的方法,对比图三图四就可以很清楚了。 第二步,修改关节动画及时间轴顺序。如何确定关节动画及时间轴请阅读邋遢鬼帖子:《总结一下前人的工作,以Z52 MOT文件为例》。 大蛇MOT每个关节自由度,均为动画行在前,时间轴在后,如图五:图五
其中自CDCC4C3D直到9A99593F的八个四字节,为八个关键帧,上面八行为八个动画行。354sMOT的每个关节自由度,均为时间轴在前,动画行在后。所以把时间轴两行调换到第一行前,变成如图六格式: 图六
通过以上方式,将单个MOT里的全部关节自由度的动画行和时间轴进行调换,即可完成大蛇MOT向354sMOT的转换。
有不足之处请大家补全。实际修改成果展示视频: https://www.bilibili.com/video/av15372197/
|