gpt4 book ai didi

swift - 如何使用 ARKit 和 RealityKit 检测二维图像

转载 作者:行者123 更新时间:2023-12-05 01:37:41 35 4
gpt4 key购买 nike

我想使用 ARKitRealityKit 检测二维图像。我不想使用 SceneKit,因为很多实现都是基于 RealityKit 的。我在 RealityKit 上找不到任何检测图像的示例。我提到了https://developer.apple.com/documentation/arkit/detecting_images_in_an_ar_experience来自苹果的示例代码。它使用 Scenekit 和 ARSCNViewDelegate

let arConfiguration = ARWorldTrackingConfiguration()
arConfiguration.planeDetection = [.vertical, .horizontal]
arConfiguration.isLightEstimationEnabled = true
arConfiguration.environmentTexturing = .automatic

if let referenceImages = ARReferenceImage.referenceImages(inGroupNamed: "sanitzer", bundle: nil) {
arConfiguration.maximumNumberOfTrackedImages = 1
arConfiguration.detectionImages = referenceImages
}
self.session.run(arConfiguration, options: [.resetTracking, .removeExistingAnchors])

我已经实现了 ARSessionDelegate 但无法检测到图像?

func session(_ session: ARSession, didAdd anchors: [ARAnchor]) {
//how to capture image anchor?
}
func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {
//how to capture image anchor?
}

Apple 已实现 ARSCNViewDelegate 捕获检测到的图像。 RealityKit 中 ARSCNViewDelegate 的等效委托(delegate)是什么?如何检测ARImageAnchor?

最佳答案

ARKit/RealityKit 项目中,为 session() 实例方法使用以下代码:

import ARKit
import RealityKit


class ViewController: UIViewController, ARSessionDelegate {

func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {

guard let imageAnchor = anchors.first as? ARImageAnchor,
let _ = imageAnchor.referenceImage.name
else { return }

let anchor = AnchorEntity(anchor: imageAnchor)

// Add Model Entity to anchor
anchor.addChild(model)

arView.scene.anchors.append(anchor)
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)

arView.session.delegate = self
resetTrackingConfig()
}

func resetTrackingConfig() {

guard let refImg = ARReferenceImage.referenceImages(inGroupNamed: "Sub",
bundle: nil)
else { return }

let config = ARWorldTrackingConfiguration()
config.detectionImages = refImg
config.maximumNumberOfTrackedImages = 1

let options = [ARSession.RunOptions.removeExistingAnchors,
ARSession.RunOptions.resetTracking]

arView.session.run(config, options: ARSession.RunOptions(options))
}
}

并考虑到 - 引用图像的文件夹(.png.jpg 格式)必须具有扩展名 .arresourcegroup

关于swift - 如何使用 ARKit 和 RealityKit 检测二维图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60703268/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com