问题描述
当前,我正在研究基于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 (将#修改为@)