google-ar / arcore-android-sdk

ARCore SDK for Android Studio
https://developers.google.com/ar
Other
4.98k stars 1.22k forks source link

Disparity between the tracking of Augmented Images of an at runtime created ArAugmentedImageDatabase and a pre-compilation created ArAugmentedImageDatabase. #1137

Open RobAEG opened 4 years ago

RobAEG commented 4 years ago

Hello! I was sent here after talking about some ARCore related oddities appearing in Unity's ARFoundation. The devs told me that this would be the best place to bring it up! The prior conversation on the issue can be found here, I'd advise reading it through to get some background information on our issues and what tests and research we have already done.

Our issue stems from the fact that tracking images of a pre-compilation created ArAugmentedImageDatabase are tracked a bit differently then those of an at runtime created ArAugmentedImageDatabase. Augmented Images from a pre-compilation ArAugmentedImageDatabase get detected and tracked right away, while those from an at runtime created ArAugmentedImageDatabase get detected as normal, but their tracking state remains AR_AUGMENTED_IMAGE_TRACKING_METHOD_NOT_TRACKING until the physical space is explored a bit further, after which the tracking behaves as expected.

According to Tim Mowrer from Unity's ARFoundation repo this is a difference he confirmed at the native C level of ARCore. For our project it would be favorabel to have Augmented Images of at runtime created ArAugmentedImageDatabase behave just like those from a pre-compilation created ArAugmentedImageDatabase. The fact that our users have to physically move their phone around to track a runtime created Augmented Images is harmful to our user experience. It also creates a disparity between the Android and iOS versions of our application, with the iOS version seemingly preforming better in this area, even though ARCore should be able to match ARKit in this regard, and does so when an ArAugmentedImageDatabase is used which was created before the application was compiled.

Our question is therefor if and then how we could fix this disparity to bring both tracking methods in line with one another. Is there a reason for this difference in the native C code which Tim Mowrer talks about or could it possibly be an oversight or bug?

devbridie commented 4 years ago

Thanks for bringing this up-- it seems correct that the two databases should have the same behavior. I'll try to see what we can do in this area; will update when I know more.

DominicdeGraaf commented 4 years ago

@devbridie were you able to find anything?

RobAEG commented 4 years ago

@devbridie please check the linked thread on the issue on the Unity ARFoundation Repo. The issue seems to be resolved on Unity's side of things!