如何以编程方式将 Documents 文件夹中的 .scn 转换为 SCNNode?
How to turn .scn from Documents folder into SCNNode programmatically?
我在 iPhone 的 Documents
文件夹中的文件夹中有一个 .scn
文件。我一直在尝试使用 SCNSceneSource
将 .scn
文件转换为 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 最好将 .scn 文件放在 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)
}
}
我所做的是实例化此 Chair class 的一个对象,然后对该对象调用 loadModel。之后,我可以将它作为子节点添加到场景的根节点,它就会出现在场景中。
您应该使用 SCNScene.init(url:options:)
而不是 SCNSceneSource
(主要用于 Collada 文件)。
我在 iPhone 的 Documents
文件夹中的文件夹中有一个 .scn
文件。我一直在尝试使用 SCNSceneSource
将 .scn
文件转换为 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 最好将 .scn 文件放在 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)
}
}
我所做的是实例化此 Chair class 的一个对象,然后对该对象调用 loadModel。之后,我可以将它作为子节点添加到场景的根节点,它就会出现在场景中。
您应该使用 SCNScene.init(url:options:)
而不是 SCNSceneSource
(主要用于 Collada 文件)。