如何将AnchorEntity放置在固定位置?

时间:2019-07-25 12:16:33

标签: ios arkit realitykit

我创建了一个带有子框的AnchorEntity。当检测到水平面时,该框将自动添加到屏幕并放置在该平面上。 但是盒子在移动。 e。当检测到另一架飞机时。如何将EntityAnchor绑定到第一个平面并将其保持在同一位置? 谢谢!

let anchorEntity = AnchorEntity(plane: .horizontal, classification: .any, minimumBounds: [0.1, 0.1])
let box = MeshResource.generateBox(size: 1.0, cornerRadius: 0.1)
let metal = SimpleMaterial(color: .red, isMetallic: true)
let model = try ModelEntity(mesh: box, materials: [metal])
anchorEntity.addChild(model)
arView.scene.addAnchor(anchorEntity)

我尝试使用会话委托并仅设置一次转换,但这不能解决问题:

func session(_ session: ARSession, didUpdate frame: ARFrame) {
    let screenCenter = CGPoint(x: arView.frame.midX, y: arView.frame.midY)

    let results = arView.hitTest(screenCenter, types: [.existingPlane])
    guard let result = results.first(where: { result -> Bool in
        guard result.distance > 0.2 && result.distance < 3 || self.coachingOverlay.isActive else {
            return false
        }

        guard let planeAnchor = result.anchor as? ARPlaneAnchor,
            planeAnchor.alignment == .horizontal else {
                return false
        }

        return true
    }),
    let planeAnchor = result.anchor as? ARPlaneAnchor else {
        return
    }

    anchorEntity.transform = Transform(matrix: planeAnchor.transform)
    arView.session.delegate = nil
    ...

0 个答案:

没有答案