import csv
import unreal
# 获取当前场景
editor_level = unreal.EditorLevelLibrary.get_editor_world()
# 查找门模型Actor
door_actor = unreal.EditorLevelLibrary.find_actor_by_name(editor_level, "GateActor")
if door_actor is not None:
csv_file = "pose_data.csv"
poses = []
# 读取csv文件并获取位姿信息
with open(csv_file, "r") as file:
reader = csv.reader(file)
for row in reader:
# 将位姿信息存储为列表
poses.append(row[0:6])
# 遍历每条位姿信息,对门模型进行设置并截屏
for pose_id, pose in enumerate(poses):
x, y, z, roll, pitch, yaw = pose
location = unreal.Vector(float(x), float(y), float(z))
rotation = unreal.Rotator(float(pitch), float(yaw), float(roll))
# 设置门模型Actor的位置和旋转
door_actor.set_actor_location_and_rotation(location, rotation)
# 请求UE4截屏
file_path = "screenshots/pose_{}.png".format(pose_id)
img_width = 1920
img_height = 1080
reader_mode = unreal.EPixelFormat.PF_B8G8R8A8
set_alpha = True
unlit = True
highres = True
unreal.SystemLibrary.request_screenshot2(door_actor, file_path, img_width, img_height, reader_mode, set_alpha, unlit, highres)
unreal.log_warning("截屏完成!")
else:
unreal.log_error("无法找到门模型Actor!")
这个Python脚本包括以下步骤:
- 获取当前场景和门模型Actor对象
- 读取csv文件并获取位姿信息
- 遍历所有位姿信息,对门模型进行设置并截屏
- 保存截图并在控制台中输出完成信息或错误信息
注意保持csv文件和门模型Actor的名称正确。同时,需要在UE4环境中设置Python接口才能成功运行此脚本。
这个错误通常是因为您未正确设置Python接口,导致Python无法访问UE4编辑器级别的API。请确保根据以下步骤设置Python接口:
- 在UE4编辑器中打开您的项目。
- 转到Edit > Plugins。
- 在左侧的分类列表中选择Scripting。
- 在右侧的插件列表中启用Python Editor Script Plugin。
- 重启UE4编辑器以使更改生效。
请确保在执行脚本之前重新启动编辑器,因为Python脚本需要新的运行时才能重新加载插件。如果已经启用了Python Editor Script插件并重启了编辑器,但仍然遇到此错误,就检查python的脚本是否正确导入了unreal模块。可以在脚本开头添加以下行测试:
import unreal
print(dir(unreal))
这将列出unreal模块的所有属性和方法,包括EditorLevelLibrary。如果找不到EditorLevelLibrary这个属性,那么可能需要重新安装或更新UE4。
Python脚本是在UE4编辑器中的Python控制台或蓝图脚本中运行的。通过以下步骤在UE4中启动Python控制台:
- 打开UE4项目。
- 转到Window > Developer Tools > Python Console。
- 在控制台窗口中,单击鼠标右键以显示菜单,然后选择Run Script File (运行脚本文件)。
- 在打开的文件对话框中,选择包含要运行的Python脚本的文件并点击Open (打开)。
蓝图脚本的运行方式与Python控制台略有不同。需要在蓝图中创建Python脚本节点,然后将代码复制到该节点中。执行蓝图时,UE4将运行这个Python脚本节点。
注:如果Python脚本需要使用UE4编辑器级别的功能(例如关卡编辑器、Actor、Material等),则需要在启动UE4时将Editor选项设置为True,并在运行Python控制台或蓝图脚本时激活该选项。
- 找到UE4Editor.exe的可执行文件。它通常位于以下位置:
C:\Program Files\Epic Games\UE_<version number>\Engine\Binaries\Win64
。 - 右键单击UE4Editor.exe并选择 "创建快捷方式"。
- 在新的快捷方式上右键单击,然后选择 "Properties"(属性)选项。
- 在 "Shortcut" (快捷方式)选项卡中找到 "Target" (目标)输入框。
- 在该输入框中添加编辑器启动参数
-Editor
以启动编辑器,例如:"C:\Program Files\Epic Games\UE_\Engine\Binaries\Win64\UE4Editor.exe" -Editor。
在运行Python控制台或蓝图脚本时激活该选项:
- 在创建Python控制台或蓝图脚本节点之前,选择Edit > Editor Preferences。
- 找到"Python"菜单选项,并在下面找到"Automatically load UClasses for Variables of Type" (自动加载类型变量的UClasses)选项。
- 将该选项设置为"Always" (始终)。
- 打开 UE4 编辑器,并打开要运行 Python 脚本的项目。
- 转到顶部菜单栏中的 "Window"(窗口)选项。
- 在弹出的下拉菜单中,选择 "Developer Tools"(开发者工具)选项。
- 在 "Developer Tools" 菜单下面,单击 "Output Log"(输出日志)。
- 在输出日志窗口中,在文本框中输入
Python
并按下回车键。这将打开 Unreal 的 Python 控制台(Python Console)。 - 在控制台中,输入
execfile("<path-to-script>")
命令,其中<path-to-script>
是您要执行的 Python 脚本的完整路径。
代码示例:
execfile "C:/My Project/MyScript.py"
- 打开 UE4 编辑器,打开项目。
- 转到顶部菜单栏中的 "Edit"(编辑)选项,并选择 "Plugins"(插件)选项。
- 在 "Plugins" 窗口中,选择 "Scripting" 类别。
- 在 "Scripting" 类别下方,将 "Python Editor Script Plugin" 的开关设置为 "Enabled"(已启用)状态。
- 如果想让所有项目都使用相同的 Python 环境,请将 "Use Shared Python Installation" 的开关设置为 "Enabled" 状态。然后,根据您的系统配置,选择您的 Python 安装或虚拟环境的路径。
- 如果想为每个项目设置不同的 Python 环境,请将 "Use Project Specific Python Environment" 的开关设置为 "Enabled" 状态。然后,在 "Project Specific Python Environment" 部分中,选择您想要使用的 Python 可执行文件路径,并指定虚拟环境路径(如果使用虚拟环境)。