Я использую ARSessionDelegate
на ARView
, где я инициализирую ARBodyTrackingConfiguration
.
Методы session
с didAdd: [ARAnchor]
и didUpdate: [ARAnchor]
вызываются правильно. Но didRemove: [ARAnchor]
никогда не вызывается.
Согласно официальной документации, привязки "могут" автоматически удаляться из сеанс, в зависимости от конфигурации сеанса. Я не нашел настройки для этого, хотя.
Кто-нибудь знает, почему метод session
с didRemove [ARAnchor]
никогда не вызывается и какую настройку мне нужно изменить, чтобы заставить его работать?
import ARKit
import RealityKit
import UIKit
class AugmentedVideoView: ARView, ARSessionDelegate {
func session(_ session: ARSession, didAdd anchors: [ARAnchor]) {
print("didAdd") // called correctly
}
func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {
print("didUpdate") // called correctly
}
func session(_ session: ARSession, didRemove anchors: [ARAnchor]) {
print("didRemove") // is never called :-(
}
required init(frame: CGRect) {
#if targetEnvironment(simulator)
super.init(frame: frame)
handleError("Camera not available in simulator.")
return
#else
super.init(frame: frame,
cameraMode: ARView.CameraMode.ar,
automaticallyConfigureSession: false)
self.session.delegate = self
guard ARBodyTrackingConfiguration.isSupported else {
handleError("Your device does not support body tracking.")
return
}
let configuration = ARBodyTrackingConfiguration()
configuration.automaticSkeletonScaleEstimationEnabled = false
self.session.run(configuration)
#endif
}
@available(*, unavailable)
dynamic required init?(coder decoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}