【发布时间】:2023-03-03 07:41:21
【问题描述】:
我在一个 ARKit 项目上工作了 4 个月。 我注意到在我的场景 rootNode 中添加一个子节点时,会出现 FPS 下降。设备冻结不到一秒钟。 我做了很多研究和试验,注意到所有 Apple 的代码示例在放置对象时也会出现这种 FPS 下降。 节点是直接添加(scene.rootNode.addChild(child))还是在不同阶段(didUpdateAtTime、didApplyAnimations 等)添加到渲染器循环中都没有关系。 我发现一旦将一个对象添加到场景中,下一个添加的对象将立即渲染。我使用在 SceneKit 编辑器中创建的 3D 模型,克隆它以生成我的不同节点,然后将它们添加为子节点。我在放置对象之前执行此加载工作。
仪器显示渲染器循环在冻结期间处于忙碌状态。
我找到的唯一解决方案是在开始整个体验之前将我的节点添加到加载屏幕后面的场景中。
在使用节点之前渲染节点是游戏编程中的正常行为吗?
谢谢大家
【问题讨论】:
-
这里有同样的问题,你有没有找到任何实际的解决方案而不是简单的解决方法?我需要在 hitTest 之后添加模型:所以我无法预加载它
-
今天我没有找到任何其他方法来解决这个问题......我很确定 Apple 有一个我找不到的解决方案。
-
对象是在您 addChild 的那一刻还是在您使用 addChild 添加它之前实例化的?你有样品要提供吗?
-
@OlegG。在我的例子中,对象已经被实例化了
-
在显示场景之前尝试在此场景中加载您需要的所有对象,然后重用您已经实例化的对象。
标签: ios swift scenekit augmented-reality arkit