如何以编程方式将.scn从Documents文件夹转换为SCNNode?
问题描述:
我在iPhone的Documents
文件夹的文件夹中有一个.scn
文件。我一直在尝试使用SCNSceneSource
打开.scn
文件作为SCNNode
如何以编程方式将.scn从Documents文件夹转换为SCNNode?
//fileDestFolderURL is the folder that holds the .scn file
let sceneSource = SCNSceneSource(url: fileDestFolderURL, options: [:])
let scene = sceneSource?.scene(options: [:])
print(scene) //prints nil
print(scene?.rootNode) //prints nil
不过,我不断收到nil
:(
我的最终目标是采取SCNNode
并将其添加到一个ARSCNView
。
如果有人可以提供他们的意见,将不胜感激!
答
我使用Objective-C来完成你在做什么的国王。这里有一些翻译的代码可以帮助你。这是一个Chair .scn模型的例子。我注意到htat最好是有在Models.scnassets文件夹
class Chair {
func loadModel() {
let virtualObjectScene = SCNScene(named:"Models.scnassets/chair/chair.scn"")
let wrapperNode = SCNNode()
for child: SCNNode in virtualObjectScene?.rootNode?.childNodes {
wrapperNode.addChildNode(child)
}
addChildNode(wrapperNode)
}
}
我要做的就是实例化这个椅子类的一个对象,然后调用loadModel此对象的.scn文件。之后,我可以将它作为子节点添加到场景的根节点,并出现在场景中。
但问题是我的'.scn'文件不在我的应用程序中,当我预先运行(即它不在我的应用程序的'Models.scnassets'中)。我正在下载'.scn'文件,所以它在iPhone的'Documents'文件夹中。所以我不能调用'SCNScene(命名为:“Models.scnassets/chair/chair.scn”)' – 14wml
您是否尝试过使用此功能,将文件路径名更改为您的.scn文件位于文档目录中的任何位置?我已经将它用于Models.scnassets以外的.scn文件,并且它也可以工作。 –