SceneKit AR游戏帧率降低并且设备使用过程中变热

3
我正在使用ARKit和SceneKit开发一款3D游戏。游戏在60帧每秒的流畅运行,但当我用了一段时间后,设备会变得很热并且帧数降到30帧每秒。能量影响非常大,我在Instruments中注意到了一些东西。我将展示统计数据以及我在Instruments中看到的内容。这里是游戏正常运行时的统计数据,但我不明白为什么节点计数为1.16K。我实际上没有使用太多节点,只是一个简单的水平。

enter image description here

这就是我在Instruments上得到的结果,我不知道它代表什么意思。enter image description here如你所见,能量影响非常大enter image description here

我该如何找出fps为什么会变慢,设备为什么会因为使用而变热?

1个回答

3

使用ARKit的6自由度跟踪以及SceneKit或RealityKit的渲染(多边形几何,PBR着色器和阴影)以每秒60帧的速度是对处理器和图形单元的极大负担。这也会非常快地耗尽您的电池并使手机产生很多热量。对于AR、VR和AI应用程序来说,这是一个普遍的问题。

为了降低能源消耗,请遵循以下建议:

  • 将模型的总多边形数保持在不超过10K
  • 每个场景使用不超过50K个多边形(使用低多边形模型)
  • 不要使用光线追踪阴影(使用预先烘焙或虚假阴影)
  • 尽量不要使用许多PBR着色器,如金属或反射材料
  • 尝试降低跟踪帧率,如果需要,可以降低渲染帧率
  • 请注意物理消耗了大量的处理能力
  • 不要为您的3D模型使用高分辨率JPEG或PNG纹理

谢谢您的回复!我会尝试遵循您的建议。您是否建议我以30帧每秒的速度运行我的游戏? - Daniele Citi
这要看情况。有时候为了避免游戏中出现CPU和电池问题而失去用户,降低帧率以获得不那么完美的跟踪和渲染效果是更好的选择。 - Andy Jazz
@DanieleCiti,这些信息对您有用吗? - Andy Jazz
好的,我确实做了一些事情来使我的游戏FPS尽可能稳定。我仍然在想为什么虽然我的场景中有大约20-30个节点,但节点计数在场景统计信息中如此之高。 - Daniele Citi
1
我不知道你的代码是什么样子的,但我认为问题出在你使用了renderer()方法,这导致了那1000个不必要的节点。 - Andy Jazz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接