【UE4】创建材质机器实例
import unreal
mat_folder='/Game/Materials'
def createMat():
mat_name="Master_Material"
texture_name="/Game/Textures/Dog"
asset_tools = unreal.AssetToolsHelpers.get_asset_tools()
if not unreal.EditorAssetLibrary.does_directory_exist(mat_folder):
unreal.EditorAssetLibrary.make_directory(mat_folder)
master_mat = asset_tools.create_asset( mat_name, mat_folder, unreal.Material,unreal.MaterialFactoryNew())
temp_base = unreal.EditorAssetLibrary.find_asset_data(texture_name).get_asset()
b_color_node = unreal.MaterialEditingLibrary.create_material_expression(master_mat,
unreal.MaterialExpressionTextureSampleParameter2D,
-384, 200)
b_color_node.texture = temp_base
unreal.MaterialEditingLibrary.connect_material_property(b_color_node, "RGB",unreal.MaterialProperty.MP_BASE_COLOR)
unreal.MaterialEditingLibrary.recompile_material(master_mat)
unreal.EditorAssetLibrary.save_asset(mat_folder + mat_name, only_if_is_dirty=False)
mat_inst_name = "MI"
mat_inst_path = mat_folder+mat_inst_name
if not unreal.EditorAssetLibrary.does_directory_exist(mat_inst_path):
unreal.EditorAssetLibrary.make_directory(mat_inst_path)
mat_inst = asset_tools.create_asset(mat_inst_name, mat_inst_path, unreal.MaterialInstanceConstant,unreal.MaterialInstanceConstantFactoryNew())
unreal.MaterialEditingLibrary.set_material_instance_parent(mat_inst, master_mat)
unreal.EditorAssetLibrary.save_asset( mat_inst_path, only_if_is_dirty=False)