Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. @IBOutlet var sceneView: ARSCNView!
  2.  
  3. override func viewDidLoad() {
  4. super.viewDidLoad()
  5.  
  6. // Set the view's delegate
  7. sceneView.delegate = self
  8.  
  9. // Show statistics such as fps and timing information
  10. sceneView.showsStatistics = true
  11.  
  12. // Create a new scene
  13. let scene = SCNScene()
  14.  
  15. // Set the scene to the view
  16. sceneView.scene = scene
  17. }
  18.  
  19. override func viewWillAppear(_ animated: Bool) {
  20. super.viewWillAppear(animated)
  21.  
  22. // Create a session configuration
  23. let configuration = ARWorldTrackingConfiguration()
  24.  
  25. // Object Detection
  26. configuration.detectionObjects = ARReferenceObject.referenceObjects(inGroupNamed: "FlowerObjects", bundle: Bundle.main)!
  27.  
  28. // Run the view's session
  29. sceneView.session.run(configuration)
  30. }
  31.  
  32. override func viewWillDisappear(_ animated: Bool) {
  33. super.viewWillDisappear(animated)
  34.  
  35. // Pause the view's session
  36. //sceneView.session.pause()
  37. }
  38.  
  39. // MARK: - ARSCNViewDelegate
  40.  
  41. func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
  42.  
  43. let node = SCNNode()
  44.  
  45. if let objectAnchor = anchor as? ARObjectAnchor {
  46. let plane = SCNPlane(width: CGFloat(objectAnchor.referenceObject.extent.x * 1.0), height: CGFloat(objectAnchor.referenceObject.extent.y * 0.7))
  47.  
  48. plane.cornerRadius = plane.width / 8
  49.  
  50. let spriteKitScene = SKScene(fileNamed: "ProductInfo")
  51.  
  52. plane.firstMaterial?.diffuse.contents = spriteKitScene
  53. plane.firstMaterial?.isDoubleSided = true
  54. plane.firstMaterial?.diffuse.contentsTransform = SCNMatrix4Translate(SCNMatrix4MakeScale(1, -1, 1), 0, 1, 0)
  55.  
  56. let planeNode = SCNNode(geometry: plane)
  57. planeNode.position = SCNVector3Make(objectAnchor.referenceObject.center.x, objectAnchor.referenceObject.center.y + 0.5, objectAnchor.referenceObject.center.z) //y was 0.25
  58.  
  59. node.addChildNode(planeNode)
  60.  
  61. }
  62.  
  63. return node
  64. }
  65.  
  66.  
  67. func session(_ session: ARSession, didFailWithError error: Error) {
  68. // Present an error message to the user
  69.  
  70. }
  71.  
  72. func sessionWasInterrupted(_ session: ARSession) {
  73. // Inform the user that the session has been interrupted, for example, by presenting an overlay
  74.  
  75. }
  76.  
  77. func sessionInterruptionEnded(_ session: ARSession) {
  78. // Reset tracking and/or remove existing anchors if consistent tracking is required
  79.  
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement