NB: The usual blog disclaimer for this site applies to posts around HoloLens. I am not on the HoloLens team. I have no details on HoloLens other than what is on the public web and so what I post here is just from my own experience experimenting with pieces that are publicly available and you should always check out the official developer site for the product documentation.
I’m very excited by today’s announcement that HoloLens has been expanded to a number of markets including the UK for the first time.
Microsoft HoloLens welcomes six new countries to the world of mixed reality
and HoloLens is available to pre-order via the UK Microsoft Store;
I’ve very recently been able to get hold of a device to work with and I’m blown away by what it can do – with HoloLens, it really is a case of ‘seeing is believing’ and spending the first few hours and days with the device really does open your eyes to the world of possibilities that it brings.
In terms of developing for the device, there’s great information on the development site;
but I wanted to highlight a few areas that I’ve found to be especially useful in the past couple of weeks which includes time before I had access to a device and after I got access to a device and so I thought I’d document my own notes on the process that I followed to start to understand the device both from a hardware and OS point of view and then from the additional point of view of developing for it.
As you’ll know if you follow this blog, I come from a background where I have spent a lot of time with UWP apps and lots of the technologies that came before them but I’ve only recently started to spend time with Unity and HoloLens and so there’s lots to learn.
The rest of this post details some of the steps that I’ve taken so far. I hope you find them useful and I highly recommend “jumping in” although this was my route to getting started and you may want to take a different path, there’s no right answers when it comes to figuring things out for the first time.
Step 1 – Getting Going (without a device in my case)
I can’t emphasise this enough – I worked through a whole bunch of HoloLens and Unity tutorials without any access to HoloLens and I learned a lot from doing it. You can understand HoloLens development without getting a device.
My first step in trying to understand how development is done on the device was to go and grab the tools;
and work in the emulator.
I’d recommend taking a good look at the system requirements for the emulator on those pages. They are similar to system requirements for running things like the Windows Mobile emulators but you’d want to be sure that you had the right spec of system to avoid performing a large download that you may not be able to run.
Having got the tools installed, I spent some time trying to understand the emulator;
and I found it very useful to work through the advanced section on emulator input;
and based on my experience I would highly recommend driving the emulator with an XBOX controller as it made a massive difference to me in terms of being able to navigate around fluidly but, of course, you can also use mouse and keyboard and I suspect that if you play a lot of games using keyboard navigation you’ll be right at home.
Before trying anything “serious” on the emulator, I spent time understanding how the HoloLens shell works and I’d suggest that to anyone who’s taking the same journey;
so that you’re not fumbling around in there and I also spent time looking at the modes of input described here;
as you are going to see these pieces referred to in the emulator docs and so it’s useful to know what they are and I spent quite a bit of time in the emulator just navigating around, loading up rooms, running up some of the built-in apps like Edge and working with them within the shell to build my own familiarity with how things worked.
Sidebar – Use the Forums
When I first set up the emulator, I had a couple of problems that turned out to be related to memory and networking. Both of these had me searching the web and both of them landed me in the forums.
I’ve been back into those forums quite a lot in the meantime and there’s some great discussions going on there so I’d encourage anyone to take a good look not only when you hit problems but also if you’re looking for ideas as to what other developers are doing with the device and the sorts of features they’re using and the things they’re working on.
Step 2 – Understanding the Types of Apps
The developer documentation is well structured and I followed it pretty much as it’s set out here;
and I think it’s worth spending an hour or two reading through the various pages linked from that page as it’s all really useful and it’s all fairly ‘bite sized’ such that you don’t get bogged down for hours reading a huge manual on a single topic.
I spent most of my time on the first 5 sections and I think there are some resources there which someone from UWP on other devices would definitely want to look at and be aware of. I’d specifically pull out these topics;
- App views on HoloLens
- App model
- Building 2D apps
- Current limitations for apps using APIs from the shell
and those sparked my interest in a whole range of experiments that I want to try in order to build a better understanding of how the app model works as there are differences between HoloLens and some of the other UWP devices. I’ll be writing some of those experiments up in the coming days/weeks.
I’d flag that first link on “App views on HoloLens” because that page provides terminology for two different kinds of apps;
- “2D apps”
- “Holographic apps”
and I found that especially useful as those terms crop up all over the documentation and the forums and in talking to some other developers about the types of apps that you already see in the Store.
I also sat through this session from //build 2016 which covers some of the topics around 2D UWP apps on HoloLens;
With some of that under my belt, I felt it was time to make a “Hello World” or two and I started off with 2D…
Step 3 – Building and Deploying a 2D “Hello World”
In terms of making a quick UWP app and packaging, deploying, debugging on HoloLens everything feels very familiar and especially because I’ve spent some time deploying apps to devices beyond the PC like IoT devices, Mobile devices, Surface Hub devices and so on in the past.
A lot of what I’ve learned in developing on those devices around topics like;
- Using emulators.
- Using the device portal.
- Remote debugging.
is pretty much the same on HoloLens and that’s great to see because it means that I’m not having to reboot my learning and start over from scratch.
In fact, I didn’t really learn anything much new in just making a 2D “Hello World” in C# and XAML and I see that as a very good thing and I’d point out this official doc guide to people who aren’t perhaps quite as familiar with UWP in the first place.
Step 4 – Exploring Unity
Unlike UWP, I don’t have a background in Unity although I have used it before once or twice and so I wanted to spend some more time there before I jumped into trying to put together even a “Hello World” in Unity for HoloLens.
The HoloLens developer site does offer step-by-step tutorials that don’t really require any Unity knowledge because they lead you by the hand but I wanted to at least get some of the Unity basics down before going through those steps.
I grabbed myself a copy of Unity (as per the developer tools instructions) and I also found it useful to install;
From there, I’ve gone via a few routes in trying to flesh out some knowledge of Unity and I’m still very much in that process at the time of writing.
Naturally, I wandered through some of the Unity docs and I specifically walked through a number of video tutorials;
- The classic ‘roll a ball’ which I’d been through in the past.
- The ‘survival shooter’ which I found useful
I also found that some of the “Live Training” that Unity does in webcast form is pretty good for a beginner and I picked up a number of tutorials made by Mike Geig and followed through topics like the ones listed below;
and many, many more of the webinars that you’d find recorded on the “Live Training” page where I started at the bottom of the page and worked my way back up.
I’ve also managed to gain access to the Unity Pro training which I’m working through at the time of writing and that’s good material too.
I’ve got a long way to go on Unity but I’ve made a start and I’m enjoying it so I’d strongly urge anyone who wants to look at holographic development but who hasn’t done Unity to jump in with some of those Unity resources that make it pretty accessible.
The other great thing about Unity is that it’s one of those technologies where web searches bring back a tonne of results so you’re never short of answers if you hit something that you don’t understand.
Step 5 – Working Through the Holographic Academy
The last step on my journey so far has been to work through all of the tutorials here;
I’d particularly call out the initial Origami tutorial;
as I found that to be a really good, quick way of getting a grip on some of the specific features offered by the device and the SDK and how they are wired together and I ran through that entirely on the emulator.
I’m not always a big fan of ‘hands on labs’ but I enjoyed that one and it encouraged me to work through all of the other tutorials in the Academy as well. I found it to be time well spent and I’d recommend those to anyone who wants to get some concrete ideas of what it’s like to put together a small sample in 3D for HoloLens.
Step Next – The HoloToolkit
One of the things that crops up again and again in the tutorials is the Holo Toolkit which is an open source piece of work that provides a number of useful utilities to help with common scenarios for holographic development.
I’ve explored some of the toolkit already and I’d like to return to it in future posts and spend more time looking around the toolkit and its various pieces.
But this post as already got long so I’ll leave that for some future posts…
Pingback: Windows 10 1607, UWP and Lifecycle on HoloLens – Mike Taulty
Pingback: Windows 10, UWP, HoloLens and Switching 2D/3D Views – Mike Taulty