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 = ["VeganMilk": ImageInformation(name: "VeganMilk", description: "HealthyOption", image: UIImage(named: "VeganMilk") ?? UIImage())]
override func viewDidLoad() {
super.viewDidLoad()
// Set the view's delegate
sceneView.delegate = self
// Show statistics such as fps and node count
sceneView.showsFPS = true
sceneView.showsNodeCount = true
// Load the SKScene from 'Scene.sks'
if let scene = SKScene(fileNamed: "Scene") {
sceneView.presentScene(scene)
}
func viewWillAppear(_ animated: Bool){
super.viewWillAppear(animated)
guard let referenceImage = ARReferenceImage.referenceImages(inGroupNamed: "milk", bundle: nil)
else {
fatalError("Missing expected catalog resources")
}
let configuration = ARWorldTrackingConfiguration()
configuration.detectionImages = referenceImage
sceneView.session.run(configuration, options: [.resetTracking, .removeExistingAnchors])
sceneView.session.run(configuration)
}
func viewWillDisappear(_ animated: Bool){
super.viewWillDisappear(animated)
sceneView.session.pause()
}
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
}
func imageSeenMarker() -> SKLabelNode {
let labelNode = SKLabelNode(text: "✅")
labelNode.horizontalAlignmentMode = .center
labelNode.verticalAlignmentMode = .center
return labelNode
}
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
}
}
}
Это приложение для практики, которое я нашел на inte rnet, и я пытался запустить его, чтобы камера работала, но ничего не выходит. Я снова начал проверять, будет ли камера работать, но после того, как я добавил код, функция камеры исчезла. Не знаю, почему я просмотрел так много источников, и ничего не помогло.