如何用不同的实例克隆scnnode?

问题描述

当前,我正在研究基于AR的项目,该项目具有复制AR对象的功能,我遇到的问题是当我使用.clone()方法克隆SCNNode时...它会创建相同的实例,并且当我更改名称时复制的SCNNode的名称,它将更改所有节点的名称..如何克隆具有不同名称,modelName等属性的SCNNode?​​ p>

基本上,我希望每个克隆的虚拟对象的特定属性都可以删除该对象..

放置对象的代码

    func placeVirtualObject(_ virtualObject: VirtualObject) {
    guard let cameraTransform = session.currentFrame?.camera.transform,let focusSquarePosition = focusSquare.lastPosition else {
        statusViewController.showMessage("CANNOT PLACE OBJECT\nTry moving left or right.")
        return
    }
    Api.Params.selectedModel = virtualObject
    virtualObject.name = String(Api.Params.inputPreviewId)
    virtualObject.scale = SCNVector3Make(0.01,0.01,0.01)

    virtualObject.setPosition(focusSquarePosition,relativeto: cameraTransform,smoothMovement: false)
    updateQueue.async {
        self.sceneView.scene.rootNode.addChildNode(virtualObject)
    }
}

用于复制节点

        func placeDuplicateVirtualObject(_ virtualObject: VirtualObject) {
        guard let cameraTransform = session.currentFrame?.camera.transform,let focusSquarePosition = focusSquare.lastPosition else {
            statusViewController.showMessage("CANNOT PLACE OBJECT\nTry moving left or right.")
            return
        }
        Api.Params.selectedModel = virtualObject
        let duplicate = virtualObject.clone()
        
        duplicate.name = String(Api.Params.inputPreviewId)
        
        duplicate.scale = SCNVector3Make(0.01,0.01)

        duplicate.setPosition(focusSquarePosition,smoothMovement: false)
        updateQueue.async {
            self.sceneView.scene.rootNode.addChildNode(duplicate)
        }
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)