重装战姬 Spine提取

@Pelom  October 19, 2019

前言

之前就看到这个全是动态立绘的游戏,我以为是用live2d做的,提取出来才发现是spine做的
有一说一,这个动作很少,做立绘还是用live2d效果好一点

预先准备

  • AssetStudio
  • SkeletonViewer

步骤

  1. AssetStudio提取出spine文件,位于Android/data/com.bilibili.zzzj.bili/files/Android中的image文件
  2. 为了给Unity使用,提取出的文件带有多余的后缀:

    • 删除.atlas.txt文件的.txt
    • 删除.skel.bytes文件的.bytes
  3. 预览发现贴图错位,打开.atlas文件发现配置分辨率与图片分辨率不符,写了个python批量更改

    import os
    import sys
    import shutil
    from PIL import Image
    from PIL import ImageFile
    ImageFile.LOAD_TRUNCATED_IMAGES = True
    
    if __name__ == '__main__':
        dirList = os.listdir(os.getcwd())
        tot = 0
        for i in dirList:
            if os.path.isfile(i):
                continue
            sys.stdout.write("\n正在执行文件夹%s" % (i))
            os.system("cd %s & ren *.txt *." % (i))
            fileList = os.listdir(i)
            cnt = 0
            for j in fileList:
                name = os.path.splitext(j)
                if name[1] != '.png':
                    continue
                picName = i + '/' + j
                pic = Image.open(picName)
                w = 0
                with open(i + '/' + name[0] + '.atlas',     'r', encoding='UTF-8') as f:
                    f.readline()
                    f.readline()
                    w = int(f.readline().split(' ')[1]  .split(',')[0])
                pic = pic.resize((w, w),    Image.ANTIALIAS)
                pic.save(picName, 'png')
                cnt = cnt + 1
                sys.stdout.write("\r当前文件夹已完成\r%d    个" % (cnt))
            tot = tot + 1
            sys.stdout.write("\n已完成%d个文件夹" % (tot)   )
            shutil.move(i, '../done/' + i)
        os.system("explorer.exe %s" % ('../done'))

注:

  • SkeletonViewer需要配置Java环境
  • 可能是模型目数过大,有的模型无法使用SkeletonViewer打开

下载

SkeletonViewer(官方)


请勿用作商业用途


添加新评论