ios - 如何在ARKit2中添加3D对象作为SCNNode?

标签 ios scenekit arkit

我是 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对象添加到场景中,您需要获取.daechildNode code> 对象并将其添加到您的场景中。我建议只需使用 Xcode 的编辑器菜单即可将 .dae 文件转换为 .scn

您还需要节点的名称,可以在场景图 View 中访问该名称。只需单击 .obj 文件,然后单击 Xcode 场景编辑器左下角的“场景图 View ”按钮即可。在这里,我的节点名称是“objectNode”:

enter image description here

现在您可以将 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/

相关文章:

image-processing - 无效的引用图像 arkit 1.5

ios - Flutter 应用程序总是在 ios 模拟器中运行时崩溃

ios - 以编程方式加载 webview 并拍摄快照以显示在 collectionView 中

objective-c - 从 CGPoint 获取 SCNVector3

ios - 如何创建具有非预定义顶点数的 SCNode?

ios - 了解 ARKit 中的 3D 对象变换属性

swift - Reality Composer 默认 anchor

ios - Collection View 中不同部分的不同布局

ios - 如何在 Swift 中显示 Json 文件中的多个 TableView?

ios - 方法 "isNode(:insideFrustumOf:)"始终为真