Developing mobile Augmented Reality applications challenges developers to juggle with a number of different frameworks that require some very specific knowledge. At Onirix we are trying to lower the bar for developers and let you focus on your project. This way you can make use of AR in your projects without the necessity to master the technology in detail.
In this article, we are going to take a look at frameworks that are used in Onirx.
Compiling for Multiple Platforms with Unity
Onirix offers three different types of Augmented Reality experiences: Targets, Places or Spaces. For both, Targets and Spaces, Onirix uses Unity as the primary rendering engine and development platform because of the high usage of 3D content in these types of experiences.
Unity is cross-platform, which allows developers to develop only once and deploy the same app on multiple platforms. Onirix makes use of this feature, by allowing the user to port the same app to Android and iOS in one step. In the meantime, we are working on the compatibility with other platforms such as Microsoft Hololens and MagicLeap.
In addition, Unity is the most popular and widely used 3D engine for mobile applications on the market. One of the main advantages is that Unity is very careful with resources, which is particularly important on mobile platforms, where computational power is very constrained.
Moreover, Unity allows developers to use a free plan until they start generating income from their apps. Paid plans are also very affordable.
ARCore and ARKit for Homogeneous AR Experiences
Augmented reality has changed hugely in recent years, as the hardware of mobile devices is evolving. When the first CMOS cameras appeared on the mobile market, devices still had very limited processing power. Those early devices were only able to detect colors or simple shapes like black squares. That kind of shapes were used for years until devices got powerful enough to also be able to detect complex images like magazine covers.
However, due to the high diversity of mobile devices and camera sensors (different resolutions, focal lengths, distortion parameters etc.), it was still hard in recent years for Augmented Reality SDKs to provide a solution that works homogeneously across different devices.
In the end, the experiences that AR apps provided could vary from “it seems to somehow work” to “this doesn’t do anything!”. This is because the experience was controlled by the device.
Fortunately, everything started changing with the introduction of ARCore and ARKit. These frameworks were developed by Google and Apple for their mobile operating systems Android and iOS.
They do not only ensure homogeneous experiences across supported devices but also provide other exciting features like SLAM (Simultaneous Location And Mapping, allows devices to understand and locate themselves in the environment), plane detection (for horizontal or vertical surfaces) and light estimation.
These frameworks are able to ensure this homogeneity by restricting the number compatible devices to those that are above a certain threshold with regards to processing power and allow the calibration of sensors and the IMU (Inertial Motion Unit).
Besides providing all this value, ARKit and ARCore are complex frameworks that require knowledge about OpenGL, linear algebra and multiple view geometry.
Onirix is making use of the power of these two platforms while providing an extra layer of convenience for everything that is related to content and visualization.