我是 ARKit2
的新手,并遵循了一些教程和官方文档。
问题
如何添加3d
对象作为SCNNode()
?
代码
let artFrame = SCNBox(width: CGFloat(w), height: CGFloat(h), length: 0.002, chamferRadius: 0.02)
artFrame.firstMaterial?.diffuse.contents = imageToDisplay
let artFrameNode = SCNNode(geometry: artFrame)
artFrameNode.physicsBody = SCNPhysicsBody(type: .static, shape: SCNPhysicsShape(geometry: artFrame, options: nil))
artFrameNode.position = SCNVector3Make(Float(x), Float(y), Float(z*3))
sceneView.scene.rootNode.addChildNode(artFrameNode)
根据上面的代码,我在 SCNNode
中使用预定义的 SCNBox
。有什么方法可以使用 3d
对象,例如 .dae
、.obj
而不是 SCNBox
并换行带图像?
我查看了文档,它说您可以将 Mesh 对象
添加到 SCNNode
:
https://developer.apple.com/documentation/scenekit/scnnode/1419841-init
编辑
每当我添加新的 .dae 并转换为 .scn 时。 Xcode 抛出以下错误:
/Users/paly/Library/Developer/Xcode/DerivedData/sample-bohiilnhthuwfkechtmhscucgccc/Build/Products/Debug-iphoneos/sample.app: resource fork, Finder information, or similar detritus not allowed
Command CodeSign failed with a nonzero exit code
最佳答案
要将.dae
或.obj
对象添加到场景中,您需要获取.dae
的childNode
code> 对象并将其添加到您的场景中。我建议只需使用 Xcode 的编辑器菜单即可将 .dae
文件转换为 .scn
。
您还需要节点的名称,可以在场景图 View 中访问该名称。只需单击 .obj
文件,然后单击 Xcode 场景编辑器左下角的“场景图 View ”按钮即可。在这里,我的节点名称是“objectNode”:
现在您可以将 3D 对象作为 SCNNode
添加到场景中:
override func viewDidLoad() {
super.viewDidLoad()
...
let objectScene = SCNScene(named: "object.scn") // Here, add your .obj or .scn file
let objectNode: SCNNode = objectScene.rootNode.childNode(withName: "YourObjectName", recursively: true) // Get the object name from Scene Graph View, which is "objectNode" for me.
objectNode.position = SCNVector3(0,0,-4)
let scene = SCNScene() // Main scene of the app
scene.rootNode.addChildNode(objectNode)
sceneView.scene = scene
...
}
关于ios - 如何在ARKit2中添加3D对象作为SCNNode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53846726/