【问题标题】:ARKit + SceneKit: Light rapidly increases number of polygonsARKit + SceneKit:光照快速增加多边形数量
【发布时间】:2019-03-17 16:17:50
【问题描述】:

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

【问题讨论】:

  • 你如何检查多边形的数量?您确定您查看的数字不是绘图调用次数或其他指标吗?
  • 是的,也许。我在scenekit标准调试视图中检查屏幕底部最右边的值
  • 即使这个值是一个drawcalls的数字,场景延迟也会随着这个数字而增加。这个值有三角形作为图标
  • SceneKit统计中,菱形是draw call的数量,三角形是多边形的数量,圆点是顶点的数量。
  • 如果有人能够帮助回答您的场景渲染缓慢的原因,您需要提供更多信息,以便我们能够重现它或至少了解正在发生的事情。例如:您的场景中有什么几何图形?你是如何在场景中添加灯光的?这些灯光是如何配置的(距离、样本数量、阴影等)?

标签: 3d scenekit augmented-reality arkit light


【解决方案1】:

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

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

可以做什么:

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

【讨论】:

    猜你喜欢
    • 2019-04-25
    • 2018-12-25
    • 1970-01-01
    • 2011-08-11
    • 2018-03-11
    • 2018-06-27
    • 1970-01-01
    • 2021-02-02
    • 1970-01-01
    相关资源
    最近更新 更多