This week for R&D we took at look at a new SDK called Placenote. It only works on iOS right now, but they support native Swift and Unity projects.
What is Placenote?
Placenote is an SDK which allows developers to persistently link augmented reality content to places and objects within the real world, ensuring when you go back to view that content again its in the same location as it was originally. There are many uses for a technology like this, such as guided tours, interior design applications and multiplayer game sessions where everyone can play within the same environment.
At Heavy we had been hoping that Apple would be working on something like this themselves since ARKit was released, allowing developers to persist their ARKit experiences. But instead many companies took the challenge upon themselves (Placenote, 6D.ai, Sturfee) and the developer community is now starting to see what these solutions may look like.
The Placenote developer website is pretty simple to use, allowing registration and access to a development key within minutes. After reading the documentation I also joined the Slack channel, which to my delight was incredibly active. I began to strike up some conversations with some of the developers behind the Placenote SDK, which then led onto a call with the founder who gave us a great overview of the product and its vision going forward.
Integrating the SDK was pretty simple, using the guided tour they have on their website. Within a few minutes I had the project setup and was able to build their sample demo to our devices. This demo allowed me to create a new "map" of our environment and then place random objects within it. Once I was done I could save the map which persists it within the Placenote servers. Upon relaunching the application I could then load our previously saved map and let Placenote do its magic (relocalization). As soon as it matched the environments I could see our previously placed content.
The experience was fantastic, and incredibly fast at relocalizing. Rather than it taking 10-20 seconds (like I thought it might) it was able to relocalize within 2-5 seconds. The stability was also great, although to ensure they keep the localization accurate you do see some shifting of your content now and then when it realigns itself.
We wanted to see what else we could do with the SDK, but first I tried out another of their samples. It was a simple AR drawing application which lets users draw within 3D space, persist that drawing, then view it again at a later date. This again worked brilliantly and was incredibly quick.
To really evaluate the solution I wanted to build something from the ground up. So I started a fresh project and decided upon a simple "Art" placement demo. I would pull the art from Google's Poly library and then let users place this within the real world. Placenote could then persist this experience, and users could view it (or share it) with someone else to view at a later date.
The longest part of this demo's development was writing the boiler plate code to get Placenote working and hooked into ARKit. Once this was done, I pulled in the models, implemented some UI, and built the project.
When testing I again had fantastic results from the SDK. From pulling down the metadata from the server to relocalizing, it was fast.
As I mentioned above the longest part of the demo building was actually to write up our own boiler plate code to integrate with Placenote. I feel having a built in solution for this which can be extended from would be a better approach, allowing developers to get into the action quicker.
It would also be nice to be able to name maps in a more friendly way, by default. Right now each map has meta-data associated with it, so for now we will use this, but it would still be handy naming maps outside of that.
Lastly we need to see Android support. iOS cannot be a sole focus in this industry, and Android's ARCore support needs to come soon. With other developers working on these solutions Placenote need to keep ahead and support as many devices and services as possible.
At Heavy Projects we are always thinking about unique ways to integrate AR within an experience. After using the Placenote SDK it has sparked quite a few ideas about how we can use this going forward, and it has already come up in some conversations with potential projects from clients.
Further down the line it would be great to have automatic selection of maps, based on some server side functionality. Right now the maps have to be selected manually (either by the developer or by a user). However improving this to enable a seamless map selection would be fantastic.
CTO, Heavy Projects