This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| override func viewWillAppear(_ animated: Bool) { | |
| super.viewWillAppear(animated) | |
| startTracking() | |
| } | |
| private func startTracking() { | |
| sceneView.debugOptions = [ARSCNDebugOptions.showFeaturePoints] | |
| let configuration = ARWorldTrackingConfiguration() | |
| configuration.planeDetection = [.vertical, .horizontal] | |
| sceneView.session.run(configuration, options: [.resetTracking, .removeExistingAnchors]) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? { | |
| guard let plane = anchor as? ARPlaneAnchor, | |
| let device = renderer.device, | |
| let geometry = ARSCNPlaneGeometry(device: device) | |
| else { return nil } | |
| geometry.update(from: plane.geometry) | |
| let maskMaterial = SCNMaterial() | |
| maskMaterial.colorBufferWriteMask = [] | |
| geometry.materials = [maskMaterial] | |
| let node = SCNNode(geometry: geometry) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) { | |
| guard let plane = anchor as? ARPlaneAnchor, | |
| let geometry = node.geometry as? ARSCNPlaneGeometry | |
| else { return } | |
| geometry.update(from: plane.geometry) | |
| node.boundingBox = planeBoundary(extent: plane.extent) | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| private func planeBoundary(extent: float3) -> (min: SCNVector3, max: SCNVector3) { | |
| let radius = extent * 0.5 | |
| return (min: SCNVector3(-radius), max: SCNVector3(radius)) | |
| } |
OlderNewer