BlueRoseNote/06-DCC/Blender/导出PSK_PSA脚本.md

2.4 KiB

PSK

import bpy
import os
import math
from io_import_scene_unreal_psa_psk_280 import *

pskPath = 'C:\\Users\\BlueRose\\Desktop\\BLUEPROTOCOL\\Game\\Character\\Enemy'

for root, subdirs, files in os.walk(pskPath):
    for dirName in subdirs:
        print(root + '\\'+ dirName)
        for modelroot, modeldirs, modelfiles in os.walk(root + '\\'+ dirName +'\\Model'):
            for f in modelfiles:
                if f.endswith('.psk'):
                    psk_file = os.path.join(modelroot, f)
                    fbx_file = os.path.splitext(psk_file)[0] + ".fbx"
                    # 清空场景
                    bpy.ops.object.select_all(action='SELECT')
                    bpy.ops.object.delete()
                    pskimport(psk_file, bReorientBones = False)
                    # 使用SmoothShading
                    for obj in bpy.data.objects:
                        if obj.type=='MESH':
                            obj.data.use_auto_smooth = True  
                            obj.data.auto_smooth_angle = math.radians(180)
                            currentmesh = obj.data
                            for setting in currentmesh.polygons:
                                setting.use_smooth = True
                                
                    # 输出骨骼模型
                    bpy.ops.object.select_all(action='SELECT')
                    bpy.ops.export_scene.fbx(filepath=fbx_file,add_leaf_bones=False)

PSA

import bpy
import os
import math
from io_import_scene_unreal_psa_psk_280 import *
pskPath = 'C:\\Users\\BlueRose\\Desktop\\BLUEPROTOCOL\\Game\\Character\\Enemy\\E000_00\\Model\\SK_CH_E000_00.psk'
psaDirPath = 'C:\\Users\\BlueRose\\Desktop\\BLUEPROTOCOL\\Game\\Animations\\Enemy\\E000'

# 清空场景并且导入模型
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete()
pskimport(pskPath, bReorientBones = False, bImportmesh = False, bImportbone = True)

for root, subdirs, files in os.walk(psaDirPath):
    for f in files:
        if f.endswith('.psa'):
            psa_file = os.path.join(root, f)
            pskDirPath = os.path.dirname(pskPath)
            fbx_file = os.path.join(pskDirPath,f) 
            fbx_file = os.path.splitext(fbx_file)[0] + ".fbx"
            print(fbx_file)
            
            psaimport(psa_file)

            bpy.ops.object.select_all(action='SELECT')
            bpy.ops.export_scene.fbx(filepath=fbx_file,add_leaf_bones=False)