Search code examples
androidaugmented-realityarcore

AR Core performance, learning curve and comparison with other frameworks


I'm hoping to learn and dedicate serious amount of time on building 3D augmented reality apps since they are slowly but surely becoming the future for human and computer interaction.

I wish to learn ARCore but it only runs on limited number of brand new phones, it's not possible for me to test with, due to their prices,for now. I have few questions regarding to ARCore

  1. How is ARCore performence compared to other popular frameworks? Does it use extensive resources for simple operations such as motion detection, tracking and plane detection?
  2. Does it require knowledge and use of OpenGL as mentioned here? Is it just drawing meshes, vertices and simple objects or you should know more for simple 3D modelling? As far i've seen so far ARKit manages things with it's own framework which is a good thing.
  3. Is it stable? Does it crash often or cause ANR most of the time? I couldn't find the app link but users were complaining about how bad it was.
  4. Isn't there no way to test and debug code other than using these device? Can we run it on a emulator with some hack or other stuff?
  5. Can you access to manual camera features like ISO, metering, etc., is it easy like camera.getParameters() or some extensive work and/or NDK knowledge is required? Can you choose which camera api to use or is it just Camera2 api? I also wonder is there any AR framework that let you change camera parameters like Camera1 or Camera2 api with simple get or set methods?

I searched for ARToolKit but i got an impression that it's hard to learn and it's hard to implement things, Vuforia and Wikitude is not being free makes them out of question for now. I searched forums of each framework and this outdated thread and few others.

I'm trying to learn more technical and software development aspects of frameworks depending on empirical data. If you thing this question is off-topic please edit the question or direct me to prevent being so since there is no collective data about augmented reality on Android, at least, i haven't been able to find. Most of it is depracated, option based from a single user but no collective data is available from developers based on experience. I'm sure there are lots of developers wondering how to do it and which framework is suitable for them.


Solution

  • ARCore like other AR frameworks cost lot of resources : scene recognition and tracking are not simple things, so let's consider all AR engine as something important in resources usage.

    Knowing OpenGL is a plus since you'll need to know how a 3D render loop works ot be able to work AR. No need to be an OpenGL master, but basics are required to understand samples and to be able to create your own 3D/AR project. Unless you'r working with ARKit & Metal, or AR with Unity maybe.

    All AR lib I tested are stable, API are tested and quite never crash. It is more complex to have an AR tracking stable, some are better than other, and all have limitations (let's try ARCore and ARKit on a uniform white stone floor...) but markerless AR engine are pretty impressive on tracking, but need lastest devices and are still in beta.

    Speaking about ARCore, only some devices are compatibles, no way to test without them as far as I know. Emulator would need a camera to test, don't know if it exists.

    In most of the AR framework, Camera is not available : I mean, the framework configure and run the camera, you cannot get even an instance of Camera2 most of the time, sometimes it is even hard to get camera current settings (ARCore). The AR engine is more or less a black box, with tracking as output.

    I practiced all these engines, I used some with success, and some are still not working (takes time to going deeper in the implementation and making it work as I want and not as the sample does). My opinion is ARKit and ARCore are going to make Vuforia & Wikitude deprecated since tracking is better, markerless (the more important point) and ... free of charge!

    Good luck!