我想在运行时在 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,它非常慢(几秒钟)。在这期间连主线程都被阻塞了,这意味着UIs无法刷新,h有时app被iOS杀死。从第二次渲染场景开始,速度非常快,主线程运行良好。但是如果我们删除应用程序并重新安装,问题又来了。

任何帮助表示赞赏。

最佳答案

我认为 prepareObjects(_:withCompletionHandler)(在 SCNSceneRenderer 上定义)值得一看。它在后台线程上加载资源。

关于ios - SCNView第一次渲染场景很慢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35594293/

10-11 19:46