- Issue category: Real-time Mapping-Depth
- Device type & OS version: Android 12
- Host machine & OS version: Windows
- Issue Environment : On Device
Hi.
First of all, I would like to say that I think ARDK technology is amazing. Thank you very much for providing this kind of tool to the community. I believe and hope that great things are going to be done with it.
About my issue: I’ve been doing some LightShip testing with an Android 12 device that, according to the ARDK System Requirements, supports Contextual Awareness features ( Development and Runtime Requirements of ARDK — Niantic Lightship Augmented Reality Developer Kit release-2.5.2 documentation). It is a OnePlus Nord2 equipped with a Mali-G77 GPU, released one year ago approx (https://www.kimovil.com/en/where-to-buy-oneplus-nord-2)
Despite meeting ARDK requirements, the phone failed the following device support checks in all ARDK versions I’ve worked with:
- ARWorldTrackingConfigurationFactory.CheckDepthEstimationSupport().
- ARWorldTrackingConfigurationFactory.CheckMeshingSupport().
However, _ARConfigurationValidator.cs script states that “ARDK’s device support checks serve as recommendations, not a hard block. Devices are still able to try to run unsupported features.”. Therefore, I have tested the meshing functionality with several ARDK versions. These are the results:
-
ARDK 1.1.0: Impossible to use. A few mesh chunks are rendered on the screen, but they aren’t accurate at all, and drift continuously. (Sorry, but I don’t have a video for this version. I can make one if it helps).
-
ARDK 1.3.0 and ARDK 2.0.0: meshing is not very accurate, and sometimes it drifts a little. For example, an Android 11 device with an Adreno 650 GPU (it has a similar computational power) offers much more accurate and stable results. Still, the mesh is good enough for my use case, and the multiplayer experience is OK as well. I could work with that. You can see a scan with 2.0.0 in the following video:
-
ARDK 2.1.0: from my point of view, there has been a regression. Accuracy is not as bad as with ARDK 1.1.0, but definitely worse than 2.0.0. The mesh also drifts noticeably. Impossible to use. Please, check two scan attempts in the following video:
The main issues I see here:
- A relatively recent device, with a well-known GPU that meets the minimum requirements, cannot run contextual awareness features consistently.
- The current minimum requirements stated in the documentation cannot be used as a guide as to whether or not a device can run ARDK’s contextual awareness functions. I think the only option to know for sure is for the user to install the app and wait for the device to fail at runtime.
- There may be regressions between ARDK versions.
Related questions:
- I think the device checks in “_ARConfigurationValidator.cs” should always be used as a hard-block in case the app needs ARDK’s contextual awareness features, don’t you agree? On the one hand, there may be devices that fail the tests but can still run the features (like this OnePlus using versions 1.3.0 and 2.0.0). By using the device checks as a hard-block, we would be preventing those users from trying the app, which isn’t good. On the other hand, I think it is even worse to let them run the app and eventually have a bad experience (like the OnePlus in version 2.1.0).
- Could you provide a reliable list of capable devices (or device features) that the users could check before installing the app, or that we could display in our apps as a recommendation in case a device fails the checks (or even if the device doesn’t even support ARCore)?
- Are you working on trying to extend ARDK support to more GPUs? Do you know if these issues are occurring with other theoretically supported GPUs, or could this device just be an exception?
- Regarding the regressions between versions, well, I am just concerned about them. Any thoughts on that would be appreciated.
Thank you very much in advance for your support!!