swift - Exit ARSCNView to rotate objects with allowsCameraControl -
with arkit create boxes in room , want able exit ar scene see boxes , rotate around it.
tried allowscameracontrol = true , i'm able zoom , drag objects camera turn around them while object turns around me. i've looked 604's video of wwdc explains option self.sceneview.defaultcameracontroller.interactionmode = .orbitturntable can't manage make work...
'box' on horizontal plane , have topbox @ ceiling.
what i've tried:
func getcenterbox() -> scnnode? { guard let _ = self.sceneview.scene.rootnode.childnode(withname: "box", recursively: true) else { return nil } let edges = self.sceneview.scene.rootnode.childnodes.filter { $0.name == "box" } let edgesbyx = edges.sorted { $0.position.x < $1.position.x } let minx = edgesbyx.first?.position.x let maxx = edgesbyx.last?.position.x let edgesbyz = edges.sorted { $0.position.z < $1.position.z } let minz = edgesbyz.first?.position.z let maxz = edgesbyz.last?.position.z let centerbox = scnbox(width: 1, height: 1, length: 1, chamferradius: 0.5) let centernode = scnnode(geometry: centerbox) let centernodeposition = scnvector3make((maxx! - minx!)/2 + minx!, ((topbox?.position.y)! - (edges.first?.position.y)!)/2 + (edges.first?.position.y)!, (maxz! - minz!)/2 + minz!) centernode.position = centernodeposition return scnnode(geometry: scngeometry()) } @ibaction func stopartapped(_ sender: uibutton) { self.sceneview.allowscameracontrol = true self.sceneview.defaultcameracontroller.interactionmode = .orbitturntable self.sceneview.defaultcameracontroller.inertiaenabled = true self.sceneview.defaultcameracontroller.maximumhorizontalangle = 0 self.sceneview.defaultcameracontroller.maximumverticalangle = 0 self.sceneview.defaultcameracontroller.minimumhorizontalangle = 0 self.sceneview.defaultcameracontroller.minimumverticalangle = 0 guard let centernode = getcenterbox() else { return } self.sceneview.scene.rootnode.addchildnode(centernode) let lookatconstraint = scnlookatconstraint(target: centernode) if self.sceneview.pointofview?.constraints == nil { self.sceneview.pointofview?.constraints = [lookatconstraint] } else { self.sceneview.pointofview?.constraints?.append(lookatconstraint) } }
Comments
Post a Comment