克隆节点和性能,几何和性能; IOS Scenekit

时间:2015-06-16 19:12:09

标签: ios scenekit

我正在使用Scenekit编写应用程序,客户希望在IOS中推动动画的限制。这个特殊的应用程序有一些要求,我可以通过1500次重绘推出屏幕。即使有这么多的重绘,我已经将FPS锁定到60,这很棒,但是当我添加客户想要的所有元素时,重绘被推到7,500个重绘(是的,这不是错误或者是一个笑话,这是重绘数字,尽管它比我在scenekit中看到的大多数重绘时间快了近50-80倍。在此重绘级别,屏幕包含170万个顶点和大约800k个多边形。这是很多东西,这个应用对于任何人来说真的太多了,因为现在我的FPS下降到15-30FPS,这可以通过在屏幕上绘制3K几何元素来实现。到目前为止我做了什么:

  1. 我克隆了所有节点,克隆允许我推动Scenekit的极限。我能够在屏幕上安装超过1.5k的恒定CAAnimations,在屏幕的不同位置放置超过1.8K的独特几何图形。

  2. 通过循环浏览所有窗口并将其不透明属性设置为是,我强制应用中的所有窗口,视图和屏幕都是不透明的。

  3. 问题是,我可以处理性能问题,但我遇到了节点克隆问题。好吧,节点克隆有效,但问题是推送到屏幕的每个几何体必须具有不同的大小,似乎无法更改每个单独克隆的几何体。我知道我可以改变"复制"的几何形状。 node(SCNNode * node = [masterNode copy];),我知道我可以更改克隆节点的材质属性,但有没有办法更改克隆节点的几何? Apple并没有提供任何关于几何变化的见解,但他们确实谈到了改变材料。我可以假设我不能改变克隆几何的大小吗?我可以更改克隆的变换,旋转,旋转,动画,位置等,但几何体的大小不会改变。为了我的目的,我只需要"身高"圆柱体的变量是可变的,我还有其他一切都处于良好状态,并且,没有其他方法可以将2k重绘推送到没有节点克隆的屏幕,我已经尝试过没有克隆和FPS掉落当使用几何体声明每个几何体和节点时,只有300次重绘时,小于10,因为它是自己的唯一变量。

    最后,考虑到同样的情况,从Scenekit转向Metal,我应该期待多少性能提升。我并不担心数学,细节水平,设置渲染管道的耗时操作或其他任何可能出现的问题,我只是想在这里找到解决问题的最佳解决方案,我还没有使用Metal,因为我不确定在需要多少多边形,顶点和重绘的情况下,我会得到不同的结果。感谢。

1 个答案:

答案 0 :(得分:2)

  

有没有办法改变克隆节点的几何结构

我相信您可以更改烘焙几何体本身,但不能更改参数曲面(不是SCNCylinder)。所以你可以(改变高度):

  • 缩放节点
  • 更改转换矩阵(因此也可以通过不同的方式缩放)
  • 添加几何着色器修改器,在您想要的轴上向/向上移动点

改变实际几何类型会破坏克隆的整个目的,所以我认为没有办法解决这个问题。

  

最后,考虑到同样的情况,从Scenekit转向Metal,我应该期待多少性能提升。

很多。比我看到的大约30%,但这又取决于你的设置。 Metal附带iOS 9,你不需要为你的场景做任何事情,所以只需更新你的一个设备并在那里试一试,看它是否有帮助!

出于好奇:为什么你需要这么多气瓶?你能否以欺骗的方式作弊?