First impressions on HoloLens 2 and getting started with development with MRTK V2

So finally, I had access to the HoloLens 2 last week. 🙂 Of course I was excited to unbox and try the latest features. And in this article, I will write about my first impressions about the device, it’s new features and how to get started with it and MRTK v2 if you are a developer. See here and here to get started with MRTKV1 if you are using HoloLens 1

Here’s the official link to get started with the HoloLens 2 from Microsoft: https://docs.microsoft.com/en-us/hololens/hololens2-setup

The device and my first impressions

The fit and comfort

So yes, the device is indeed light. But it took me a few turns to adjust it in such a way such that it fits right. Make sure you put it on and push the glasses all the way in. Unlike the HoloLens 1, it doesn’t add weight on your nose. So you no longer get that nose bridge pressed after some time of wearing the device 🙂 Also, there is no nose clip. The brow pad also offers a cushion support on your forehead. But it does add some weight, so whatever you were feeling on your nose earlier, you now feel a fraction of it on your forehead. I used the overhead strap which adds more comfort. If you experience any issues, here is a list of FAQ that Microsoft provides: https://docs.microsoft.com/en-us/hololens/hololens2-fit-comfort-faq

The battery and the power switch

Ofcourse I did not try wearing it continuously for more than half hour. However, I noticed unlike earlier, where the discharge happens quite quickly on the HoloLens 1, with 2, the battery lasted longer. I only have charged it twice in the week where I have used it atleast sporadically for 1 hour each day. Which is quite a bit more than HoloLens 1. What is indeed comfortable is the power switch with it’s quicker reactions to on and off. Especially from the standby mode. You also have a description of lights to indicate problems which is helpful to know

Setup

I was honestly a bit concerned when I put on the HoloLens 2 and switched it on. The resolution of the panel seemed pixelated. One of the first panels would be to choose the language. And I initially thought, this is just for the setup. After this panel, you are guided through a calibration process, especially aimed at improving your eye tracking. Then you do the wifi connection and sign on to your account and then you see the main menu panel. So here is where it was confirmed that the menu is indeed pixelated. I don’t know what is going on but it certainly did not seem clear to me. Apparently some other people have also complained about this and this may have to do with the new MEMS display technology. Let’s see what Microsoft has to say about this in the future

Hand and eye tracking

As soon as you do the sign on to your account, you are shown an option to have Iris sign on. Which is a great and easy way to keep your device secure and whenever you wear it on, it recognizes your iris scan and lets you in. As for the hands, you can see the hand tracking (appears as a mesh around your hand, palm and wrist). You also now see a raycast continuously from your hands to show where your hand/finger is aimed at. This is useful when having to air tap objects farther away. I found this annoying for closer objects. Fortunately, you can use the voice command to “Hide hand rays” and “Show hand rays”

The new gestures

Simply tap or press/push on the Tips app which shows you a tutorial on all new gestures. One example is that there is no longer a bloom gesture for the home or main menu. You turn your hand and tap on the wrist and a windows icon appears. If you keep looking at it, then a dotted circle appears around it (thanks to the eye calibration), and then you can either tap it with your other hand, or press the index and the thumb on the same hand (update your HoloLens 2 to the latest November 2019 18363 or later for this one) This gesture shows or hides your main menu. Make sure that all your hand interactions are in the hand tracking frame

 To learn all the new gestures, simply tap or press/push on the 'Tips' app which shows you a tutorial on all new gestures. One example is that there is no longer a bloom gesture for the home or main menu. You turn your jamd amd pm tje wrist, a windows icon appears. If you keep looking at it, then a dotted circle appears around it (thanks to the eye calibration), and then you can either tap it with your other hand, or press the index and the thumb on the same hand (update your HoloLens 2 to the latest November 2019 18363 or later for this one)  This gesture shows or hides your main menu. Make sure that all your hand interactions are in the hand tracking frame Source Image:  https://docs.microsoft.com/en-us/hololens/hololens2-basic-usage 

Source Image: https://docs.microsoft.com/en-us/hololens/hololens2-basic-usage



The new field of view

Here I was expecting a miracle. However, it was not that much of a difference as Microsoft marketed it as 2x previous FOV. I did some more digging to confirm my theory. And here’s what UploadVR website also had to say about the FOV, best summarized by the illustration https://uploadvr.com/hololens-2-field-of-view/

So it is slightly bigger, yes, the field of view. But more comparable to that of a Magic Leap one


 The new field of view: Here I was expecting a miracle. However, it was not that much of a difference as Microsoft marketed it as 2x previous FOV. I did some more digging to confirm my theory. And here's what UploadVR website also had to say about the FOV, best summarized by the illustration   https://uploadvr.com/hololens-2-field-of-view/  So it is slightly bigger, yes, the field of view. But more comparable to that of a Magic Leap one. 

Source of illustration: https://uploadvr.com/hololens-2-field-of-view/ 

Pairing

So I normally use the HoloLens app on the PC to connect the HoloLens 1. I tried the same with HoloLens 2. Once I successfully connect, it immediately disconnected when I tried to access the Camera Roll. So I reverted to the IP address connection via the web browser. That worked normally.

Pros of the HoloLens 2

Eye tracking and hand tracking

Touch interactions are best for close by objects. For farther objects, air tap still functions well, now with the new Raycast to aim better. I also tried the new touch interactions with gloves on and they work! which is a great plus for industrial users who wear gloves as part of their daily tasks. However, there is no finger tracking with gloves on. I also liked the scrolling feature which is just like flipping pages in a book but vertically. Moving, rotating, scaling and interacting with objects is a much easier user experience as well. Typing on virtual keyboards, for example to sign on, it’s also much nicer with the pushing of buttons like in real life

Multi-app experience

One of my favorite features is the multi-app simultaneous existence. So while I was downloading the annoying Windows latest update on the HoloLens 2 in Settings, I had that Window open and was also using the 3Dviewer to interact with multiple holograms. I also had two of my own deployed 3D apps exist simultaneously. I noticed no drawbacks in performance with so many apps open at the same time. But I would definitely like to see how this is when I use resource intensive features like networking or heavy polygoned objects etc in my apps. What would also be worth exploring is to have the apps talk to each other and if it’s even possible to do this

The follow me feature

In the inbuilt apps, I noticed an icon in between the minimize and the close app buttons. This one is to make the app follow you. I am yet to see how to incorporate this in my deployed apps. Or maybe it’s something available for each object

Device comfort

Glasses can be lifted above to offer some relief without having to take it off. Tip: You can push it up at 45 degrees to still see what is happening there from the upper view of your eyes. Especially useful, when you are updating or waiting for some hologram to appear etc. The device itself is much lighter for longer use

Connect with Miracast

So this is something I really liked with the HoloLens 2 as opposed to HoloLens 1. It didn’t work that well with the 1 but now the ‘Connect to a wireless display’ works better. All you need is the ‘Connect’ app on the Windows desktop if you are using that to display it onto. And then choose the ‘Connect’ button on the start menu of the HoloLens. No more difficulties with streaming connecting the IP address etc. The following screenshots shows how to do that. Start the Connect app on your desktop or display


 Connect with Miracast: So this is something I really liked with the HoloLens 2 as opposed to HoloLens 1. It didn't work that well with the 1 but now the 'Connect to a wireless display' works better. All you need is the 'Connect' app on the Windows desktop if you are using that to display it onto. And then choose the 'Connect' button on the start menu of the HoloLens. No more difficulties with streaming connecting the IP address etc. The following screenshot shows that. Start the Connect app on your desktop or display. 

You’ll see a screen similar to this


 You'll see a screen similar to this. Now go to your HoloLens and click on the Connect icon ont he start menu. 

Now go to your HoloLens and click on the Connect icon on the start menu.


 Then go on to click the device name which comes up in the next step

Then go on to click the device name which comes up in the next step



The following image shows my view on the HoloLens 2 and also on my Windows laptop which is connected. Audio from apps is also shared which is really cool when you have to show a live demo

 The following image shows my view on the HoloLens 2 and also on my Windows laptop which is connected. Audio from apps is also shared which is really cool when you have to show a live demo.
I'm attaching a video of the whole connecting process below.
<attach video here

I’m attaching a video of the whole connecting process below.

Sharing becomes easier

When you have this On in your PC and also on your HoloLens, then you can simply share the photos/videos between devices

 Sharing becomes easier: When you have this On in your PC and also on your HoloLens, then you can simply share the photos/videos between devices. 

Once you click a photo or video, an option to share should appear and a device which can be detected by Nearby sharing devices is shown in the screenshot on the HoloLens. Just choose the device and your PC should receive this. (This is similar to Airdrop on iOS devices)


 Once you click a photo or video, an option to share should appear and a device which can be detected by 'Nearby sharing devices' should be detected as shown in the screenshot on the HoloLens. Just choose the device and your PC should receive this. (This is similar to Airdrop on iOS devices)

Getting started for development on HoloLens 2 and MRTKV2

I waited long enough to use the MRTK V2 version for my HoloLens apps. On their website, Microsoft clearly recommends that MRTKV2 can be used efficiently with the HoloLens 2 since many interaction scripts on it works with the HoloLens 2 and does not with the HoloLens 1. So you’ll end up reworking and trying to fix something which is not wrong in the first place but is purely expected behavior

Microsoft even offers a porting guide to upgrade your existing apps from HoloLens 1 to 2. However, I simply didn’t prefer this. It was easier to plug and play newer scripts and elements from the MRTK V2 into a new Unity project and then adding my app features there. Since so many scripts and modules have changed, with lot of prefabs missing, it is simply best to start from scratch. In my experience, it was faster.

Anyway, most of the things are similar to HoloLens 1

However make sure to upgrade your tools:

Reference link: https://docs.microsoft.com/en-us/windows/mixed-reality/install-the-tools

1. Visual Studio 2019

2. Windows 10 1909 update on both your PC and HoloLens 2. this should appear on your Windows Update automatically. If not, just use the manual link here: https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk

3.Unity any version after 2018.4.x although recommended is 2018.4.x versions for MRTK v2 latest release (Oct 2019) https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/GettingStartedWithTheMRTK.html#get-the-latest-mrtk-unity-packages The Foundation package is enough to download and import into your project. However the other packages for Examples and Unity Tools are also helpful top learn

Note: in Unity 2019 version onwards, you are defaulted to IL2PP as scripting backend and there is no option to change it to .NET. Therefore, if you want to use .NET scripting, then go for the 2018.4.x versions

4. HoloLens 2 emulator (optional) if you don’t have a device yet and you still want to learn how to develop, this is useful

Go on to create your new sample project in Unity

Import the MRTK V2 foundations package into your project similar to how you were importing this earlier

Reference Link: https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/GettingStartedWithTheMRTK.html

Import package -> Navigate to where you have saved your MRTKV2 foundations package and select it. Then keep all selected and Import when it prompts you in Unity

Also select Apply when asked on the screen for applying MR settings to the project.


 Go on to create your new sample project in Unity. Import the MRTK V2 foundations package into your project similar to how you were importing this earlier.  Reference Link:  https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/GettingStartedWithTheMRTK.html Import package - Navigate to where you have saved your MRTKV2 foundations package and select it. Then keep all selected and  Import when it prompts you in Unity.  Also select Apply when asked on the screen for applying MR settings to the project. 

Now go to Mixed Reality Toolkit on the top menu and click on Add to Scene and Configure. When a window opens up to select the profile, choose the DefaultHoloLens2ConfigurationProfile if you are using a HoloLens 2, else choose the HoloLens1Profile. This is where you have all your default settings for Camera, Input etc


 Now go to Mixed Reality Toolkit on the top and click on Add to Scene and Configure. When a window opens up to select the profile, choose the DefaultHoloLens2ConfigurationProfile if you are using a HoloLens 2, else choose the HoloLens1Profile. This is where you have all your default settings for Camera, Input etc. 


Once you have done that, on the left your MixedRealityToolkit and MixedRealityPlaySpace appear. This sets your scene ready for MRTKV2 applications on the HoloLens 2.

Save your scene.

 Once you have done that, on the left your MixedRealityToolkit and MixedRealityPlaySpace appear. This sets your scene ready for MRTKV2 applications on the HoloLens 2. Save your scene.  Now go on to Build Settings - Player Settings 

Now go on to Build Settings -> Player Settings. Make sure the UWP platform is selected on the Player settings and then scroll down to Publishing Settings -> Capabilities. Select Spatial Perception. This will allow you to see a blue mesh surrounding itself whenever you scan. (Read my previous tutorial here on Spatial Mapping and Perception on the HoloLens 1)


 Now go on to Build Settings - Player Settings. Make sure the UWP platform is selected on the Player settings and then scroll down to Publishing Settings - Capabilities. Select Spatial Perception. This will allow you to see a blue mesh surrounding itself whenever you scan. (Read my previous tutorial 	<link here on Spatial Mapping and Perception on the HoloLens 1)  It will also show on your app, your hands tracked (hands covered in the mesh which is the new hands/finger tracking feature from HoloLens 2)

Next go on to the Build Settings window. Choose Universal Windows Platform and have the settings shown in the screenshot.

Make sure the Windows latest build 10.0.18362 appears on Minimum Platform Version dropdown

Also make sure that the Visual Studio version 2019 is appearing on it’s dropdown

The differences from building on the HoloLens 1 to HoloLens 2 are:

Architecture: ARM

Build and run on: USB device

After these changes, click on Switch Platform

 Next go on to the Build Settings window. Choose Universal Windows Platform and have the settings shown in the screenshot.  Make sure the Windows latest build 10.0.18362 appears on Minimum Platform Version dropdown Also make sure that the Visual Studio version 2019 is appearing on it's dropdown The differences from building on the HoloLens 1 to HoloLens 2 are: Architecture: ARM Build and run on:  USB device After these changes, click on Switch Platform

Go back to Publishing Settings on Player Settings and enable Virtual Reality Supported on XR Settings


 Go back to Publishing Settings on Player Settings and enable Virtual Reality Supported on XR Settings

I have chosen my Scripting Backend settings as .NET. As IL2CPP builds are still taking a lot of time!

See my note on IL2CPP builds on the HoloLens towards the end of this article

 I have chosen my Scripting Backend settings as .Net. As IL2CPP builds are still taking a lot of time!
See my note on IL2CPP builds on the HoloLens towards the end of this article
<to include

Now you add your open scene and build it onto an App folder similar to HoloLens 1 earlier

Open the solution in Visual Studio 2019.

Now we try to build and deploy it onto the HoloLens 2 from Visual Studio

So one thing here that surprised me is that the HoloLens 2 comes with a USB-C to USB-C cable which fits onto the power adapter. If I am a developer, then I have to arrange for my own USB to USB-C cable to deploy it from my PC onto the HoloLens 2! And that was strange.

Once I had that cable, I opened the solution in Visual Studio 2019.

Unlike earlier, we need to choose Release , ARM (or ARM64) and Device to deploy it onto the HoloLens2


 So one thing here that surprised me is that the HoloLens 2 comes with a USB-C to USB-C cable which fits onto the charger. If I am a developer, then I have to arrange for my own USB to USB-C cable to deploy it from my PC onto the HoloLens 2! And that was strange.
Once I had that cable, I opened the solution in Visual Studio 2019.
Unlike earlier, we need to choose Release , ARM (or ARM64) and Device to deploy it onto the HoloLens2
One new thing introduced, when the app has finished deploying, it plays a short toned sound on the HoloLens, so it prompts you to look then and you see the Made with Unity splash screen. I thought this was a nice feature 🙂
The video output should give you an idea of what you should see. It's an inbuilt panel to include the CPU performance of the HoloLens and your hand being tracked continuously (you will see raycasts coming out of it)
<include video output here One more strange thing that I noticed: existing apps are replaced by any new apps deployed in Unity. Although it had a new name in Unity. The trick was to change the package name under Publishing Settings to something other than Template3D.. And then this worked too. 

One new thing introduced, when the app has finished deploying, it plays a short toned sound on the HoloLens, so it prompts you to look then and you see the Made with Unity splash screen. I thought this was a nice feature 🙂

The video output should give you an idea of what you should see. It’s an inbuilt panel to include the CPU performance of the HoloLens and your hand being tracked continuously (you will see Raycasts coming out of it)

One more strange thing that I noticed: existing apps are replaced by any new apps deployed in Unity. Although it had a new name in Unity. The trick was to change the package name under Publishing Settings to something other than Template3D.. And then this worked too.

Note on IL2CPP builds versus .NET builds

IL2CPP is surely recommended by Microsoft as a scripting backend. And they also provide some tips to optimize the machines to reduce time to build. ) https://docs.unity3d.com/Manual/IL2CPP-OptimizingBuildTimes.html

However, this did not make much difference for me. For this app, which is just a basic starter including the MRTK V2, the Unity build took 2-3 minutes as normal. But then the build on Visual Studio took about 10 minutes 🙁

With .NET, the build in Unity took 2-3 minutes as well. And also the same 2-3 minutes in Visual Studio.

That’s it. Hope you enjoyed this article!

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: