如何手动挖出碧蓝航线的立绘 您所在的位置:网站首页 碧蓝航线从哪里看皮肤 如何手动挖出碧蓝航线的立绘

如何手动挖出碧蓝航线的立绘

2024-04-07 18:11| 来源: 网络整理| 查看: 265

以下为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 实验室设备网 版权所有