首页 文章

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

提问于
浏览
2

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

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

  • 我通过循环遍历所有窗口并将其不透明属性设置为是,强制应用程序中的所有窗口,视图和屏幕都是不透明的 .

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

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

1 回答

  • 2

    有没有办法改变克隆节点的几何形状

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

    • 缩放节点

    • 更改转换矩阵(因此也可以通过不同的方式进行缩放)

    • 添加“几何体着色器”修改器,可在所需轴上上下移动点

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

    最后,鉴于同样的情况,从Scenekit转向Metal,我应该期待多少性能提升 .

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

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

相关问题