2

In Apple presentation they said if ARWorldTrackingConfiguration not supported we can use the lesser AROrientationTrackingConfiguration (previously named ARSessionConfiguration).

But when I try this on an A8 device (iPad mini 4), it makes no difference whether to let ARWorldTrackingConfiguration() fail or not. Tracking just don't work.

if ARWorldTrackingConfiguration.isSupported {
    let configuration = ARWorldTrackingConfiguration()
    sceneView.session.run(configuration)
}
else {
    sceneView.session.run(AROrientationTrackingConfiguration())
}

If A8 will not support ARKit, what's the point of supporting AROrientationTrackingConfiguration()?

pacification
  • 5,838
  • 4
  • 29
  • 51
Lim Thye Chean
  • 8,704
  • 9
  • 49
  • 88
  • I dont think you can hope any deteministic behaviour for the A8 devices. ArKit support is only for A9 and above as Apple states 'ARKit runs on the Apple A9 and A10 processors. These processors deliver breakthrough performance that enables fast scene understanding and lets you build detailed and compelling virtual content on top of real-world scenes. You can take advantage of the optimizations for ARKit in Metal, SceneKit, and third-party tools like Unity and Unreal Engine.' – Gonzales Gokhan Sep 02 '17 at 13:37
  • Then which devices support AROrientationTrackingConfiguration()? – Lim Thye Chean Sep 02 '17 at 13:59

3 Answers3

4

All of ARKit supports only A9 and up, including AROrientationTrackingConfiguration. As they say at the top of the ARKit docs...

Important ARKit requires an iOS device with an A9 or later processor.

To make your app available only on devices supporting ARKit, use the arkit key in the UIRequiredDeviceCapabilities section of your app's Info.plist. If augmented reality is a secondary feature of your app, use the isSupported property to determine whether the current device supports the session configuration you want to use.

So you can indeed make an iOS 11 app that's available only on a subset of iOS 11 devices. Requiring something in UIRequiredDeviceCapabilities makes the App Store not offer your app on devices you don't support, and makes iTunes refuse to install the app.

(Yeah, it looks like Apple took a bit to get their story straight here. Back at WWDC it looked like they'd support 3DOF tracking on lesser devices, but now you need A9 even for that.)


So what's the point of AROrientationTrackingConfiguration now?

For some kinds of app, it might make sense to fall back from world tracking (6DOF) to orientation-only tracking (3DOF) when current conditions don't allow 6DOF. That doesn't make much sense for apps where you put virtual objects on tables, but if you're just putting space invaders in the air for your player to shoot at, or using AR to overlay constellations on the sky, losing 6DOF doesn't wreck the experience so much.

rickster
  • 124,678
  • 26
  • 272
  • 326
  • Putting space invaders in the air is precisely what I am going to do. I tried it on iPad mini, using AROrientationTrackingConfiguration does not work (the background is black not camera images but nodes are shown just cannot be moved ay all.). – Lim Thye Chean Sep 04 '17 at 00:45
  • The best iPad *mini* you can get [has an A8 chip](https://www.apple.com/ipad-mini-4/specs/), so it's not supported by ARKit. – rickster Sep 04 '17 at 04:27
  • When will this happened? "world tracking (6DOF) to orientation-only tracking (3DOF) when current conditions don't allow 6DOF." – Lim Thye Chean Sep 05 '17 at 12:17
  • 6DOF doesn't work when you're moving the device too much or it can't see its surroundings well. There are delegate callbacks to tell you when that is happening. – rickster Sep 06 '17 at 01:31
0

I suppose that Apple implemented this interface in a dummy way for devices not supporting ARKit to not make them crash if ARKit is used in an application and let it run with less features than on A9+ devices.

Xvolks
  • 2,065
  • 1
  • 21
  • 32
  • What devices not supporting ARKit that can support AROrientationTrackingConfiguration()? It does not seem to support even A8. – Lim Thye Chean Sep 02 '17 at 13:57
  • My answer was about compatibility. When you create an application for iOS 11 you expect that it will run on all devices even if some of them does not support one feature. Generally an application does several things, you want that your application works for all supported devices and all supported features. If a feature is unsupported then all other should still work. So in this case you do not want that the application crash because there is a missing library since the feature is unsupported. – Xvolks Sep 02 '17 at 14:02
0

If you want to support a larger set of devices, 8th Wall XR is the library that you want. It supports a lot more devices than the latest iOS. The same code will also work on Android if you ever decide to get your app into that segment.

Dat Chu
  • 10,822
  • 13
  • 58
  • 82