Не удалось запустить сеанс при попытке запустить тест ARKit.

Я пытаюсь понять, как работает ARKit. Поэтому я скачиваю два разных проекта с GitHub.

1-)https://github.com/brianadvent/Simple-ARKit-Game

2-)https://github.com/exyte/ARTetris

Оба они я получаю "Невозможно запустить сеанс, конфигурация не поддерживается на этом устройстве:" ошибка. Я запускаю последнюю версию бета-версий как в Xcode, так и в iOS.

Изменить: у меня есть этот код в Viewcontroller. Разве это не должно работать?

private func getSessionConfiguration() -> ARSessionConfiguration {
    if ARWorldTrackingSessionConfiguration.isSupported {
        // Create a session configuration
        let configuration = ARWorldTrackingSessionConfiguration()
        configuration.planeDetection = .horizontal
        return configuration;
    } else {
        // Slightly less immersive AR experience due to lower end processor
        return ARSessionConfiguration()
    }
}

person Emre Önder    schedule 06.07.2017    source источник
comment
Некоторые устройства не поддерживают настройку WorldConfiguration, которая, вероятно, установлена. например iPhone 6 не поддерживает это. Вы можете попробовать изменить эту конфигурацию по умолчанию, чтобы она работала.   -  person Marcel T    schedule 06.07.2017
comment
его поддержка только 6s и 6s plus, 7 и 7s plus в телефоне   -  person karthik    schedule 06.07.2017
comment
Так я не могу получить модель на реальной сцене в iPhone 6? или это просто что-то другое?   -  person Emre Önder    schedule 06.07.2017


Ответы (1)


Вы должны изменить переменную ARWorldTrackingSessionConfiguration, которая установлена ​​в качестве конфигурации в обоих проектах, на обычную ARSessionConfiguration. Учтите, что если вы делаете это, вы можете получить только ориентацию устройства, а не его положение в реальном мире! Так что вполне может быть, что приложения работают некорректно. Вы также можете перейти на другое устройство, которое поддерживает ARWorldTrackingSessionConfiguration, тогда все должно быть в порядке, но iPhone 6, например, не может этого сделать.

Как упомянул Картик, только 6s и 6s plus, 7 и 7s plus поддерживают конфигурацию WorldTracking. Он также работает на iPad (5-го поколения) AFAIK.

Обновление: я думаю, что проблема в том, что iPhone 6 имеет только процессор A8. В модуле ARKit есть важное примечание, в котором говорится:

Важно! Для работы ARKit требуется устройство iOS с процессором A9 или более поздней версии.

Чтобы ваше приложение было доступно только на устройствах, поддерживающих ARKit, используйте ключ arkit в разделе UIRequiredDeviceCapabilities вашего приложения Info.plist. Если дополненная реальность является второстепенной функцией вашего приложения, используйте свойство isSupported, чтобы определить, поддерживает ли текущее устройство конфигурацию сеанса, которую вы хотите использовать.

Если вы посмотрите на Simple-ARGame, вы увидите, что касания будут прослушиваться, но вычисляются очень медленно. Я просмотрел техническую документацию iPhone 6, где говорится, что он имеет только процессор А8. Поэтому, вероятно, вам нужно протестировать ARKit на другом устройстве.

person Marcel T    schedule 06.07.2017
comment
Я отредактировал свой вопрос. У меня есть код, который проверяет, есть ли у него worldtrackin или нет, но я все еще получаю белый экран. Разве я не должен получить камеру вместо этого? - person Emre Önder; 06.07.2017
comment
Я до сих пор не понимаю, что мы можем сделать с ARkit в iPhone 6. Я имею в виду, почему у него есть функция ARSessionConfiguration(), если мы не можем ее использовать? - person Emre Önder; 06.07.2017
comment
@ Эмре Ондер, извини, но я не могу ответить тебе на этот вопрос. Это что-н. что должна ответить вам команда ARKit. Но я думаю, что когда Apple говорит, что все под A9 не поддерживается, то ARKit предназначен только для более новых устройств. Вероятно, есть некоторые вещи, которые могут делать только процессоры A9 или более поздние версии, которые сильно оптимизируют ARKit. - person Marcel T; 06.07.2017
comment
На WWDC / бета-версии 1 сообщение Apple было немного неясным в отношении того, будет ли ARSessionConfiguration поддерживаться на устройствах до A9, но даже в бета-версии 1 это фактически работало на этих устройствах. «Важное» примечание из docs упоминает @MarcelT, кажется, проясняет, что оно не предназначено для работать на старых устройствах. - person rickster; 07.07.2017
comment
@EmreÖnder на вопрос «зачем API, если вы не можете его использовать?» вопрос... когда вы пишете/компилируете код в Xcode, вы не знаете, на каком устройстве он может работать. Вы создаете бинарный файл, который может работать на любом устройстве. Таким образом, Xcode не может знать, может ли ваш вызов этой функции быть успешным. Вам нужно либо проверить ARSessionConfiguration.isSupported перед вызовом этого API, либо использовать UIRequiredDeviceCapabilities, чтобы указать iOS запретить установку вашего приложения на несовместимых устройствах. - person rickster; 07.07.2017
comment
@ Эмре Ондер, я не уверен, что ваш вопрос все еще открыт и на него нет подходящего ответа, когда есть что-то. больше, что вам нужно знать, пожалуйста, прокомментируйте это, и я попытаюсь найти ответ на этот вопрос, но я не могу объяснить, почему инженеры ARKit приняли несколько решений об ARKit, я могу только догадываться, что они думали об этом. Когда у вас больше нет вопросов, примите ответ. - person Marcel T; 11.07.2017