Choose your operating system:
Windows
macOS
Linux
关卡快照(Level Snapshot) 使你能够在关卡的 世界大纲视图 中保存 Actor 的特定配置,并立即将场景恢复到该状态。这样可以大幅简化复杂的设置,并避免对不同场景同一关卡的多个变体进行复制和管理。关卡快照特别适用于虚拟制片,因为它们使用户能够将虚拟环境重置到镜头试拍之间的起始位置,并跟踪拍摄期间可能发生的每个镜头的变化,同时保留关卡的基础起点。
用户还可以灵活选择仅恢复关卡快照的某些Actor或属性,以便满足当前因情况而异的定制需求。 例如,你可选择仅恢复关卡快照的光照或单个Actor的位置。 有经验的用户可以使用 蓝图 构造自定义筛选器,以便根据最复杂的关卡设置管理Actor/属性的恢复,并自动执行常见的项目特定请求。
入门指南
要启用关卡快照功能,你需要安装关卡快照插件。
-
在虚幻编辑器中,转到主菜单并选择 项目设置(Project Settings) 。
-
在 项目设置(Project Settings) 窗口中,找到 插件(Plugins)>关卡快照(LevelSnapshots) 。
-
启用 LevelSnapshots 插件。
-
(可选)启用 关卡快照nDisplay支持 插件。
-
编辑器将提示你重启。
关卡快照中的 nDisplay 支持通过单独的插件实现。这对于使用ICVFX很重要。如果你的项目没有使用nDisplay,则无需为关卡快照插件启用nDisplay支持。
引擎重启完成后,你可以拍摄关卡快照,访问 主工具栏(Main Toolbar) 中的关卡快照(Level Snapshots)菜单,然后打开 关卡快照(Level Snapshots) 窗口。
拍摄快照
有三种拍摄关卡快照的方式:
-
点击主工具栏中的 关卡快照(Level Snapshot) 按钮。
-
点击关卡快照(Level Snapshot)窗口中的 拍摄快照(Take Snapshot) 按钮。
-
使用 远程控制Web应用程序 激活 拍摄快照 。
所有这三种方法都将打开 创建关卡快照(Create Level Snapshot) 窗口。
默认情况下,创建关卡快照(Create Level Snapshot)窗口中显示的新关卡快照将使用
关卡快照将作为资产保存在创建关卡快照(Create Level Snapshot)窗口中 根目录(Root Directory) 下显示的目录中,默认命名为LevelSnapshots。特定关卡快照的子目录位置将基于拍摄关卡快照的 地图(关卡) 名称和 日期(年-月-日) 。你可以更改特定关卡快照的根目录和子目录。你还可以更改新关卡快照的默认命名模式。
如果你在保存之前重命名关卡快照,请注意不要用另一个关卡快照覆盖它,因为修改后的名称将成为新的默认名称,除非你更改或还原它。
使用关卡快照
关卡快照包含世界大纲视图中所有Actor的记录,以及拍摄关卡快照时其组件和属性的状态。拍摄关卡快照时,所有Actor均被记录,无论它们当前在世界大纲视图中是否可见,因此在使用关卡快照在关卡中设置场景时,你可能需要检查Actor的可见性。同样,资产(例如材质)状态不会被记录,因此资产的所有更改都需要使用 源控制 独立跟踪。
创建一个或多个关卡快照后,你可以选择关卡快照并点击 恢复关卡快照(Restore Level Snapshot) 按钮,将所有Actor重置为已保存的状态。
当你恢复关卡快照时,自拍摄关卡快照起对Actor所做的更改都将恢复为保存在关卡快照中的状态。
-
拍摄快照后添加的新Actor将从关卡中移除。
-
拍摄快照后移除的Actor将重新添加到关卡中。
-
所有Actor变换都将恢复为已保存的状态。
-
对Actor属性的更改都将恢复为已保存的状态。
你可以撤消还原关卡快照操作。
当你点击关卡快照时,关卡快照窗口的右侧将显示所有Actor及其组件和属性的列表,这些组件和属性将恢复为关卡快照中保存的状态。
你可以使用复选框手动应用或忽略特定更改,或使用自定义筛选器指定应用或忽略哪些更改;请参阅 创建自定义筛选器 ,了解有关自定义筛选器的更多信息。
如果你的项目中有多个关卡,则仅与当前打开的关卡关联的关卡快照才会在关卡快照窗口中可见。仅在编辑器中打开这些关卡时,才会显示与其他关卡关联的关卡快照。
已知限制
本小节介绍了使用关卡快照时的已知限制。
-
以下Actor和Actor组件不使用关卡快照进行跟踪。如果你想在关卡中使用它们,你需要手动跟踪它们。
-
植被
-
地形
-
USD Actor
-
控制台变量
-
添加到Actor的组件,可以是使用添加组件(Add Component)手动添加的实例化组件,也可以是通过构造脚本添加的组件。
-
-
如果你在创建关卡快照后重命名子关卡,关卡快照系统会将重命名的子关卡中的所有Actor视为新Actor,而不是现有的已更改Actor。你将看到关卡快照系统建议移除Actor以恢复到原始状态。
创建自定义筛选器
关卡快照窗口的中间区域包含自定义筛选器。你可以使用单个筛选器,或使用筛选器组来创建更复杂的筛选器,包括AND和OR布尔运算符。你可以收藏筛选器,还可以保存和加载筛选器以备后用。
将鼠标悬停在筛选器上时,你会在左侧看到绿色或红色栏、复选框和垃圾桶。
-
点击绿色栏会使其变为红色,这将否定筛选器,变换其功能。例如,你的筛选器只包含具有特定标签的Actor,点击它会导致这些Actor被排除在外,同时其他所有内容都会包含在内。相反,点击红色条会使其变为绿色,从而使筛选器返回其原始功能。请参阅 否定关卡快照筛选器 ,了解更多信息。
-
点击复选框将禁用筛选器,并将其灰显,表明它未在使用中。
-
点击垃圾桶图标将删除筛选器。
你还可以否定筛选器、撤消否定以及从筛选器属性启用或禁用筛选器。请参阅 关卡快照筛选器参考 ,了解更多信息。
自定义筛选器基础知识
要创建基本的自定义筛选器,请遵循以下步骤:
-
首先点击 +筛选器组(+Filter Group) 按钮,添加新的 筛选器组(Filter Group) 。
-
点击 添加筛选器(Add Filter) 下拉菜单,然后选择一种常用筛选器,或展开 C++筛选器(C++ Filters) 子菜单以选择筛选器。如果你已经创建 使用蓝图的自定义筛选器 ,你可以从 蓝图筛选器(Blueprint Filters) 子菜单中选择它。你还可以使用 搜索(Search) 文本框查找要添加的特定筛选器。
-
你可以收藏特定的筛选器,以便快速拖入筛选器组。
-
最常用的筛选器包含在标题 常用筛选器(Common Filters) 下的菜单中。其中包括 Actor Changed Transform 、 Actor Has Tag 和 Property Has Name 。
-
-
添加筛选器后,选择它,修改其属性。大多数筛选器至少有一个属性,你需要在它运行之前设置这些属性。例如, Actor Has Tag Filter 需要你提供Actor标签,用于筛选关卡快照。请参阅"关卡快照筛选器参考",了解更多信息。
-
选择已保存的关卡快照,然后点击 刷新结果(Refresh Results) 。现在将根据你配置的筛选器筛选关卡快照中保存的Actor。
-
要保存新筛选器,请打开 加载/保存筛选器(Load/Save Filter) 下拉菜单,然后选择 另存为(Save As) 。系统将打开一个新窗口,你可以在其中命名筛选器,并选择目录以将筛选器作为资产保存。
-
你还可以打开 加载/保存筛选器(Load/Save Filter) 下拉菜单,从显示的列表中选择要加载的筛选器资产,然后点击 加载筛选器(Load filter) 来加载保存的筛选器。如果你已经保存了大量的筛选器,你可以使用 搜索(Search) 栏来查找特定的筛选器。
高级自定义筛选器
关卡快照筛选器具有高级功能,用户可以通过复杂的筛选器组合来实现特定的结果。当你处理包含多个Actor和多个已保存关卡快照的大型关卡时,此功能很有帮助。
-
你可以将多个筛选器添加到同一个筛选器组,并使用AND运算符(用&表示)组合它们。这意味着两个筛选器都将应用于关卡快照,并且只有满足所有筛选条件的Actor才会显示。
-
使用 + 筛选器组(+ Filter Group) 按钮添加其他筛选器组,你可以使用OR运算符组合筛选器。这意味着将显示符合任一筛选器组标准的Actor。
-
若要忽略筛选器组,你可以点击复选框将其禁用,若要包含被忽略的筛选器组,你可以点击复选框将其启用。
-
你可以点击垃圾桶图标删除筛选器组。
-
-
大多数筛选器使用 默认结果(Default Result) 筛选器属性,属性可以设置为:
-
包含(Include) ,其中包含筛选器的结果并排除其他所有内容。
-
排除(Exclude) ,排除筛选器的结果并包括其他所有内容。
-
无所谓(Do Not Care) ,包括或排除根据否定设置直接受筛选器影响的Actor,但所有其他Actor的状态无所谓。
请参阅 关卡快照筛选器参考 ,了解更多信息。
-
若否定默认结果属性中设置为排除的筛选器,实际上将包含筛选器的结果。注意尽量使用定义明确的逻辑,以免混淆筛选器的功能。请参阅 否定关卡快照筛选器 ,了解更多信息。
由于筛选器之间可能存在复杂的交互,我们强烈建议你仔细命名筛选器以便识别其功能,尤其是当其他用户将使用你创建的筛选器时。
关卡快照筛选器逻辑
使用C++创建的所有默认筛选器和使用蓝图创建的所有自定义筛选器基本上都基于以下四种验证检查之一:
-
Is Actor Valid:确定是否可以恢复Actor。
-
Is Property Valid:确定是否可以恢复属性。
-
Is Deleted Actor Valid:确定是否应该重新生成已从关卡中删除的Actor(因为拍摄了关卡快照)。
-
Is Added Actor Valid:确定是否应该取消生成已添加到关卡的Actor(因为拍摄了关卡快照)。
在大多数情况下,我们不建议同时使用Is Actor Valid和Is Property Valid筛选器,因为结果通常没有用。特别注意:
-
不要在关卡快照(Level Snapshot)窗口中的同一个筛选器组中混合两者。
-
创建筛选器时不要实现多个函数(IsActorValid 等)。
在某些特定用例中,你可能希望使用多个筛选器组中的C++筛选器仔细构造此类筛选器,或用作自定义蓝图筛选器。这将允许使用筛选器应用一个关卡快照的某些设置,同时还可以使用另一个筛选器应用另一个关卡快照的不同设置。
例如,考虑具有两个光源选项和两个布景选项的虚拟制片设置。有人可能要求光源采用选项1,布景采用选项2。借助关卡快照筛选器蓝图,你可以创建界面,从不同的关卡快照中获取并应用适当的设置。此设置所需的完整逻辑无法仅使用应用快照到世界(Apply Snapshot to World)按钮进行配置,因此在这种情况下,你需要构造复杂的筛选器。
否定关卡快照筛选器
使用关卡快照筛选器时,有一个比较实用的方法可以使筛选器具有多种用途,那就是否定筛选器。通常,否定筛选器具有以下效果:
-
包含变为排除。
-
排除变为包含。
-
无所谓仍为无所谓。
例如,假设你使用ActorHasTag筛选器仅恢复带有"RestoreMe"标签的Actor。该筛选器的IsActorValid函数为带有该标签的Actor返回包含(Include),为没有该标签的Actor返回排除(Exclude)。如果你在UI中否定筛选器,则行为相反:现在将排除带有"RestoreMe"标签的Actor,并包含所有其他Actor。
某些默认C++筛选器具有其他属性,这些属性也会影响筛选器的功能。对这些筛选器使用否定时要小心,确保在将筛选器应用于关卡快照时达到预期结果。
创建蓝图筛选器
本小节假定你已经熟悉蓝图。请参阅 蓝图 文档,了解更多信息。
要创建新的关卡快照蓝图筛选器,请执行以下步骤:
-
使用关卡快照蓝图筛选器基类创建新蓝图。
-
从可用选项中选择覆盖函数:
-
Is Actor Valid:确定是否可以恢复Actor。
-
Is Added Actor Valid:确定是否应该取消生成已添加到关卡的Actor(因为拍摄了关卡快照)。
-
Is Deleted Actor Valid:确定是否应该重新生成已从关卡中删除的Actor(因为拍摄了关卡快照)。
-
Is Property Valid:确定是否可以恢复属性。
-
-
所选覆盖函数(下例中为Is Actor Valid)在带有一些默认节点的新图表中打开。
-
拖移 Is Actor Valid 节点的 参数 输出引脚,并添加 Break 节点。
从现在开始,你可以为从快照Actor输出或关卡Actor输出分支出来的新筛选器定义逻辑。这将确定根据筛选器的条件验证哪一个。 在本示例的其余部分,我们将创建筛选器,用于检查快照Actor是否为天空光照。
-
删除默认父节点,然后添加适合验证的节点并将其连接到Break节点。在下面的示例中,我们选择了 Cast to Skylight 节点并将其 Object 输入引脚连接到 Break 节点的 Snapshot Actor 输出引脚。
](level-snapshot-filter-blueprint-4.png)
-
将 Is Actor Valid 节点输出引脚连接到 Cast To Skylight 节点输入引脚。复制 Return 节点,并将一个节点连接到 Cast To Skylight 节点的主输出引脚,另一个节点连接到 Cast Failed 输出引脚。
-
为连接到 Cast To Skylight 节点的主输出引脚的 Return 节点的 Return Value 选择 Include ,为连接到 Cast Failed 输出引脚的节点的 Return Value 选择 Exclude 。
-
保存(Save) 并 编译(Compile) 蓝图。生成的筛选器在关卡快照上使用时,只会在关卡快照中包含天空光照Actor。
如果你的蓝图筛选器包含你公开为可编辑实例的变量(在我的蓝图面板中用变量旁边的睁眼图标表示),则在使用时它会出现在该关卡快照筛选器的属性中。
关卡快照编辑器偏好设置
在关卡中创建关卡快照会产生大量的 参考 ,并且会随着关卡快照数量的增加而迅速增加。 在具有大量关卡快照的关卡中删除Actor时,检查参考的过程可能需要很长时间(几分钟或更长)。 为了缩短时间, 关卡编辑器 - 杂项(Level Editor - Miscellaneous) 中有一个 高级编辑器偏好设置(Advanced Editor Preference) ,名为 删除时检查参考(Check References on Delete) ,可以禁用该选项。
应谨慎使用此选项,因为在使用关卡快照时可能会出现错误,即使你希望在删除时检查参考,也不会检查。因此,我们建议你在处理关卡时禁用此设置,以便加快工作流程,并在工作的最后一轮重新启用设置,避免错误。
关卡快照插件设置
点击右上角的齿轮图标,可以直接从关卡快照窗口访问关卡快照插件的设置。
插件设置窗口将打开,显示关卡快照插件设置。
设置 |
说明 |
|
---|---|---|
行为 |
||
黑名单(Blacklist)- Actor类(Actor Classes) |
指定不应被捕获或恢复的Actor类和属性。该属性是一个集合,包含了从下拉菜单中选择的多个元素。 |
|
黑名单(Blacklist)- 组件类(Component Classes) |
指定不应被捕获或恢复的组件类和属性。该属性是一个集合,包含了从下拉菜单中选择的多个元素。 |
|
编辑器 |
||
启用关卡快照工具栏按钮(Enable Level Snapshots Toolbar Button) |
默认启用。 |
|
使用创建表单(Use Creation Form) |
默认启用。 |
|
点击Actor组选择场景中的Actor(Click Actor Group to Select Actor in Scene) |
启用后,点击已修改Actor(Modified Actors)下的Actor组将选择场景中的Actor。此前的选择将取消。默认禁用。 |
|
首选创建表单窗口宽度(Preferred Creation Form Window Width) |
滑块,默认值为1000。 |
|
首选创建表单窗口高度(Preferred Creation Form Window Height) |
滑块,默认值为1000。 |