菠萝红椒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

学习笔记 - python in UE4

视频教程源自:https://www.bilibili.com/video/BV1PE411d7z8?p=1

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1, Unreal Python API Documentation----https://docs.unrealengine.com/en-US/PythonAPI/index.html

2,导入文件——先创建导入的task,然后执行task去导入,而非直接执行带参数导入

import unreal
import os

texture_tga = 'F:/WorkPlace/Scripts/MyTexture.TGA' 
sound_wav = 'F:/WorkPlace/Scripts/MySound.WAV' 

def buildImportTask(filename, destination_path) : 
    task = unreal.AssetImportTask() 
    task.set_editor_property('automated', True) 
    task.set_editor_property('destination_name', '') 
    task.set_editor_property('destination_path', destination_path) 
    task.set_editor_property('filename'„ filename) 
    task.set_editor_property('replace_existing', True) 
    task.set_editor_property('saves', True) 
    return task 

def executeImportTask(tasks) :
    unreal.AssetToolsHelpers.get_asset_tools().import_asset_tasks(tasks)

def importMyAssets(): 
    texture_task = buildImportTask(texture_tga, '/Game/Textures')
    sound_task = buildImportTask(sound_wav, '/Game/Sounds')
    executeImportTasks([texture_task, sound_task])
import data

 3,导入静态fbx模型和骨骼

import unreal
#import os

def buildImportTask(filename, destination_path, options=None) : 
    task = unreal.AssetImportTask() 
    task.set_editor_property('automated', True) 
    task.set_editor_property('destination_name', '') 
    task.set_editor_property('destination_path', destination_path) 
    task.set_editor_property('filename'„ filename) 
    task.set_editor_property('replace_existing', True) 
    task.set_editor_property('saves', True) 
    task.set_editor_property('options', options) 
    return task 

def executeImportTasks(tasks) :
    unreal.AssetToolsHelpers.get_asset_tools().import_asset_tasks(tasks)
    for task in tasks :
        for path in task.get_editor_property('imported_object_paths') :
            print 'Imported : %s'%path

def importSimpleAssets() :

    texture_tga = 'F:/WorkPlace/Scripts/MyTexture.TGA' 
    sound_wav = 'F:/WorkPlace/Scripts/MySound.WAV' 

    texture_task = buildImportTask(texture_tga, '/Game/Textures')
    sound_task = buildImportTask(sound_wav, '/Game/Sounds')
    executeImportTasks([texture_task, sound_task])

def importMeshAssets() :
     
    static_mesh_fbx = 'F:/korkPlace/Scripts/SM_StaticMesh.FBX' 
    skeletal_mesh_fbx = 'F:/WorkPlace/Scripts/SK_SkeletalMesh.FBX' 
    static_mesh_task = buildImportTask(static_mesh_fbx, '/Game/StaticMeshes', buildStaticMeshImportOptions() )
    skeletal_mesh_task = buildImportTask(skeletal_mesh_fbx, '/Game/SkeletalMes', buildSkeletalMeshImportOptions() )
    executeImportTasks([static_mesh_task, skeletal mesh_task]) 

def importMyAssets(): 
    importMeshAssets()
    

def buildStaticMeshImportOptions() :
    options = unreal.FbxImportUI() 

    options.set_editor_property('import_mesh', True) 
    options.set_editor_property('import_texturess', False) 
    ptions.set_editor_property('import_materials', True) 
    options.set_editor_property('import_as_skeletar', False)
    options.static_mesh_import_data.set_editor_property('import_translations', Vector(50.0, 0.0, 0.0))
    options.static_mesh_import_data.set_editor_property('import_rotation', unreal.Rotator(00.0, 110.0, 0.0))
    options.static_mesh_import_data.set_editor_property('import_uniform_scale', 1.0) 

    options.static_mesh_import_data.set_editor_property('combine_meshess', True)
    options.static_mesh_import_data.set_editor_property('generate_lightmap_u_v', True)
    options.static_mesh_import data.set_editor_property('auto_generate_collision', True)
    return options

def buildSkeletalMeshImportOptions() :
    options = unreal.FbxImportUI() 

    options.set_editor_property('import_mesh', True) 
    options.set_editor_property('import_texturess', False) 
    ptions.set_editor_property('import_materials', True) 
    options.set_editor_property('import_as_skeletar', True)
    options.skeletal_mesh_import_data.set_editor_property('import_translations', Vector(50.0, 0.0, 0.0))
    options.skeletal_mesh_import_data.set_editor_property('import_rotation', unreal.Rotator(00.0, 110.0, 0.0))
    options.skeletal_mesh_import_data.set_editor_property('import_uniform_scale', 1.0) 

    options.skeletal_mesh_import_data.set_editor_property('imprt_morph_targets', True)
    options.skeletal_mesh_import_data.set_editor_property('update_skeleton_reference_pose', False)
    return options
import static fbx

 4,导入动画——要先导入骨架

import unreal
#import os

def buildImportTask(filename, destination_path, options=None) : 
    task = unreal.AssetImportTask() 
    task.set_editor_property('automated', True) 
    task.set_editor_property('destination_name', '') 
    task.set_editor_property('destination_path', destination_path) 
    task.set_editor_property('filename'„ filename) 
    task.set_editor_property('replace_existing', True) 
    task.set_editor_property('saves', True) 
    task.set_editor_property('options', options) 
    return task 

def executeImportTasks(tasks) :
    unreal.AssetToolsHelpers.get_asset_tools().import_asset_tasks(tasks)
    for task in tasks :
        for path in task.get_editor_property('imported_object_paths') :
            print 'Imported : %s'%path

def importSimpleAssets() :

    texture_tga = 'F:/WorkPlace/Scripts/MyTexture.TGA' 
    sound_wav = 'F:/WorkPlace/Scripts/MySound.WAV' 

    texture_task = buildImportTask(texture_tga, '/Game/Textures')
    sound_task = buildImportTask(sound_wav, '/Game/Sounds')
    executeImportTasks([texture_task, sound_task])

def importMeshAssets() :
     
    static_mesh_fbx = 'F:/korkPlace/Scripts/SM_StaticMesh.FBX' 
    skeletal_mesh_fbx = 'F:/WorkPlace/Scripts/SK_SkeletalMesh.FBX' 
    static_mesh_task = buildImportTask(static_mesh_fbx, '/Game/StaticMeshes', buildStaticMeshImportOptions() )
    skeletal_mesh_task = buildImportTask(skeletal_mesh_fbx, '/Game/SkeletalMes', buildSkeletalMeshImportOptions() )
    executeImportTasks([static_mesh_task, skeletal mesh_task]) 

def importAnimationAssets() :
     
    animation_fbx = 'F:NorkPlace/Scrlipts/Animation.FBX'
    ###
    animation_fbx_task = buildImportTask(animation_fbx, '/Game/Animations', buildAnimationImportOptions('/Game/SkeletalMeshes/SK_SkeletalMesh_Skeleton')
    executeImportTasks([animation_fbx_task])   

def importMyAssets():
    #importSimpleAssets()
    #importMeshAssets()
    importAnimationAssets() 

def buildStaticMeshImportOptions() :
    options = unreal.FbxImportUI() 

    options.set_editor_property('import_mesh', True) 
    options.set_editor_property('import_texturess', False) 
    options.set_editor_property('import_materials', True) 
    options.set_editor_property('import_as_skeletar', False)
    options.static_mesh_import_data.set_editor_property('import_translations', Vector(50.0, 0.0, 0.0))
    options.static_mesh_import_data.set_editor_property('import_rotation', unreal.Rotator(00.0, 110.0, 0.0))
    options.static_mesh_import_data.set_editor_property('import_uniform_scale', 1.0) 

    options.static_mesh_import_data.set_editor_property('combine_meshess', True)
    options.static_mesh_import_data.set_editor_property('generate_lightmap_u_v', True)
    options.static_mesh_import data.set_editor_property('auto_generate_collision', True)
    return options

def buildSkeletalMeshImportOptions() :
    options = unreal.FbxImportUI() 

    options.set_editor_property('import_mesh', True) 
    options.set_editor_property('import_texturess', False) 
    options.set_editor_property('import_materials', True) 
    options.set_editor_property('import_as_skeletar', True)
    options.skeletal_mesh_import_data.set_editor_property('import_translations', Vector(50.0, 0.0, 0.0))
    options.skeletal_mesh_import_data.set_editor_property('import_rotation', unreal.Rotator(00.0, 110.0, 0.0))
    options.skeletal_mesh_import_data.set_editor_property('import_uniform_scale', 1.0) 

    options.skeletal_mesh_import_data.set_editor_property('imprt_morph_targets', True)
    options.skeletal_mesh_import_data.set_editor_property('update_skeleton_reference_pose', False)
    return options

def buildAnimationImportOptions(skeleton_path) :
    options = unreal.FbxImportUI() 

    options.set_editor_property('import_animations', True) 
    options.sskleton = unreal.load_asset(skeleton_path)

    options.anim_sequence_import_data.set_editor_property('import_translations', Vector(0.0, 0.0, 0.0))
    options.anim_sequence_import_data.set_editor_property('import_rotation', unreal.Rotator(0.0, 0.0, 0.0))
    options.anim_sequence_import_data.set_editor_property('import_uniform_scale', 1.0) 

    options.anim_sequence_import_data.set_editor_property('animation_length', unreal.FBXAnimationLengthImportType.FBXALIT_EXPORTED_TIME)
    options.anim_sequence_import_data.set_editor_property('remove_redundant_keys', False)
    return options
import fbx animation

 

posted on 2020-09-22 17:10  菠萝红椒  阅读(515)  评论(0)    收藏  举报