xcode 如何在RealityKit中动态更改参考锚图像

o8x7eapl  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(147)

我想使用从网络加载的图像作为锚,将对象附加到真实的世界中。
但是,我发现Reality Kit只提供使用asset文件夹中的图像作为锚,这似乎不能通过代码添加。

AnchorEntity(.image(group: "", name: ""))

那么ARKit有没有可能做这样的事情呢?

798qvoo8

798qvoo81#

我找到了一种在代码中加载ARreferenceImage的方法:

//create a CIImage
let image = UIImage(named: "refimage.jpg",
                                        in: Bundle(for: type(of:self)),
                                        compatibleWith: nil)
        let ciimage = CIImage(image: image!)
        let cgimage = convertCIImageToCGImage(inputImage: ciimage!)!
        let arReference = ARReferenceImage(cgimage, orientation: .up, physicalWidth: 0.05)
//add this image into ARReferenceImage<Set>
        refImage.insert(arReference)
//add this set to the ARView Tracking Config
        let config = ARImageTrackingConfiguration()
        config.trackingImages = refImage
//run the config
        arView.session.run(config)

然后,当系统在ARSessionDelegate中检测到图像时,您会收到通知

func session(_ session: ARSession, didAdd anchors: [ARAnchor]) {
        for i in anchors{
            if let a = i as? ARImageAnchor{
                DispatchQueue.main.async {
                    print("find anchor")
                    let imageAnchor = AnchorEntity(anchor: a)
                    self.boxEntity = ModelEntity(mesh: MeshResource.generateBox(size: 0.005),materials: [SimpleMaterial(color: .green, isMetallic: true)])
                    imageAnchor.addChild(self.boxEntity)
                    self.arView.scene.addAnchor(imageAnchor)
                }
            }
        }
    }

相关问题