尝试使用Python脚本在UE4级别生成静态网格物体actor

时间:2020-10-30 00:27:57

标签: python scripting actor unreal-engine4 blueprint

背景:我正在尝试学习如何使用Python(和蓝图)在UE4中自动生成环境。我已经安装了插件。使用带有Python 2.7的UE4.25(根据python脚本插件)。我对使用脚本语言不太熟悉-并已在蓝图中完成了大部分工作。我已经使用Python将测试fbx / static网格物体成功地添加到了我的内容目录中,并且能够使用Python将普通的(空的)静态网格物体actor生成到关卡中。

目标:我正在尝试使用Python在简单级别上自动生成简单到复杂的资产/静态网格物体模式-由Python后端驱动的自动场景生成。我只希望将其用于编辑工作-而不是实时的(以后的目标)。

问题::生成的唯一方法似乎是使用 EditorLevelLibrary.spawn_actor_from_class EditorLevelLibrary.spawn_actor_from_object 命令。但是,我不能直接使用“静态网格物体”,因为它既不是类也不是对象。我不知道如何将资产重新铸造成正确的形式。我尝试生成一个通用的“静态网格物体Actor”(成功),但是由于这似乎是一个只读属性,因此无法分配“静态网格物体”,而且似乎没有任何set_static_mesh函数。我敢肯定有一种简单的方法可以投射这些东西-但是文档太可怕了。

问题:什么是使用内置的Python脚本插件将现有的静态网格物体并生成多个静态网格物体主体的最佳方法。

import unreal

# Filename paths
staticmesh_fbx = "D:\Data\Unreal Projects\Assets\house_w_collision_3.fbx"
 
def spawnActor():
# Purpose to auto-populate a single (or set) of static meshes in a level     
 
building_mesh = unreal.load_asset('/Game/StaticMeshes/house_w_collision_3.house_w_collision_3')
# can 'load' the asset, but this does not seem to be cast to 'object' type.
 
actor_class = unreal.StaticMeshActor
actor_location = unreal.Vector(0.0,0.0,0.0)
actor_rotation = unreal.Rotator(0.0,0.0,0.0)
 
test_actor = unreal.EditorLevelLibrary.spawn_actor_from_class(actor_class, actor_location, actor_rotation)

1 个答案:

答案 0 :(得分:0)

我感到有些困惑-昨天尝试使这项工作没有成功后,我尝试使用已加载的建筑网状资产,这次它以某种方式起作用:

import unreal

# Filename paths
staticmesh_fbx = "D:\Data\Unreal Projects\Assets\house_w_collision_3.fbx"

def spawnActor():
   obj = unreal.load_asset('/Game/StaticMeshes/house_w_collision_3.house_w_collision_3')
  actor_location = unreal.Vector(0.0,0.0,0.0)
  actor_rotation = unreal.Rotator(0.0,0.0,0.0)
  unreal.EditorLevelLibrary.spawn_actor_from_object(obj, actor_location, actor_rotation)

我不确定为什么以前不起作用-因为我认为加载的资产是一个对象(但之前不起作用)。

相关问题