首页 > 解决方案 > ARKit + SceneKit:光照快速增加多边形数量

问题描述

我正在使用 SceneKit 和 ARKit 创建 AR 应用程序。当我在场景中添加光源时,多边形的数量几乎增加了 3 倍。在我的情况下,这导致了巨大的滞后。我能做些什么来解决这个问题?

标签: 3dscenekitaugmented-realityarkitlight

解决方案


如果您使用正向渲染,则可能会出现此问题。

在这种情况下,当您有一些被少量灯光照亮的对象时,它将为每个灯光渲染一次(有例外,但我们现在先忽略它们)。根据灯光的数量和影响(大小),您的场景几何图形甚至可以渲染数十次。

可以做什么:

  • 使用Deferred渲染而不是渲染ForwardDeferred渲染克服了这个问题,您甚至可以使用数千个灯光。
  • 使用更少的灯光,但让它们更大,所以它们仍然照亮你的场景。
  • 添加Ambient照明,这样您就不需要real到处照明了。仅使用真实的灯光来使某些东西更亮。
  • 查看灯光的半径和/或边界框,并在需要时修复它们。它们用于优化渲染,因此如果灯光未触及某些几何体,您可以忽略它。您可能没有这些数据,因此每盏灯都会触及每一个几何图形。
  • 将你的关卡几何分割成更小的块。这很棘手,因为通过分割几何体可以获得更多的渲染批次,但也可以减少几何体和灯光之间的重叠。这应该根据您的特定级别和照明设置来完成。

推荐阅读