Created
April 23, 2018 11:32
-
-
Save Ingelheim/0c6a8382186dd918bceff2f88ec9dad2 to your computer and use it in GitHub Desktop.
This file contains 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
import UIKit | |
import SpriteKit | |
import ARKit | |
struct ImageInformation { | |
let name: String | |
let description: String | |
let image: UIImage | |
} | |
class ViewController: UIViewController, ARSKViewDelegate { | |
@IBOutlet var sceneView: ARSKView! | |
var selectedImage : ImageInformation? | |
let images = ["monalisa" : ImageInformation(name: "Mona Lisa", description: "The Mona Lisa is a half-length portrait painting by the Italian Renaissance artist Leonardo da Vinci that has been described as 'the best known, the most visited, the most written about, the most sung about, the most parodied work of art in the world'.", image: UIImage(named: "monalisa")!)] | |
override func viewDidLoad() { | |
super.viewDidLoad() | |
sceneView.delegate = self | |
sceneView.showsFPS = true | |
sceneView.showsNodeCount = true | |
if let scene = SKScene(fileNamed: "Scene") { | |
sceneView.presentScene(scene) | |
} | |
guard let referenceImages = ARReferenceImage.referenceImages(inGroupNamed: "Mona Lisa Room", bundle: nil) else { | |
fatalError("Missing expected asset catalog resources.") | |
} | |
let configuration = ARWorldTrackingConfiguration() | |
configuration.detectionImages = referenceImages | |
sceneView.session.run(configuration, options: [.resetTracking, .removeExistingAnchors]) | |
} | |
// MARK: - ARSKViewDelegate | |
func view(_ view: ARSKView, nodeFor anchor: ARAnchor) -> SKNode? { | |
if let imageAnchor = anchor as? ARImageAnchor, | |
let referenceImageName = imageAnchor.referenceImage.name, | |
let scannedImage = self.images[referenceImageName] { | |
self.selectedImage = scannedImage | |
self.performSegue(withIdentifier: "showImageInformation", sender: self) | |
return imageSeenMarker() | |
} | |
return nil | |
} | |
private func imageSeenMarker() -> SKLabelNode { | |
let labelNode = SKLabelNode(text: "✅") | |
labelNode.horizontalAlignmentMode = .center | |
labelNode.verticalAlignmentMode = .center | |
return labelNode | |
} | |
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { | |
if segue.identifier == "showImageInformation"{ | |
if let imageInformationVC = segue.destination as? ImageInformationViewController, | |
let actualSelectedImage = selectedImage { | |
imageInformationVC.imageInformation = actualSelectedImage | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment