Swift ARKit Как полностью убить ARSession?
У меня есть ARSCNView
работает ARSession
, Вы можете приостановить сеанс с session.pause()
конечно, но это все еще действует, оставляя сеанс запущенным. Я пытался освободить ARSCNView
удалив его из суперпредставления. ARSCNView
действительно освобождает, но ARSession
все еще работает после!! Вы не можете назначить nil
в ARSession
или. Я могу видеть ARSessionDelegate
"s
func session(_ session: ARSession, didUpdate frame: ARFrame)
все еще вызывается!
Как полностью стереть планшет с помощью ARKit?
Это вообще возможно?
1 ответ
Официально, сейчас вы не можете.
Однако есть обходной путь: вы делаете ARSCNView
одноразовые.
При выходе из АР сначала сделайте паузу ARSession
, Затем освободить весь ARSCNView
иерархия и множество ARSCNView
в nil
для хорошей меры. Перестройте весь ARSCNView
иерархии и начать новый сеанс всякий раз, когда вам нужно вернуться к AR.
var ARview: ARSCNView?
func punchTheClown() {
ARView?.session.pause()
ARView?.removeFromSuperview()
ARView = nil
}
Другие не-AR области вашего приложения обычно находятся в отдельной иерархии представления на том же уровне, что и ваш ARSCNView
, Я с нетерпением жду, когда Apple представит stopSession()
функция, так что мы все можем перестать punchTheClown тем временем.
Из документов
Во время паузы сеанс не отслеживает движение устройства и не записывает изображения сцены, а также не координирует свои действия с объектом-делегатом и не обновляет любой связанный объект ARSCNView или ARSKView.
Если это не вызывает проблем, лучше оставить в покое. Насколько я знаю. Это работает как видео плеер. Вы можете приостановить и возобновить его в любое время
Источник здесь: .RunOptions ARKit Docs