Swift ARKit Как полностью убить ARSession? - PullRequest
0 голосов
/ 12 октября 2018

У меня ARSCNView работает ARSession.Вы можете приостановить сеанс с уверенностью session.pause(), но это все еще действует, оставляя сеанс запущенным.Я попытался освободить ARSCNView, удалив его из суперпредставления.ARSCNView действительно освобождает, но ARSession все еще работает !!Вы также не можете назначить nil на ARSession.Я вижу, что ARSessionDelegate s

func session(_ session: ARSession, didUpdate frame: ARFrame) 

все еще вызывается!

Как полностью стереть планшет с помощью ARKit, как только вы закончите с ним?

Это вообще возможно?

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

Официально, прямо сейчас, вы не можете.

Однако есть обходной путь: вы делаете ARSCNView одноразовым.

На выходеAR, первая пауза ARSession.Затем освободите всю иерархию ARSCNView и установите ARSCNView на nil для хорошей меры.Перестройте всю иерархию ARSCNView и начинайте новый сеанс всякий раз, когда вам нужно вернуться к AR.

var ARview: ARSCNView?

func punchTheClown() {

    ARView?.session.pause()
    ARView?.removeFromSuperview()
    ARView = nil

}

Другие не-AR области вашего приложения, как правило, находятся в отдельной иерархии представления на том же уровне.уровень как ваш ARSCNView.Я с нетерпением жду, когда Apple предоставит фактическую функцию stopSession(), поэтому мы все можем прекратить использовать punchTheClown.

0 голосов
/ 12 октября 2018

Из документов

Во время паузы сеанс не отслеживает движение устройства и не захватывает изображения сцены, а также не координирует свои действия с объектом-делегатом и не обновляет любой связанный объект ARSCNView.или объект ARSKView

Если это не вызывает проблем, лучше оставить в покое.Насколько я знаю.Это работает как видеоплеер.Вы можете Пауза и возобновить это в любое время

Источник здесь: .RunOptions ARKit Docs

...