求助spine转换工具或者脚本

有没有大佬有spine各种版本转换的工具,3.8.75破解的版本好像有限制,好多功能用不了,买正版的的价格又有点离谱。最近自己找了运行时分析了弄了不少脚本,atlas和json可以转换,但是版本转换总是一直有问题,看了之前有个大佬发的有个转换网站,好像可以转换,但是只能一次次导入,效率很低,特别是转特性的时候。分析网页源码又找不到代码,想弄个离线的纯脚本,这样方便一点,有没有大佬有类似的工具或者给个代码思路,感激不尽 :slightly_smiling_face:

善用搜索

我搜了好多b站教程,但是很多都是要正版spine软件

在提问之前

在你准备要通过电子邮件、新闻群组或者聊天室提出技术问题前,请先做到以下事情:

1. 尝试在你准备提问的论坛的旧文章中搜索答案。

  1. 尝试上网搜索以找到答案。
  2. 尝试阅读手册以找到答案。
  3. 尝试阅读常见问题文件(FAQ)以找到答案。
  4. 尝试自己检查或试验以找到答案。
  5. 向你身边的强者朋友打听以找到答案。
  6. 如果你是程序开发者,请尝试阅读源代码以找到答案

那你为什么不在这里搜索

GitHub - wang606/SpineSkeletonDataConverter::bone:用于在不同格式(skel/json)和不同版本(3.5/3.6/3.7/3.8/4.0/4.1/4.2)之间转换Spine骨架数据的命令行工具。
实际上由于搜索引擎的低效,或者中文信息的匮乏,直接搜索可能无法得到正确结果,哪怕使用正则,但是,使用ai进行搜索,指定在github上或者在线服务是可以搜到的

1 个赞

推坑 : )

000000_smile

你只需要下载release中的两个exe,然后跑底下这个代码
使用方式,python spine_convert.py –input input路径 –output output路径 –to_version 目标版本
支持批量处理文件夹

import argparse
import subprocess
from pathlib import Path
import shutil


def run(cmd):
    print(">>", " ".join(cmd))
    subprocess.check_call(cmd)


def process_folder(
    src_dir: Path,
    dst_dir: Path,
    skel_converter: Path,
    atlas_converter: Path,
    target_version: str
):
    dst_dir.mkdir(parents=True, exist_ok=True)

    # ---- skel -> json -> json ----
    for skel in src_dir.glob("*.skel"):
        name = skel.stem

        tmp_json = dst_dir / f"{name}__tmp.json"
        out_json = dst_dir / f"{name}.json"

        # skel -> source json
        run([
            str(skel_converter),
            str(skel),
            str(tmp_json)
        ])

        # source json -> target json
        run([
            str(skel_converter),
            str(tmp_json),
            str(out_json),
            "-v",
            target_version
        ])

        tmp_json.unlink(missing_ok=True)

    # ---- atlas downgrade ----
    for atlas in src_dir.glob("*.atlas"):
        if atlas_converter.exists():
            run([
                str(atlas_converter),
                str(atlas),
                str(dst_dir)
            ])
        else:
            run([
                "python",
                "SpineAtlasDowngrade.py",
                str(atlas),
                str(dst_dir)
            ])

    # ---- copy png ----
    for png in src_dir.glob("*.png"):
        shutil.copy2(png, dst_dir / png.name)


def main():
    parser = argparse.ArgumentParser(
        description="Recursive Spine skel+atlas downgrade tool"
    )
    parser.add_argument("--input", default="input", help="input root directory")
    parser.add_argument("--output", default="output", help="output root directory")
    parser.add_argument("--to_version", default="3.8.99", help="target spine version")

    args = parser.parse_args()

    input_root = Path(args.input).resolve()
    output_root = Path(args.output).resolve()

    skel_converter = Path("SpineSkeletonDataConverter.exe")
    atlas_converter = Path("SpineAtlasDowngrade.exe")

    if not skel_converter.exists():
        raise FileNotFoundError("SpineSkeletonDataConverter.exe not found")

    print(f"📂 Input root : {input_root}")
    print(f"📂 Output root: {output_root}")
    print(f"🎯 Target ver : {args.to_version}\n")

    # 找到所有包含 skel 的子目录
    skel_dirs = {
        p.parent
        for p in input_root.rglob("*.skel")
    }

    if not skel_dirs:
        print("⚠️ No .skel files found.")
        return

    for src_dir in sorted(skel_dirs):
        rel = src_dir.relative_to(input_root)
        dst_dir = output_root / rel

        print(f"\n=== Processing: {rel} ===")
        process_folder(
            src_dir,
            dst_dir,
            skel_converter,
            atlas_converter,
            args.to_version
        )

    print("\n✅ All folders processed successfully.")


if __name__ == "__main__":
    main()

1 个赞

填坑 (确信

1 个赞