如何手动挖出碧蓝航线的立绘 |
您所在的位置:网站首页 › pygame图层 › 如何手动挖出碧蓝航线的立绘 |
以下为MIAIN.py的代码。(必须要有pygame支持) # coding=utf-8#! python3v = [None]vt = [None]f = []mod = 0try: name = raw_input("请输入船只的拼音(包括皮肤,改,婚纱),和确保mesh文件和png文件和程序在同一目录下\n\n\t")except NameError: name = input("请输入船只的拼音(包括皮肤,改,婚纱),和确保mesh文件和png文件和程序在同一目录下\n\n:\t") with open(name + '-mesh.obj', 'r') as info: for inform in info.readlines(): if inform == "g " + name + "-mesh\n" or inform == "g " + name + "-mesh_0\n": mod += 1 continue if mod == 1 and inform[0] == "v" and inform[0:2] != "vt": give_v = inform[2:-1].split(" ")[:] v.append([int(give_v[0].strip()), int(give_v[1].strip())]) if mod == 1 and inform[0:2] == "vt": give_vt = inform[3:-1].split(" ") vt.append([float(give_vt[0]), float(give_vt[1])]) if mod == 2 and inform[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 = []for a in v[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 = []for a in v[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 import pygame for a in range(len(v) - 1): v[a + 1][0] =abs(v[a + 1][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)for index in (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]) for body in body_part: pic.blit(body[0], body[1])pic = pygame.transform.flip(pic, True, True)pygame.image.save(pic, "out-"+name + '.png') |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |