学习笔记 - 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])
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
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
浙公网安备 33010602011771号