我提取了尘白禁区的所有spine文件。由于是ue4封装,spine的图集和动画文件被打包成.uexp文件。我使用emeditor打开此文件可以看到相应内容
可以看出其中spine动画文件的导出格式为json。
我尝试将内容拷贝出来,建立.atlas和json文件 试图还原spine动画。但没有成功。
有人知道应该如何将其中的内容提取还原吗?
我提取了尘白禁区的所有spine文件。由于是ue4封装,spine的图集和动画文件被打包成.uexp文件。我使用emeditor打开此文件可以看到相应内容
我后面试了几次 也还原了。 可能最开始时复制内容时,文本编码不对导致的一直不成功。
写个脚本去拆分就好,手动雀氏容易出错
佬,能讲一下是怎么解包的吗
大佬 能讲一下怎么解包的吗 想提取一些立绘
用quickbms 然后用游戏对应的bms脚本。
Luigi Auriemma 你可以在这里下载quickbms工具
脚本我上传在这里。
unreal_tournament_4_0.4.27e_snowbreak.rar (3.0 KB)
使用脚本的时候需要解密的key 0xC14735FB5A872D2AFA76A5C38521AB8B8E21072C08525B913307608BD1182FA7
在这里下载umodel
下载umodel_acl_2.1,将它放在umodel同文件夹中运行
umodel_acl_2.1.rar (680.1 KB)
最后用这个工具提取图片、模型、以及动画
地址填写bms提取的资源地址。在工具里将UE版本设置为4.26 打开后 找到对应文件右键提取即可。
如果你会一些简单的3D。你会得到一个电子手办 XD
发一发写的.uexp提取.atlas和.json的脚本,本来不想发的。然后一看.uexp的格式,啊,真的操蛋。提出来之后有几个json有小问题,懒得修了,直接手动修正。
import path from 'path'
import fs from "fs"
function scanDirectory(directory) {
fs.readdirSync(directory).forEach(file => {
const absolute = path.join(directory, file);
if (fs.statSync(absolute).isDirectory()) {
if (path.basename(absolute) !== 'Textures') {
return scanDirectory(absolute);
}
} else if (path.extname(absolute) === '.uexp') {
processUexpFile(absolute);
}
});
}
function processUexpFile(filePath) {
const originalData = fs.readFileSync(filePath);
let readPtr = 0, writePtr = 0;
while (readPtr < originalData.length) {
if (originalData[readPtr] !== 0x00) {
originalData[writePtr++] = originalData[readPtr];
}
readPtr++;
}
let data = originalData.slice(0, writePtr);
// console.log(dataString_temp);
// dataString_temp.length = index
// data = Buffer.from(dataString_temp, 'hex');
// console.log(data);
let dataStr = data.toString('utf8');
let startAtlas = dataStr.search(/\n[a-zA-Z_]/);
if (startAtlas !== -1) {
startAtlas++; // Adjust to point to the character after '\n'
}
// console.log(startAtlas);
const endAtlas = data.lastIndexOf(Buffer.from([0x69, 0x6E, 0x64, 0x65, 0x78, 0x3A, 0x20, 0x2D, 0x31])) + 10;
dataStr = dataStr.slice(endAtlas)
// const startJson = data.indexOf(Buffer.from([0x7B]), endAtlas);
let startJson = dataStr.search(/(\{\n)|(\{\")/) + endAtlas
if(startJson <= endAtlas) {
startJson = data.indexOf(Buffer.from([0x7B]), endAtlas);
}
console.log(startJson);
const endJson = data.lastIndexOf(Buffer.from([0x7D])) + 1;
if (startAtlas < endAtlas && startJson < endJson) {
const atlasData = data.slice(startAtlas, endAtlas);
const jsonData = data.slice(startJson, endJson);
const baseName = path.basename(filePath, path.extname(filePath));
const dirName = path.dirname(filePath);
fs.writeFileSync(path.join(dirName, baseName + '.atlas'), atlasData);
fs.writeFileSync(path.join(dirName, baseName + '.json'), jsonData);
console.log(path.join(dirName, baseName + '.atlas') + " 已保存");
console.log(path.join(dirName, baseName + '.json') + " 已保存");
}
}
// Replace '<your-directory>' with your directory path
scanDirectory('D:\\demo\\PUBG Dump');
请问下大佬解包游戏版本是多少?是不是最新版本的用不了?
是1.7最新版的
请问一下大佬,在使用bms后再用umod提取仍然会出现错误,这是怎么回事呢?
我找到了问题,原来是我没用管理员权限运行程序
代码小白问下,这个脚本该怎么用呢?
gbt可以回答这个问题,也许你可以尝试下gbt。它是个很不错的工具
gpt是什么?去哪里下载?
大佬,提取为psk并导入blender后,眼睛部分我导入贴图后仍然未显示贴图,如何解决?
我把做好的这个角色模型上传了。 你可以下载这个blend文件。 按照我的方式去设置贴图