假设我正确地解释了你,你想做两件事:
在问题的第一部分中,您说您无法加载模型,因为节点太多。由于您尚未发布任何代码,因此很难提供具体的解决方案,但这可能会有所帮助。
(a) 在您SCNScene
创建一个EmptyNode
并将其称为“根”等时,然后将所有实际场景元素设为此子项,例如:
由于我们现在有一个保存场景的“根”节点,我们可以简单地执行以下操作来加载它:
func loadScene(){
//1. Get The Name Of The SCNSceme
guard let hugeScene = SCNScene(named: "SceneKitAssets.scnassets/HugeScene.scn"),
//2. Get The Root Node Which Holds All Your Content
let sceneNode = hugeScene.rootNode.childNode(withName: "Root", recursively: false) else { return }
//3. Add It To Your ARSCNView
self.augmentedRealityView?.scene.rootNode.addChildNode(sceneNode)
//4. Set The Scenes Position 1.5m Away From The Camera
sceneNode.position = SCNVector3(0, 0, -1.5)
//5. Scale It To A Reasonable Size
sceneNode.scale = SCNVector3(0.2,0.2,0.2)
}
您还可以查看在后台线程上加载它,例如:
DispatchQueue.global(qos: .background).async {
self.loadScene()
}
您将需要尝试规模等,但这应该可以帮助您入门。