设置场景时,您可能希望将类似对象引用到同一名称空间中(例如,效果、头发、集等)。这样您就可以创建类似对象的集合来覆盖其属性并控制其可见性。
可以通过名称空间使用表达式轻松填充集合。
例如,创建一个名为 chr 的名称空间来引用角色。
然后,在 chr 名称空间中,分别创建一个 crowd、hero 和 hair 名称空间。
对象中的引用如下所示:
chr:crowd:chr_crowd_verA
chr:hero:chr_nik
chr:hair:chr_mike_hairgroom
然后,可以使用表达式 chr::* 填充角色集合。
填充集合时,结果将在首次执行计算后缓存,且第二次将层设为可见时,处理将会更快。更改集合或场景时,缓存将失效(并重新进行计算)。
为了提高性能,可以在该层之外另外创建一个层;也就是说,场景层可以在您使用集合填充渲染层和创建覆盖时保持可见。
还可以为尚不存在的数据创建集合。例如,在构建包含大量建筑的城市场景时,请遵循一致的建筑命名约定(例如,citybldg1、citybldg2,依此类推),然后使用 citybl* 等表达式将所有建筑添加到一个集合中。
当您创建一个新场景并导入渲染设置模板,然后将建筑添加到场景中之后,可以通过单击 图标重新应用表达式,建筑会因此自动添加到集合中。
此外,最好在场景层可见时重新排序或启用/禁用集合和覆盖,以提高性能并缩短计算时间。
如果无需可视化场景,请在加载复杂场景之前暂停视口。暂停允许您在场景中进行更改(例如,导入 .json 模板文件),而不必等待视口更新。请参见在 Hypershade 中暂停 Viewport 2.0 和材质查看器
同样,对无需即时提供可视反馈的复杂场景执行多个操作时,也请暂停视口。
确保计算密集型已设置动画对象不在当前渲染层中。 或者,也可以将这些对象添加到集合,并在当前层中禁用此集合。
不必覆盖已设置动画的对象的可见性来提高性能。实际上,您应该避免这样做,因为它可能会导致不正确的行为,除非您在更改“可见性”(Visibility)覆盖的值后更新可见渲染层,这可以通过切换到场景层并返回到当前层来完成。
创建集合时,精确声明表达式将有助于缩短计算时间;例如:|Set|Building|*,而不仅仅是 |Set|*,因为这可以减少集合中的节点数。