Как разместить AnchorEntity в фиксированной позиции?
Я создал AnchorEntity с дочерним блоком. При обнаружении горизонтальной плоскости поле автоматически добавляется на экран и помещается в плоскость. Но коробка движется, т.е. когда обнаружена другая плоскость. Как вы можете привязать 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
...