SceneKit 中的低帧率

Posted

技术标签:

【中文标题】SceneKit 中的低帧率【英文标题】:Low Framerate in SceneKit 【发布时间】:2018-08-22 20:36:27 【问题描述】:

我正在用 SceneKit 编写一个游戏,它被分为关卡。每个关卡都使用不同的基本形状(Xcode/SceneKit 中的默认形状,可在对象库中找到)作为玩家必须避免的“障碍”。所以第一关有块作为障碍物,在 iPhone 6 及以下设备上以 60 FPS 运行,但是当玩家玩使用金字塔作为障碍物的第二关时,FPS 下降到 10。每个关卡中的节点少于 500 个。它在 iPhone 8 上以 60 FPS 运行。发生了什么以及如何解决?

Here 是一个 youtube 链接,显示它们在游戏中的使用方式。它在 iPhone 8 Plus 上运行,没有 FPS 问题;但是,如果在 iPhone 5s 或更低版本上运行,第一级的帧速率会下降得非常低,而第二级则不会。

This 链接为其提供了运行统计信息。 WaitDrawable 占了很大一部分。

这里是线框的图像,有材料和没有材料。

【问题讨论】:

图片,请!!!如果不分析它们各自的线框,甚至无法开始理解金字塔的问题和块的好处。请对没有材料和有材料的模型进行截图。立方体和金字塔都是孤立的,并且在它们的形成中。 @Confused 我更新了问题。另外,为了澄清。这些是在“对象库”中找到的对象,除了节点的颜色之外没有添加任何外部网格。 使用仪器!它会告诉你是什么减慢了渲染速度。 @matt 动画耗时 10 毫秒。 @matt 第一层 WaitDrawable 似乎占据了图形的 50%,而第二层则占 1%。 【参考方案1】:

问题是物理在每一帧上都被调用,然后执行一些逻辑。球员在每一帧都在击球,习惯于让球块居中。我更改了联系人位掩码,所有问题都消失了。

【讨论】:

以上是关于SceneKit 中的低帧率的主要内容,如果未能解决你的问题,请参考以下文章

SceneKit 中的平滑着色

SceneKit 中的金属生成网格

SceneKit 中的自定义动画属性

SceneKit 中的“simd”前缀是啥意思?

从scenekit中的网络服务器加载collada文件

SceneKit 在 RealityKit 中的“allowsCameraControl”等价物