菜鸟教程小白 发表于 2022-12-12 15:31:24

ios - 克隆节点和性能、几何和性能; IOS 场景包


                                            <p><p>我正在使用 Scenekit 编写一个应用程序,客户希望在 IOS 中突破动画的限制。这个特殊的应用程序要求我在屏幕上进行超过 1,500 次重绘。即使有这么多次重绘,我仍将 FPS 锁定为 60,这很好,但是当我添加客户想要的所有元素时,重绘被推到 7,500 次重绘(是的,这不是一个错误或玩笑,这是重绘次数,尽管它几乎是我使用 scenekit 看到的大多数重绘次数的 50-80 倍)。在这个级别的重绘, 屏幕包含 170 万个顶点和大约 800k 多边形。这是很多东西,对于这个应用程序来说真的太多了,对任何人都没有用,因为现在我的 FPS 下降到 15-30FPS,这是预期绘制超过 3K屏幕上的几何元素。到目前为止我做了什么:</p>

<ol>
<li><p>我克隆所有节点,克隆让我可以突破 Scenekit 的极限。我能够在屏幕上放置超过 1.5k 个常量 CAAnimations,并将超过 1.8K 个独特的几何图形放置在屏幕上的不同位置。</p></li>
<li><p>我通过循环遍历所有窗口并将其 opaque 属性设置为 yes,强制应用中的所有窗口、 View 和屏幕不透明。</p></li>
</ol>

<p>问题是这样的,我可以处理性能问题,但是我遇到了节点克隆的问题。好吧,节点克隆是可行的,但问题是被推送到屏幕的每个几何图形都必须具有不同的大小,而且似乎无法更改每个单独克隆的几何图形。我知道我可以更改“复制”节点的几何形状(SCNNode *node = ;),并且我知道我可以更改克隆节点的 Material 属性,但是有没有办法改变几何形状克隆节点? Apple 没有提供任何关于改变几何形状的见解,但他们确实谈到了改变 Material 。我是否可以假设我无法更改克隆的几何尺寸?我可以更改克隆的变换、枢轴、旋转、动画、位置等,但几何图形的大小不会改变。为了我的目的,我只需要一个圆柱体的“高度”变量是可变的,我的其他一切都井井有条,而且,没有其他方法可以在没有节点克隆的情况下将超过 2k 重绘推送到屏幕上,我已经尝试过了当将每个几何图形和具有几何图形的节点声明为它自己的唯一变量时,无需克隆,FPS 降至 10 以下,仅重绘 300 次。 </p>

<p>最后,在同样的情况下,从 Scenekit 迁移到 Metal,我应该期望性能提升多少。我不担心数学、细节水平、设置渲染管道的耗时操作或其他任何可能出现的问题,我只是想在这里找到解决我的问题的最佳解决方案,我'我还没有使用过 Metal,因为我不确定考虑到需要多少多边形、顶点和重绘,我会得到不同的结果。谢谢。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><blockquote>
<p>is there a way to change the geometry of the cloned node</p>
</blockquote>

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

<ul>
<li>缩放节点</li>
<li>更改转换矩阵(也可以缩放,只是一种不同的方式)</li>
<li>添加一个几何着色器修改器,可以在您想要的轴上向上/向下移动点</li>
</ul>

<p>改变实际的几何形状会破坏克隆的全部目的,所以我认为没有办法解决这个问题。</p>

<blockquote>
<p>Lastly, given this same scenario, how much of a performance increase should I expect by moving from Scenekit to Metal.</p>
</blockquote>

<p>很多。大约是我所见的 30%,但同样取决于您的设置。 Metal 随 iOS 9 一起提供,您无需执行任何操作即可为您的场景获取它,因此只需更新您的一台设备并在那里尝试一下,看看它是否有帮助!</p>

<p>出于好奇:为什么需要这么多气瓶?你不能欺骗他们的渲染方式吗?</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 克隆节点和性能、几何和性能; IOS 场景包,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/30876214/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/30876214/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 克隆节点和性能、几何和性能; IOS 场景包