【发布时间】:2016-06-06 06:41:42
【问题描述】:
我想在运行时在 SceneKit 中动态加载 Collada 文件。我已使用 copySceneKitAssetst 生成 .DAE 文件并将其放在我的服务器上。应用可以从服务器下载并使用这个文件来初始化一个SCNScene(参考http://www.the-nerd.be/2014/11/07/dynamically-load-collada-files-in-scenekit-at-runtime/)。
执行“./copySceneKitAssets”没有错误,模型可以正常渲染。在将 gameScene 设置为 scnView.scene 之前,我已经调用了[scnView prepareObject:gameScene shouldAbortBlock:NULL]。
问题是 scnView 第一次渲染 gameScene,速度很慢(几秒钟)。在此期间甚至主线程都被阻塞,这意味着 UI 无法刷新,h 有时应用程序被 iOS 杀死。从第二次渲染场景开始,它非常快,主线程运行良好。但是如果我们删除应用程序并重新安装,问题又来了。
感谢任何帮助。
【问题讨论】:
-
哪一部分慢?从您的服务器下载(您应该在后台线程中执行此操作)?下载后处理?实例化场景?从您对所尝试的内容的描述来看,听起来您正在传输压缩的 SCN 文件而不是 DAE 文件(这很好!)。为什么需要让它们在线而不是将它们作为资源嵌入到您的应用中?
-
场景已经实例化。慢的部分是场景实例化后第一次出现。不管是SCN还是DAE都一样。我们这样做是因为资源要更新在不同的时间。
-
您找到解决方案了吗?我有相同的问题大小的轻质材料等没关系。第一次加载场景时,我从 .scn 加载节点并将其添加到场景视图中的场景中,似乎此代码立即发生。机器人模型没有显示,几秒钟后它显示。 addNode -> 在场景中显示节点