Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @IBOutlet var sceneView: ARSCNView!
- override func viewDidLoad() {
- super.viewDidLoad()
- // Set the view's delegate
- sceneView.delegate = self
- // Show statistics such as fps and timing information
- sceneView.showsStatistics = true
- // Create a new scene
- let scene = SCNScene()
- // Set the scene to the view
- sceneView.scene = scene
- }
- override func viewWillAppear(_ animated: Bool) {
- super.viewWillAppear(animated)
- // Create a session configuration
- let configuration = ARWorldTrackingConfiguration()
- // Object Detection
- configuration.detectionObjects = ARReferenceObject.referenceObjects(inGroupNamed: "FlowerObjects", bundle: Bundle.main)!
- // Run the view's session
- sceneView.session.run(configuration)
- }
- override func viewWillDisappear(_ animated: Bool) {
- super.viewWillDisappear(animated)
- // Pause the view's session
- //sceneView.session.pause()
- }
- // MARK: - ARSCNViewDelegate
- func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
- let node = SCNNode()
- if let objectAnchor = anchor as? ARObjectAnchor {
- let plane = SCNPlane(width: CGFloat(objectAnchor.referenceObject.extent.x * 1.0), height: CGFloat(objectAnchor.referenceObject.extent.y * 0.7))
- plane.cornerRadius = plane.width / 8
- let spriteKitScene = SKScene(fileNamed: "ProductInfo")
- plane.firstMaterial?.diffuse.contents = spriteKitScene
- plane.firstMaterial?.isDoubleSided = true
- plane.firstMaterial?.diffuse.contentsTransform = SCNMatrix4Translate(SCNMatrix4MakeScale(1, -1, 1), 0, 1, 0)
- let planeNode = SCNNode(geometry: plane)
- planeNode.position = SCNVector3Make(objectAnchor.referenceObject.center.x, objectAnchor.referenceObject.center.y + 0.5, objectAnchor.referenceObject.center.z) //y was 0.25
- node.addChildNode(planeNode)
- }
- return node
- }
- func session(_ session: ARSession, didFailWithError error: Error) {
- // Present an error message to the user
- }
- func sessionWasInterrupted(_ session: ARSession) {
- // Inform the user that the session has been interrupted, for example, by presenting an overlay
- }
- func sessionInterruptionEnded(_ session: ARSession) {
- // Reset tracking and/or remove existing anchors if consistent tracking is required
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement