AirMeasure

Developing different measurement modes in an AR app for iOS

$10k - $60k
Project size
2018
Project length
AirMeasure

Background

LaanLabs is an AR and VR development company that creates mobile apps, web apps, in-store displays, robots, and other solutions. One of their areas of work is industrial measurement.

AR-development for AirMeasure app

Objective

LaanLabs had a ready augmented reality measurement application — AirMeasure — for which it was necessary to add a Floor Plan mode. In it, a user would be able to indicate the boundaries of the room in AR, and the app would create a 2D plan of the room that could be further edited.

Because their competitors were developing similar functionality, they needed to quickly build and release the feature. To increase their development speed, they chose Exyte.

AR-development for AirMeasure app

Process

We offered to draw the 2D plans with a tool called Macaw.

Macaw is our own multipurpose library that can work with vector images, create graphs and interactive custom widgets. For this project, the library’s excellent SVG support made it easier for us to provide users with a wide set of possible objects for the floor plans.

AR-development for AirMeasure app

From their side, the client suggested using the Viper architecture to make it convenient to expand the functionality and work on certain features in teams. Viper (short for View, Interactor, Presenter, Entity, and Router) enabled us to separate application logic and domain logic, making the code much cleaner and extensible.

The project was done in 4 steps:

  • 1. In ARKit, we made our own AR mode and built a prototype.
  • 2. Together with the client, we discussed the app’s API and integration.
  • 3. We used Macaw for the 2D room plan renders.
  • 4. We integrated our part of the application with the main application.

To communicate with the client, we used email (for status updates) and TestFlight (for new builds).

AR-development for AirMeasure app

Challenges

Due to the large number of objects on the map and the connections between them, we had to heavily optimize performance to make sure the app could provide high enough frames per second.

For example, adding multiple objects to a plan introduced a lot of dependencies between them. If the user added 4 walls, a table next to a wall, and a chair next to a table, dragging 1 wall meant dragging all of the objects. That caused multiple redraws for all objects, so we optimized the redrawing of objects so that it would happen only once for all the objects.

AR-development for AirMeasure app

Technologies

Development

  • Swift,
  • Macaw (for vector graphics),
  • ARKit (for AR).

Architecture

  • Viper.

Results

The client saved time and money due to us using a ready-made library for rendering floor plans. They will potentially save more time in the future due to architecture that is convenient for further development and feature addition.

Because of our efforts in performance optimization, the floor plan functionality works quickly and seamlessly. The app is currently available on the App Store.