def create_blueprint_from_mesh(self): new_blueprint = ue.find_asset(self.path_to_output_asset + '/main_mesh') if new_blueprint is None: ue.log("blueprint class doesn't exists") new_blueprint = ue.create_blueprint( Character, self.path_to_output_asset + '/main_mesh') else: ue.log("blueprint class exists") new_blueprint = ue.find_asset(self.path_to_output_asset + '/main_mesh') # new_blueprint.GeneratedClass.get_cdo().Mesh.RelativeLocation = FVector(0, -200, 150) # new_blueprint.GeneratedClass.get_cdo().Mesh.RelativeRotation = FRotator(0, 0, 0) # add empty static mesh component to blueprint class new_blueprint.GeneratedClass.get_cdo( ).CapsuleComponent.CapsuleHalfHeight = 150 new_blueprint.GeneratedClass.get_cdo( ).CapsuleComponent.CapsuleRadius = 50 st_component = ue.add_component_to_blueprint(new_blueprint, StaticMeshComponent, 'dicom_mesh') ue.log("self.mesh.get_name() = " + self.mesh.get_name()) st_component.StaticMesh = ue.load_object( StaticMesh, self.path_to_output_asset + "/test_test") ue.compile_blueprint(new_blueprint) # saves uasset on the hard disk new_blueprint.save_package() world = ue.get_editor_world() new_actor = world.actor_spawn(new_blueprint.GeneratedClass, FVector(0, 0, 150))
def test_variable(self): new_blueprint = ue.create_blueprint(Character, '/Game/Tests/Blueprints/Test2_' + self.random_string) ue.blueprint_add_member_variable(new_blueprint, 'TestValue', 'int') ue.compile_blueprint(new_blueprint) new_actor = self.world.actor_spawn(new_blueprint.GeneratedClass) new_actor.TestValue = 17 self.assertEqual(new_actor.get_property('TestValue'), 17)
def test_variable(self): new_blueprint = ue.create_blueprint( Character, '/Game/Tests/Blueprints/Test2_' + self.random_string) ue.blueprint_add_member_variable(new_blueprint, 'TestValue', 'int') ue.compile_blueprint(new_blueprint) new_actor = self.world.actor_spawn(new_blueprint.GeneratedClass) new_actor.TestValue = 17 self.assertEqual(new_actor.get_property('TestValue'), 17)
def test_event(self): new_blueprint = ue.create_blueprint(Character, '/Game/Tests/Blueprints/Test3_' + self.random_string) uber_page = new_blueprint.UberGraphPages[0] x, y = uber_page.graph_get_good_place_for_new_node() test_event = uber_page.graph_add_node_custom_event('TestEvent', x, y) x, y = uber_page.graph_get_good_place_for_new_node() node_set_actor_location = uber_page.graph_add_node_call_function(Actor.K2_SetActorLocation, x, y) test_event.node_find_pin('then').make_link_to(node_set_actor_location.node_find_pin('execute')) node_set_actor_location.node_find_pin('NewLocation').default_value = '17,30,22' ue.compile_blueprint(new_blueprint) new_actor = self.world.actor_spawn(new_blueprint.GeneratedClass) self.assertEqual(new_actor.get_actor_location(), FVector(0, 0, 0)) ue.allow_actor_script_execution_in_editor(True) new_actor.TestEvent() self.assertEqual(new_actor.get_actor_location(), FVector(17, 30, 22))
def test_event(self): new_blueprint = ue.create_blueprint( Character, '/Game/Tests/Blueprints/Test3_' + self.random_string) uber_page = new_blueprint.UberGraphPages[0] x, y = uber_page.graph_get_good_place_for_new_node() test_event = uber_page.graph_add_node_custom_event('TestEvent', x, y) x, y = uber_page.graph_get_good_place_for_new_node() node_set_actor_location = uber_page.graph_add_node_call_function( Actor.K2_SetActorLocation, x, y) test_event.node_find_pin('then').make_link_to( node_set_actor_location.node_find_pin('execute')) node_set_actor_location.node_find_pin( 'NewLocation').default_value = '17,30,22' ue.compile_blueprint(new_blueprint) new_actor = self.world.actor_spawn(new_blueprint.GeneratedClass) self.assertEqual(new_actor.get_actor_location(), FVector(0, 0, 0)) ue.allow_actor_script_execution_in_editor(True) new_actor.TestEvent() self.assertEqual(new_actor.get_actor_location(), FVector(17, 30, 22))
def Wtestxx(): selbp = ue.get_selected_assets() for aa in selbp: aa.save_package() uw = aa.WidgetTree allwid = uw.AllWidgets for wb in allwid: if wb.get_class().get_name() == 'TextBlock': try: ue.log(wb.get_name()) wb.Text = '' except: ue.log('Error!!') if wb.get_class().get_name() == 'IMTextBlock': try: ue.log(wb.get_name()) ue.log(wb.Content) wb.Content = '' except: ue.log('Error!!') ue.compile_blueprint(aa) aa.save_package()
spawn_actor_node = uber_page.graph_add_node(K2Node_SpawnActorFromClass, x, y) # set its Class pin pin_class = spawn_actor_node.node_find_pin('Class') pin_class.default_object = Character # get a reference to its 'exec' pin spawn_actor_node_exec = spawn_actor_node.node_find_pin('execute') # link the hello world event to the spawn actor node hello_world_then.make_link_to(spawn_actor_node_exec) x, y = uber_page.graph_get_good_place_for_new_node() # create a 'make transform' node make_transform = uber_page.graph_add_node_call_function( KismetMathLibrary.MakeTransform, x, y) # link the return value of 'make transform' to the 'SpawnTransform' pin of the spawn actor node make_transform.node_find_pin('ReturnValue').make_link_to( spawn_actor_node.node_find_pin('SpawnTransform')) input_key = K2Node_InputKey(Outer=uber_page) input_key.InputKey = Key(KeyName='SpaceBar') input_key_node = uber_page.graph_add_node(input_key, 400, 400) # compile the blueprint ue.compile_blueprint(new_blueprint) # save it ue.editor_save_all()
# link variables intensity_node.node_find_pin('intensity').make_link_to( directional_light_set_intensity.node_find_pin('NewIntensity')) directional_light_node.node_find_pin('Directional_light').make_link_to( directional_light_set_intensity.node_find_pin('self')) # a commodity function for finding an event node def get_event_node(event_name): for node in bp.UberGraphPages[0].Nodes: if node.is_a(K2Node_Event): if node.EventReference.MemberName == event_name: return node # get the ReceiveBeginPlay event node begin_play_node = get_event_node('ReceiveBeginPlay') # link BeginPlay to SetIntensity begin_play_node.node_find_pin('then').make_link_to( directional_light_set_intensity.node_find_pin('execute')) # compile the blueprint ue.compile_blueprint(bp) # open related editor ue.open_editor_for_asset(bp) # spawn it ue.get_editor_world().actor_spawn(bp.GeneratedClass)
def stereo_setup_level_bp_variable(player_sets=[]): from unreal_engine.classes import KismetMathLibrary, K2Node_Timeline, K2Node_ExecutionSequence, K2Node_IfThenElse world = ue.get_editor_world() level_bp = world.CurrentLevel.get_level_script_blueprint() left_channel = player_sets[0] if len(player_sets==4): right_channel = player_sets[1] else: right_channel = None pin = EdGraphPinType(PinCategory='object', PinSubCategoryObject=MediaPlayer) left_media = ue.blueprint_add_member_variable(level_bp, left_channel.get_name(), pin, None, left_channel.get_path_name()) right_media = ue.blueprint_add_member_variable(level_bp, right_channel.get_name(), pin, None, right_channel.get_path_name()) uber_page = level_bp.UberGraphPages[0] # 添加media player节点 # ---------------------------------------------- y, x = uber_page.graph_get_good_place_for_new_node() node_left_media = uber_page.graph_add_node_variable_get(left_channel.get_name(), None, x, y) y, x = uber_page.graph_get_good_place_for_new_node() node_right_media = uber_page.graph_add_node_variable_get(right_channel.get_name(), None, x, y) # 添加open source节点 # ---------------------------------------------- y, x = uber_page.graph_get_good_place_for_new_node() node_open_source_L = uber_page.graph_add_node_call_function(MediaPlayer.OpenSource, x, y) y, x = uber_page.graph_get_good_place_for_new_node() node_open_source_R = uber_page.graph_add_node_call_function(MediaPlayer.OpenSource, x, y) # 连接media source,没办法单独的设置资源,只能通过变量来设置 # ---------------------------------------------- pin = EdGraphPinType(PinCategory='object', PinSubCategoryObject=FileMediaSource) ue.blueprint_add_member_variable(level_bp, player_sets[2].get_name(), pin, None, player_sets[2].get_path_name()) pin = EdGraphPinType(PinCategory='object', PinSubCategoryObject=FileMediaSource) ue.blueprint_add_member_variable(level_bp, player_sets[3].get_name(), pin, None, player_sets[3].get_path_name()) c = uber_page.graph_add_node_variable_get(player_sets[2].get_name(), None, x, y) d = uber_page.graph_add_node_variable_get(player_sets[3].get_name(), None, x, y) pin1=c.node_find_pin(player_sets[2].get_name()) pin2=node_open_source_L.node_find_pin("MediaSource") pin1.make_link_to(pin2) pin1=d.node_find_pin(player_sets[3].get_name()) pin2=node_open_source_R.node_find_pin("MediaSource") pin1.make_link_to(pin2) # 添加>=节点, call_function的函数名可以大写也可以小写,直接按照C++文档的来就可以 # ---------------------------------------------- y, x = uber_page.graph_get_good_place_for_new_node() node_greater = uber_page.graph_add_node_call_function(KismetMathLibrary.EqualEqual_FloatFloat, x, y) # 添加branch节点 # ---------------------------------------------- i = K2Node_IfThenElse() y, x = uber_page.graph_get_good_place_for_new_node() node_branch = uber_page.graph_add_node(i, x, y) # 连接节点 # ---------------------------------------------- pin1 = node_greater.node_find_pin("ReturnValue") pin2 = node_branch.node_find_pin("Condition") pin1.make_link_to(pin2) pin1 = node_left_media.node_find_pin(left_channel.get_name()) pin2 = node_open_source_L.node_find_pin('self') pin1.make_link_to(pin2) pin1 = node_right_media.node_find_pin(right_channel.get_name()) pin2 = node_open_source_R.node_find_pin('self') pin1.make_link_to(pin2) pin1 = node_open_source_L.node_find_pin("then") pin2 = node_open_source_R.node_find_pin("execute") pin1.make_link_to(pin2) pin1 = node_branch.node_find_pin("Then") pin2 = node_open_source_L.node_find_pin("execute") pin1.make_link_to(pin2) # compile the blueprint ue.compile_blueprint(level_bp) # open related editor ue.open_editor_for_asset(level_bp) return node_branch.node_find_pin, node_greater.node_find_pin("A")
import unreal_engine as ue from unreal_engine.classes import Blueprint, K2Node_DynamicCast, Actor, Object from unreal_engine.structs import EdGraphPinType from unreal_engine.enums import EEdGraphPinDirection bp_foo = ue.load_object(Blueprint, '/Game/Foo.Foo') bp_bar = ue.load_object(Blueprint, '/Game/Bar.Bar') graph = ue.blueprint_add_function(bp_foo, 'FooCaster') func = graph.Nodes[0] cast_node = K2Node_DynamicCast(Outer=graph) cast_node.TargetType = bp_bar.GeneratedClass pin_type = EdGraphPinType(PinCategory = 'object', PinSubCategoryObject=Actor) pin = func.node_create_pin(EEdGraphPinDirection.EGPD_Input, pin_type, 'Arg001') graph.graph_add_node(cast_node, 600, 0) cast_node.node_find_pin('Object').category = 'object' cast_node.node_find_pin('Object').sub_category = Object pin.make_link_to(cast_node.node_find_pin('Object')) func.node_find_pin('then').make_link_to(cast_node.node_find_pin('execute')) ue.compile_blueprint(bp_foo)
import unreal_engine as ue from unreal_engine.classes import Blueprint, K2Node_DynamicCast, Actor, Object from unreal_engine.structs import EdGraphPinType from unreal_engine.enums import EEdGraphPinDirection bp_foo = ue.load_object(Blueprint, '/Game/Foo.Foo') bp_bar = ue.load_object(Blueprint, '/Game/Bar.Bar') cast_node = K2Node_DynamicCast() cast_node.TargetType = bp_bar.GeneratedClass graph = ue.blueprint_add_function(bp_foo, 'FooCaster') func = graph.Nodes[0] pin_type = EdGraphPinType(PinCategory = 'object', PinSubCategoryObject=Actor) pin = func.node_create_pin(EEdGraphPinDirection.EGPD_Input, pin_type, 'Arg001') graph.graph_add_node(cast_node, 600, 0) cast_node.node_find_pin('Object').category = 'object' cast_node.node_find_pin('Object').sub_category = Object pin.make_link_to(cast_node.node_find_pin('Object')) func.node_find_pin('then').make_link_to(cast_node.node_find_pin('execute')) ue.compile_blueprint(bp_foo)
"/Game/W_MyWidgetBlueprint" + str(int(time.time()))) widget.modify() widgetTree = widget.WidgetTree slot = CanvasPanelSlot('', widgetTree) image = Image('', widgetTree) slot.Content = image slot2 = CanvasPanelSlot('', widgetTree) text_block = TextBlock('', widgetTree) text_block.Text = 'Hello World' slot2.Content = text_block widgetTree.RootWidget.Slots = [slot, slot2] widgetTree.AllWidgets = [widgetTree.RootWidget, image, text_block] slot.LayoutData = AnchorData( Offsets=Margin(Left=0, Top=0, Right=300, Bottom=300)) slot2.LayoutData = AnchorData(Anchors=Anchors(Minimum=Vector2D(X=0.5, Y=0.5), Maximum=Vector2D(X=1, Y=1))) widget.post_edit_change() ue.compile_blueprint(widget) ue.open_editor_for_asset(widget)
anim_factory.ImportUI.bImportMaterials = False anim_factory.ImportUI.bImportTextures = False anim_factory.ImportUI.AnimSequenceImportData.ImportUniformScale = 0.1; animation = anim_factory.factory_import_object(os.path.join(kaiju_source, kaiju_animation), kaiju_destination) new_blueprint = ue.create_blueprint(Character, kaiju_destination + '/Kaiju_BP') new_blueprint.GeneratedClass.get_cdo().Mesh.SkeletalMesh = mesh new_blueprint.GeneratedClass.get_cdo().Mesh.RelativeLocation = FVector(0, 0, -140) new_blueprint.GeneratedClass.get_cdo().Mesh.RelativeRotation = FRotator(0, 0, -90) new_blueprint.GeneratedClass.get_cdo().CapsuleComponent.CapsuleHalfHeight = 150 new_blueprint.GeneratedClass.get_cdo().CapsuleComponent.CapsuleRadius = 50 new_blueprint.GeneratedClass.get_cdo().Mesh.OverrideMaterials = [None, mat] new_blueprint.GeneratedClass.get_cdo().Mesh.AnimationMode = EAnimationMode.AnimationSingleNode new_blueprint.GeneratedClass.get_cdo().Mesh.AnimationData = SingleAnimationPlayData(AnimToPlay=animation) # move forward tick = new_blueprint.UberGraphPages[0].graph_add_node_event(Actor, 'ReceiveTick') add_movement_input = new_blueprint.UberGraphPages[0].graph_add_node_call_function(Character.AddMovementInput) add_movement_input.node_find_pin('WorldDirection').default_value = '1,0,0' tick.node_find_pin('then').make_link_to(add_movement_input.node_find_pin('execute')) ue.compile_blueprint(new_blueprint) world = ue.get_editor_world() new_actor = world.actor_spawn(new_blueprint.GeneratedClass, FVector(0, 0, 150)) ue.editor_save_all()
widget = WidgetBlueprintFactory().factory_create_new( "/Game/W_MyWidgetBlueprint" + str(int(time.time())) ) widget.modify() widgetTree = widget.WidgetTree slot = CanvasPanelSlot('', widgetTree) image = Image('', widgetTree) slot.Content = image slot2 = CanvasPanelSlot('', widgetTree) text_block = TextBlock('', widgetTree) text_block.Text = 'Hello World' slot2.Content = text_block widgetTree.RootWidget.Slots = [slot, slot2] widgetTree.AllWidgets = [ widgetTree.RootWidget, image, text_block ] slot.LayoutData = AnchorData(Offsets=Margin(Left=0, Top=0, Right=300, Bottom=300)) slot2.LayoutData = AnchorData(Anchors=Anchors(Minimum=Vector2D(X=0.5, Y=0.5), Maximum=Vector2D(X=1, Y=1))) widget.post_edit_change() ue.compile_blueprint(widget) ue.open_editor_for_asset(widget)
cone = world.actor_spawn(Actor) cone.set_actor_label('A Cone') cone_mesh = cone.add_actor_component(StaticMeshComponent, 'Cone') cone_mesh.StaticMesh = ue.load_object(StaticMesh, '/Engine/BasicShapes/Cone') cone.InitialLifeSpan = 30.0 # add a better cone cone2 = world.actor_spawn(StaticMeshActor) cone2.StaticMeshComponent.StaticMesh = ue.load_object(StaticMesh, '/Engine/BasicShapes/Cone') cone2.set_actor_label('A Better Cone') # create a new bleprint bp = ue.create_blueprint(Pawn, '/Game/SuperEvilPawn') ue.add_component_to_blueprint(bp, PawnSensingComponent, 'Eyes') point_light = ue.add_component_to_blueprint(bp, PointLightComponent, 'Light') point_light.Intensity = 9999.9 ue.blueprint_add_member_variable(bp, 'SightPower', 'float') ue.blueprint_set_variable_visibility(bp, 'SightPower', False) ue.compile_blueprint(bp) # instantiate a new actor using the previously created blueprint super_evil_pawn = world.actor_spawn(bp.GeneratedClass) super_evil_pawn.set_actor_label('Super Evil Pawn') super_evil_pawn.SightPower = 2217.30 # save them all ue.editor_save_all()