Я создаю приложение с дополненной реальностью, которое обнаруживает объекты и над ними появляется всплывающая метка.Я пытаюсь заставить программу распознавать окно, однако, поскольку внешняя среда постоянно меняется, изображение, загруженное в Assets.xcassets, никогда не будет определяться правильно.Итак, я сделал оконную часть окна прозрачной.По сути, я хочу, чтобы камера обнаруживала все, кроме оконного стекла (оконное стекло, часть стены, фон и т. Д.).Я не уверен, как на самом деле это сделать и как это реализовать.
Концептуально я подумал, что смогу каким-то образом заставить программу распознавать прозрачные части окна и игнорировать их.Таким образом, при сравнении изображения, введенного в Assets.xcassets и фактического окна, программа игнорирует оконное стекло и просто обнаруживает все остальное на изображении.
import UIKit
import ARKit
class ViewController: UIViewController {
/// Primary SceneKit view that renders the AR session
@IBOutlet var sceneView: ARSCNView!
/// A serial queue for thread safety when modifying SceneKit's scene graph.
let updateQueue = DispatchQueue(label: "\(Bundle.main.bundleIdentifier!).serialSCNQueue")
// MARK: - Lifecycle
// Called after the controller's view is loaded into memory.
override func viewDidLoad() {
super.viewDidLoad()
// Set the view's delegate
sceneView.delegate = self
// Show statistics such as FPS and timing information (useful during development)
sceneView.showsStatistics = true
// Enable environment-based lighting
sceneView.autoenablesDefaultLighting = true
sceneView.automaticallyUpdatesLighting = true
}
// Notifies the view controller that its view is about to be added to a view hierarchy.
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
guard let refImages = ARReferenceImage.referenceImages(inGroupNamed: "AR Resources", bundle: Bundle.main) else {
fatalError("Missing expected asset catalog resources.")
}
// Create a session configuration
let configuration = ARImageTrackingConfiguration()
configuration.trackingImages = refImages
configuration.maximumNumberOfTrackedImages = 1
// Run the view's session
sceneView.session.run(configuration, options: ARSession.RunOptions(arrayLiteral: [.resetTracking, .removeExistingAnchors]))
}
// Notifies the view controller that its view is about to be removed from a view hierarchy.
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// Pause the view's session
sceneView.session.pause()
}
}
Я хотел бы иметь возможностьиметь изображения окон, которые можно обнаружить.