We are currently experiencing less than expected camera Performance in our Unity project on lower end devices.
The camera image seems to lag behind the actual movement of the device quite a lot, making it unpleasent to view the AR Content.
While looking for an error on our side, we tried to launch the bundled "Image Tracker - Simple" Sample Scene in a fresh Unity project. But event without any AR Content in View, the camera image still lags behind the actual movement of the device.
While this behaviour appears most pronounced on our low end device, they are, in our opinion, within the minimum requirements for wikitude.
Tested Devices: Motorola Z Play (Most Latency), OnePlus 3, Samsung S8 (minimal Latency, expected)
SDK Version: Wikitude for Unity 8.9.0
Unity Version: 2018.3.14f1 and 2019.2.10f1
The amount of latency seems to be less pronounced in the Wikitude App from the Playstore compared to the Unity Sample Scene
The SDK Version has not been upgraded, since we tried the experiement on a fresh Unity project.
Steps to reproduce:
- Create a new Unity Project
- Import Wikitude Plugin v8.9.0
- Build "Image Tracking - Simple" Scene to Android device
- Move or rotate the device. With or without viewing the Sample Tracker image, the camera image lags noticeably behind (on low end devices)
We could also observe, that the amount of lighting in the Room seems to have an impact on the camera performance. While this is somewhat expected, this issue was even more pronounced on the low end device. Very bright lighting did not reduce the amount of latency to acceptable amounts, however.
Are there any settings that can be used on low-end devices to improve performance?
Thank you for reporting this. We're aware that some improvements could be made in this regard and we have some things in progress already. Also, the likely reason why it behaves worse in low-light conditions is because of auto-exposure.
With that in mind, you could try switching to SD resolution instead of Auto. You can also check if there is a difference between Camera1 and Camera2. Finally, you could try setting the exposure mode to locked.
Please let us know if any of these suggestions helped.
Alright, with your tips we made it work.
The following things were changed in the end:
- Set Camera to SD!
- Set Camera API to Camera2
- Make sure that you build your Android App for ARM64. ARMv7 seems to lose a lot of performance on the way
This also solved the question, why the tested Motorola Z Play fell so far below our expectations:
While the Snapdragon 625 on which it operates is indeed a 64-Bit Chip, the Kernel used by Motorola only supports 32-Bit, thus making it incompatible with the far more performant ARM64 builds of our app.
So in the end, while the app now performs at smooth 60 fps on devices comparable to the Motorola Z Play, we basically had to accept that 32-Bit only devices have to take the performance hit. We can live with that, and maybe other devices are not affected as much as our problem child, the Motorola Z Play.
Thanks for the help!
I'm glad to hear that it is working better now, and thank you for letting us know about the Motorola Z Play issue.
If there's anything else we can help you with, please let us know.