Project SEKAI 逆向(6):Live2D 资源

Project SEKAI 逆向(6):Live2D 资源 分析variant:世界計劃 2.6.1 (Google Play 台服) 1. Live2D 模型 所有live2d资源都可以在 [abcache]/live2d/下找到;包括模型及动画 ​ 首先,.moc3,.model3,.physics3资源都可以直接利用Live2D Cubism Editor直接打开 ​ 而模型材质需要额外更名;这些信息都在BuildModelData中 补全后即可导入,效果如图 2. 动画 Key 预处理 可惜动画并不是.motion3格式 封包中有的是Unity自己的Animation Clip 在提取资源时,所有的动画key只能读到对应key string的CRC32 hash;导出/操作必须知道string-hash关系 这些string在moc3以外的文件中未知:当然,碰撞出string也不现实;猜想string和Live2D参数有关 ​ 尝试搜索无果 幸运的是Live2D Unity SDK可以免费取得,而且附带样例 还记得前文处理BlendShape时,可以知道AnimationClip的源.anim会有path的源string,而不是crc 尝试加入前缀 可以定位;下面介绍如何构建CRC表,完成crc-string map 3. moc3 反序列化 + CRC打表 每次读取都从moc3文件构造应该可行;不过考虑到有导入纯动画的需求,显然一个常量map是需要的 故需要能读取moc3中所有参数名;参照https://raw.githubusercontent.com/OpenL2D/moc3ingbird/master/src/moc3.hexpat 在 ImHex 中可见: 提取参数名脚本如下: from typing import BinaryIO from struct import unpack # https://github.com/OpenL2D/moc3ingbird/blob/master/src/moc3.hexpat class moc3: Parameters : list Parts: list def __init__(self, file : BinaryIO) -> None: # Header: 64 bytes file....

January 2, 2024 · 2 min · 284 words · mos9527