ios - AR中替代SCNNode的最佳方式

标签 ios swift arkit scnnode scnscene

我正在开发一个关于人体解剖学的 AR 应用程序。我设置了 AR 和位置检测,一切正常。我需要用其他东西更改或替换当前模型。例如,第一个模型是人体,然后我需要用按钮将其更改为骨骼。我尝试了不同的方法,例如,如果我更改 SCNNode 只是它不会替换为确切的位置。那么在 AR 中替换场景或节点的最佳方法是什么?这是我的代码:

   override func viewDidLoad() {
        super.viewDidLoad()

  sceneView = ARSCNView(frame: view.frame)
        sceneView.delegate = self
        ARView.addSubview(sceneView)

        // Create a new scene
        bodyScene = SCNScene(named: "art.scnassets/test.dae")!
        bodyNode = bodyScene.rootNode.childNode(withName: "Cube", recursively: true)

        let scale:Float  = 0.1
        bodyNode.scale = SCNVector3(x: scale, y: scale, z: scale)
        bodyNode.isHidden = true
        sceneView.scene = bodyScene

        sceneView.autoenablesDefaultLighting = true
        sceneView.automaticallyUpdatesLighting = true

        ARView.addSubview(ARGuideView)


        //Foucus
        setupFocusSquare()

}

最佳答案

如果你想在场景中添加任何其他节点,你必须使用Remove the bodyNode 通过添加此行,您可以删除 bodyNode:

bodyNode.removeFromParentNode()                                                                                                 

如果您只想替换 bodyNode,那么只需将 bodyNode 声明为全局节点,并在您想要更改/替换它时更改重新初始化即可。

关于ios - AR中替代SCNNode的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58518139/

相关文章:

ios - 从 objective-c 调用 swift 类(派生自 NSObject 类)init

ios - 将 "SCNScene"转换为 "SCNNode"

swift - 在 ARKit 和 RealityKit 中使用 Raycast 的真正好处是什么?

ios - 应用程序从挂起状态进入 applicationDidBecomeActive 状态后未发生网络请求

ios - UICollectionView 异步更新大小

ios - 在 iOS 上显示 AdMob 屏幕而不是加载图像

objective-c - NSPNGFileType - 在 Swift 中找不到?

ios - 我可以在 AWSDynamoDBModel 的子类中使用 swift 字典吗?

ios - 为 3D 模型的某些部分添加纹理

ios - 如何将用户分析添加到我的SwiftUI应用中?