The Microsoft HoloLens is a remarkable device. But how do you write apps for it? You have two options: Write a 2D-app with UWP or a 3D-app with Unity. I do not have an actual HoloLens device, so this will describe my experience with the HoloLens emulator.
You need the following tools to develop apps for HoloLens:
- A Windows 10 computer with Hyper-V enabled
- Visual Studio 2015 Update 2 (Community Edition works fine!)
- HoloLens Emulator
- Unity HoloLens Technical Preview
See here for details: https://developer.microsoft.com/en-us/windows/holographic/install_the_tools
When you write an Universal Windows Platform app, you can run it on Windows Desktop, Mobile, XBoxOne and HoloLens. Here’s a simple app running on the HoloLens emulator:
In the HoloLens emulator you can look around using the mouse and walk around in the room with the AWSD-keys, just like in a standard 3D game. When you start a 2D-app, you have to place it somewhere in the room. Put it up against a wall or just let it hang in the air. Here I have placed the app and then moved a bit to the right. (Yes you can walk around it and look at the back side of the app, but it is rather boring. Just a solid blue slate).
Everything that is black in the emulator will be transparent on the real device. This means that apps with dark UI’s will probably not work very well on the HoloLens as they will be semi-transparent.
You write 3D-apps for HoloLens in Unity and build it as an Windows 10 app. Unity will not actually build the app, just export it as a complete Visual Studio solution. You have to open the solution in Visual Studio, build it and then deploy it to the emulator.
Here’s a great walkthrough on how to build a 3D-app: https://developer.microsoft.com/en-us/windows/holographic/holograms_101e
The emulators does not render the surrounding room. This is a problem as interacting with the real-world is the major feature of the HoloLens. If you can’t see the world in the emulator you can’t interact with. The emulator does in fact have a surrounding room, and comes with a handfull of predefined rooms, like bedroom, livingroom, etc, that you can load into the emulator. But if you want to see the room you are in, you have to render it yourself.
In this screenshot I have turned on “Spatial Mapping” in Unity (this renders the surroundings). I have then placed my 3D model on a sofa, and the paper ball have rolled off the sofa and is now rolling around on the floor.
I would like a feature in the emulator where you can turn on rendering of the surrounding room, not just a wireframe, but complete with textures and everything. This would make the emulator much more useful.
If you are like me, living outside of US and can’t yet get a real HoloLens device, you have to settle with the emulator. It’s not like a real device, but it works astonishly well.