亲自动手衣食无忧。
需要碧蓝航线的精致的舰娘钢材有机体自然要出手解包咯。
最先,碧蓝航线是采用unity游戏制作引擎制作出来的,就必须得有一个用以破译unity数据信息文件(暂且那么叫把)的东西了——
UnityStudio:
下载详细地址:https://github.com/Perfare/AssetStudio/releases;
提议下载32位,64位系统能够兼容问题。32位不可以向上兼容
下载好啦unitystudio缓解压力,寻找unitystudio.exe,双击鼠标打开
缓解压力
出去的是这样的一个页面:
好啦,之后就可以用这个app解数据文件了。
处理掌握包难题,这个时候就要文件了。
登录官方网站,下载安装文件
下载进行,解压安装包。
打开缓解压力目录下的assetsAssetBundlespainting
就可以见到绝大多数以舰娘的拼音命名文件,(舰娘拼音字母后带_h表明婚纱礼服,带数字的表明肌肤,带_tex也是有原画的文件)。
另一部分的原画文件是升级包,在手机上面的Android/date/com.bilibili.azurlane/fires/AssetBundles
手机模拟器都是同一部位。
随后,尽量把这种文件运送到电脑。(例如手机连电脑复制来,手机模拟器像mumu放进分享文件夹里边)
如今,数据文件就做好准备。
逐渐破译数据信息
打开unitystudio,点一下左上方的file,点一下loadfile。
在弹出对话框中寻找缓解压力目录下的assetsAssetBundlespainting
挑选含有_tex的文件打开。
这儿以贝尔法斯特为例子。
啥都没有是否,然后点击上边的assetlist,还是没。
3个文件,正中间-mesh后缀名的是原画破译参数值
type为Texture2D的图片比较大
type为Sprite的图片比较小
各自点一下,会到右侧发生对应的信息内容。
数据文件破译进行。
从现在起导出来
点击export,挑选allasset导出来所有
随后我选择储存在桌面上(还可以没放桌面上)
导出来完成后,unitystudio会打开导出来的文件夹,可能形成三个文件夹分别为
Mesh
Sprite
Texture2D
随后看见一个ps了没有,准备准备逐渐拼图图片把
自然还有一种高档的实际操作——载入-mesh.objw文件,让计算机替你还原
打开MAIN.py键入beierfasite
随后回车键
还原。(自然,我自己写的这个的复原图有断块)
以下是MIAIN.py的代码。(必须有pygame适用)
#coding=utf-8#!python3v=[None]vt=[None]f=[]mod=0try:name=raw_input("输入您船舶的拼音字母(包含肌肤,改,婚纱礼服),和保证mesh文件和png文件和流程在同一目录下
")exceptNameError:name=input("输入您船舶的拼音字母(包含肌肤,改,婚纱礼服),和保证mesh文件和png文件和流程在同一目录下
:")
withopen(name'-mesh.obj','r')asinfo:forinformininfo.readlines():ifinform=="g"name"-mesh
"orinform=="g"name"-mesh_0
":mod=1continue
ifmod==1andinform[0]=="v"andinform[0:2]!="vt":give_v=inform[2:-1].split("")[:]v.append([int(give_v[0].strip()),int(give_v[1].strip())])
ifmod==1andinform[0:2]=="vt":give_vt=inform[3:-1].split("")vt.append([float(give_vt[0]),float(give_vt[1])])
ifmod==2andinform[0]=='f':give=inform[2:-1].split("")f.append([int(give[0].split("/")[0]),int(give[1].split("/")[0]),int(give[2].split("/")[0])])
v_x=[]forainv[1:]:v_x.append(a[0])v_x_max=max(v_x)v_x_min=min(v_x)
x_distance=v_x_max-v_x_min
v_y=[]forainv[1:]:v_y.append(a[1])v_y_max=max(v_y)v_y_min=min(v_y)
y_distance=v_y_max-v_y_min
importpygame
forainrange(len(v)-1):v[a1][0]=abs(v[a1][0])
body_part=[]img=pygame.image.load(name".png")img_up=pygame.transform.flip(img.copy(),False,True)
width=img.get_width()height=img.get_height()pic=pygame.Surface((x_distance,y_distance,),flags=pygame.SRCALPHA,depth=32)forindexin(range(int(len(f))))[::2]:a=[v[f[index*1][0]],v[f[index*1][1]],v[f[index*1][2]]]b=[vt[f[index*1][0]],vt[f[index*1][1]],vt[f[index*1][2]]]c=[v[f[index*1][0]],v[f[index*1][1]],v[f[index*1][2]]]bilt_place=(min([c[0][0],c[1][0],c[2][0]]),min([c[0][1],c[1][1],c[2][1]]))x=int(min([b[0][0],b[1][0],b[2][0]])*width)y=int(min([b[0][1],b[1][1],b[2][1]])*height)wide=int((max([a[0][0],a[1][0],a[2][0]])-(min([a[0][0],a[1][0],a[2][0]])*1)))high=int((max([a[0][1],a[1][1],a[2][1]])-(min([a[0][1],a[1][1],a[2][1]])*1)))cut_size=pygame.Rect(x,y,wide,high)cut=pygame.transform.rotozoom(pygame.transform.flip(img_up.subsurface(cut_size),False,False),0,1)place=(x,y)body_part.append([cut,bilt_place])
forbodyinbody_part:pic.blit(body[0],body[1])pic=pygame.transform.flip(pic,True,True)pygame.image.save(pic,"out-"name'.png')