Category Archives: HoloLens

Magic Leap One vs HoloLens v1 Comparison

side-by-side

I’m currently sitting in my room at the L.A. Grand Hotel waiting for the L.E.A.P. conference to start. I’ve been holding off on this comparison post because I had promised Dennis Vroegop I would give it first as a talk at the Techorama Netherlands conference – which I did last week. I will do a feature comparison based on publicly available information, then highlight features unique to the Magic Leap, and then distinguish subtle but important differences that only become apparent from spending months with these devices at the developer level. Finally I want to point out design improvements in the Magic Leap that are so good for Mixed Reality that I predict they will be incorporated into the next version of HoloLens.

Keep in mind that this is a comparison of two different generations of devices. The Magic Leap One is coming out two years after the HoloLens and would be expected to be better. At the same time, the HoloLens v2 is being released some time in 2019 and can be expected to be better still.

1. Field of View

In raw numbers, the field of view of the Magic Leap One is approximately 25% better than the HoloLens. The HoloLens field of view is estimated to be about 29-30 degrees wide and 17 degrees high. The Magic Leap One is 40 degrees wide by 30 degrees high. There is a corresponding difference in resolution, with the HoloLens offering 1268 by 720 per eye and the Magic Leap One providing 1280 by 960 per eye.

The Magic Leap One uses the same wave guide display technology that the HoloLens does, however, so how did they pump up the FOV? First, the ML1 has a more powerful battery than the HoloLens does, and it’s often been claimed by Microsoft that FOV is largely dependent on the power of the projection. This is probably offset, though, by the fact that the ML1 is using more power to project in two planes instead of only one like the HoloLens does (with 6 Waveguide layers compared to 4 in the HoloLens).

Another trick is that the waveguides in the Magic Leap are closer to the wearer’s eyes than they are in the HoloLens. As a consequence, you can wear glasses underneath the HoloLens while you cannot do so comfortably under the Magic Leap device.

In addition to this, Jasper Brekelmans and Dennis Vroegop suggested over coffees along the Amstel River (in a conversation about David Copperfield) that because one’s peripheral vision is closed off in the ML1, the perceived FOV may be even larger than the actual. The theory behind this is that, due to the widespread use of glasses, we have become used to not paying attention to our peripheral vision so much and consequently are comfortable with this tunneling of our vision.

Blocking off the peripheral field of view might cause issues in certain industrial settings, but the general effect is that what you can see as a proportion of your overall FOV is much larger in the ML1 than it is in the HoloLens. Or another way of putting this is that the empty areas of your FOV, as a proportion of your available FOV, is much smaller than it is in the HoloLens.

On top of this, the aspect ratio of the FOV in the ML1 is much taller than in the HoloLens, which may end up doing a better job at accommodating vertical seccaddic movements of the eyes.

inset

Because of the narrower gap between the device and the wearer’s eyes, the Magic Leap can’t accommodate glasses as the Hololens can. To compensate, Magic Leap is developing relationships with online eyeglass manufacturers to provide prescription inserts that can be placed in front of the waveguides and magnetically lock into place. There’s some controversy over whether this is a good or a bad thing. Some developers have expressed concern that this will make demoing Magic Leap at events more difficult than demoing HoloLens, since those with poor vision will either not be able to participate or, alternatively, we will be forced to carry around a large suitcase of prescription inserts to every event.

On the other hand, when I think of what MR will be like in the future, I tend to think of them resembling real glasses (and not electronic contacts, which simply scare me). When they reach the size and ubiquity of modern glasses, it will make sense for each person to have their own personalized device with their appropriate prescription. Magic Leap is on the right track in this case. It’s just in the intervening period that we have to figure out how to share our limited, expensive devices with others.

HoloLens v1 Magic Leap One
Price $3000 – $5000 $2300
OS Windows Android variant
Field of View ~30 deg x 17 deg 40 deg x 30 deg
Resolution 1268 x 720 per eye 1280 x 960 per eye
Depth Sensor Time of Flight Time of Flight
Display Type Wave Guide Wave Guide
Hand Gestures Recognized 2 9
Underlying comic book technology Light Engines Light Fields
Controller Click 6 DOF
Hand tracking limited fingers (3 joints each)
Processing unit Above nose Light pack
Audio Spatial Sound Spatial Sound

2. Hardware Specs (It’s all about the battery)

HoloLens v1 Magic Leap One
Intel Atom x5-Z8100
1.04 GHz
Intel Airmont (14nm)
4 Logical Processors
64-bit capable
NVIDIA® Tegra X2 SOC
2 Denver 2.0 64-bit cores + 4 ARM Cortex A57 64-bit cores
(2 A57’s and 1 Denver accessible to applications)
8086h (Intel) GPU. NVIDIA Pascal™, 256 CUDA cores; Graphic APIs: OpenGL 4.5, Vulkan, OpenGL ES 3.3+
2GB RAM 8GB RAM
64GB Storage 128GB Storage

The Magic Leap One is overall a much beefier machine than the current HoloLens. While both the HoloLens and the Magic Leap One advertise a 3 hour battery life, these can mean vastly different things. In order to drive all of its extra hardware, the Magic Leap One needs a much beefier battery. The ML1 is powered by a twin-cell battery with 36.77 Wh, running at 3.83 V.  The HoloLens has a 1.65 Wh battery.

For overall performance, the larger battery means the world meshes (i.e. surface reconstruction, world mapping) are much denser and more frequently updated on the Magic Leap than on the HoloLens. The Time-of-Flight depth camera can fire off more frequently and for longer periods.

The larger battery and beefier specs also translate to much better 3D performance. The HoloLens is able to run 30,000 polygons at 60 fps. Beyond that, the fps begins to drop. The Magic Leap runs upwards of 1 million polygons at 60 fps.

On the downside, that more powerful battery rig needs a fan to cool it whereas the HoloLens is passively cooled. In laboratory and medical scenarios where a sterile environment must be maintained, active cooling with a fan could be a problem.

3. The HoloLens and Tracking

The HoloLens uses 4 monochrome cameras (“environment aware sensors”), an accelerometer, magnetometer and gyroscope in a sensor fusion configuration, and a custom HPU to perform head tracking. The Magic Leap one has a similar setup minus the HPU.

The HoloLens tracking is still somewhat better than the ML1’s. It loses tracking less frequently and digital content is less jittery when seen up close or while the wearer is in motion.

Overall, though, tracking performance is fairly close between the two devices.

4. Magic Leap Extras

The ML1 has a couple of features that are simply outside of the box. One is the eye tracking. There are inward facing cameras that track the wearer’s eye movements as invisible IR flashes.

The tracking is not continuous and is captured at a much lower resolution level than the displays. While they shouldn’t be used for direct user interactions, they are great for providing context for other interactions. It would be great if someone would write a keyboard that uses eye tracking to select keys. In the meantime, I wrote this heat vision demo that uses eye tracking to burn the walls of my house — I think of it as “Superman with a Migraine”. Note the eye-blink tracking.

The other cool extra in the Magic Leap is two planes of focus. Most VR devices have a single plane of focus at infinity. The HoloLens has a single plane of focus set at two meters.

In the magic leap one, when you look at near objects, objects further away (on the outer plane) seem to go out of focus. When you look at objects close up, the objects further away go out of focus. I would guess that the close plane is around a meter and the out one about 3 meters but I’m not really sure. In the Lumin OS .91, there is also a sporadic green shift in the near plane (which I expect will be fixed soon).

5. The Tether

tether

The Magic Leap One is made up of two parts: the Light Pack and the Light Wear. They are connected by a cable. The Light Wear contains all the sensors, projectors and displays while the Light Wear, worn at the hip, contains all the computer bits and the battery.

This is an engineering choice that allows for a much larger power source. Without the tether solution, a large battery would not be possible. Without the large battery, the ML1’s enhanced depth sensing, improved graphics processing and larger field of view would not be possible.

In addition, this design makes the Magic Leap a much more comfortable fit on the head. The weight distribution is better than on the HoloLens, it is lighter, and it doesn’t require extra straps.

The tether solution is actually so effective that I would be surprised if the HoloLens v2 does not follow a similar design. The original one-piece “tetherless” solution Microsoft came up with for the HoloLens was visionary, but severely limiting.

6. Developing

If you have ever developed in Unity for the Android (or really any other device) then you know how to develop for Magic Leap in Unity. You press a button and your app compiles to an .mpk image (Android uses “.apk” file extensions). If your device is attached, you can deploy directly by clicking on “build and run”.

Magic Leap apps can also be built with the Unreal Engine.

HoloLens apps run on a Unity player sandboxed in a UWP app. The development cycle consequently involves exporting your HoloLens app as a Visual Studio project targeting UWP and then building and deploying in UWP. In general (and it may just be me) this has been tedious.

It became even worse when the immersive WinMR devices (or occluded WinMR – basically Microsoft VR) devices came out last year and the basic tools used for HoloLens development, known as the HoloLens Toolkit and then the Mixed Reality Toolkit, was expanded to supported both kinds of device. Because of some issues with Unity, building for WinMR required certain versions of Unity and above while developing for HoloLens required certain versions of Unity and below. And this state went on for several months to the point that finding the correct Windows SDK paired with the right MRTK version paired with the correct Unity version became a closely kept alchemical formula passed from developer to developer.

This experience may not be the same for everyone but it left me a bit traumatized. By contrast, Magic Leap development is simply a pleasure. I can build and see the results very quickly in my device. I can wear the device for hours at a time. I typically only stop development when the ML battery runs down and I have to let it recharge. I don’t have a Magic Leap Hub, which would allow me to charge while I dev, but I intend to get one.

The Magic Leap toolkit is still not quite as capable as the open source Mixed Reality Toolkit managed by Stephen Hodgson and others.

The Magic Leap also has a simulator rather than an emulator for developing without a device. This actually makes sense since the Hololens emulator runs the HoloLens OS in a virtual machine, which might be tricky given the much larger specs of the Magic Leap.

7. Interactions

6dof

The Magic Leap supports robust hand and gesture tracking as well as a 6DOF controller. The DOF in 6DOF stands for degrees of freedom. We know not only the direction the controller is pointing in (3DOF) but also its position.

tap

I love the controller. I love it so much it made me finally admit to myself that I hate the HoloLens tap gesture. No one ever gets it right. It’s awkward. It’s uncomfortable and makes me feel like I’m performing a kung fu move.

mantis

By contrast, a controller just makes sense. The UX for MR, I believe, should always support three layers of interactions. Mixed reality UX should support hand gestures for ease of use. It should fall back to the controller for precision movements. It should finally fall back on the delta pad on the controller for accessibility.

For all of my antipathy toward the HoloLens tap, however, I have to say I miss the HoloLens bloom gesture (escape), which I keep trying to use in Magic Leap to no avail. Instead, in Magic Leap holding the controller’s Home button for three seconds is the escape gesture, which I don’t really like. It also bothers me that hand gestures aren’t supported in the core desktop (the Icon grid) – but this is still the Creator’s Edition (translation: dev edition) after all.

[Late edit thanks to SH: it should also be pointed out that the Lumin OS (the desktop layer) currently doesn’t support hand gestures, which I find baffling. For now, you can’t get past the login and other initial screens without a paired phone or a controller.]

Summing Up

So is the Magic Leap One better than the HoloLens v1? Oh yes. By leaps and bounds.

1. The development workflow is much more straight forward and pleasant.

2. The increased battery size and beefier hardware makes it possible to do things, performance wise, that the HoloLens tended to stop us from doing. Phone and tablet level experiences are doable now.

3. The Magic Leap One has a much better interaction model than the HoloLens does. How did anyone ever do MR without a controller? (Actually, everyone used an XBox controller in the end in order to get any sort of real work done, but we don’t talk about that much.)

Is it time to jump back into Mixed Reality development?

If you spent $3.2K to $5K for a HoloLens, then you owe it to yourself to spend $2,300 for a Magic Leap. It’s the device you originally wanted. The HoloLens was a brilliant device back in 2016 and really the first of its kind, but it had limitations. Many of the projects you were never able to realize in HoloLens (in the small dev community that developed around HoloLens, we all know what these are) are now doable with the improved Magic Leap specs. Additionally, your enterprise stories are much easier to sell with the controller. Instead of spending 5 minutes of your precious pitch time explaining how tap works, you can now just let your potential investors and clients go straight into the demo with a controller they basically already know how to use.

Is there a future in spatial computing?

Now there is. There was a brief pause between 2016 and the middle of 2018, but we currently have two great devices available with another shoe dropping soon. Microsoft will be coming out with a HoloLens v2 sometime in the first half of 2019 which I would predict will implement the tethered design Magic Leap is using. This will be an improvement over the current Magic Leap which in turn will be driven to improve its own tech.

Microsoft has an advantage because it started this journey back in the Kinect days and has the resources of Microsoft Research to draw on. Magic Leap has an advantage because, well, they aren’t Microsoft and don’t face the internal political problems a large tech giant does (though no doubt they have their own). More importantly, they have their own U.S.-based production lines (as well as production lines in Mexico) and are less reliant on China, which hopefully means they are capable of much quicker turn-arounds and initial SKU production.

When do we get smaller devices that wear like glasses?

I have no idea, but try to think in terms of 3, 5, 10 years. We always overestimate what can be done in 3 years but always underestimate how much things will change in 10. Somewhere in the middle, we will intersect with our MR futures.

Your comments, corrections and criticisms are welcome in the comments below. I’ll try to keep up with them and incorporate what you say into the main article as appropriate.

HoloLens and MR Device Dev Advisory Mar-2018

I’m currently doing HoloLens development with VS 2017 v15.6.4, Unity 2017.3.1p3, MRTK 2017.1.2, and W10 17128 (Insider Build).

Unity 2017.3.1p3, a patch release, includes the 2017.3.1p1 fix for hologram instability:

(993880) – XR: Fixed stabilization plane not getting set correctly via the SetFocusPointForFrame() API, resulting in poor hologram stabilization and color separation on HoloLens.

There continues to be uncertainty about whether this fixes all the stabilization problems or not – though it’s definitely better than it has been over the past several months.

UnityWebRequest continues to always return true for the isNetworkError property. Use isError or isHttpError instead. The older WWW class probably shouldn’t be used anymore. There are reports that media downloads aren’t working with UnityWebRequest while other file types are.

So if you have something working now, and have work-arounds in place, you probably shouldn’t upgrade. I know of HoloLens developers who are still very happy working in the older Unity 5.6.3.

April is shaping up to be very interesting. According to Unity, they will be releasing Unity 2018.1.0 then. For UWP/HoloLens developers, this means the addition of the .NET Standard 2.0 API compatibility level. .NET Standard 2.0 can be thought of as the set of APIs commonly supported by both .NET Core 2.0 (what UWP uses) and .NET Framework 4.6.1 (used for Windows apps and in the IDE). By supporting this, Unity 2018.1.0 should provide us with the ability to write much more common MonoBehaviour script code that works in both the IDE and on the HoloLens without using precompiler directives.

Of course, this is only useful if the HoloLens actually supports .NET Core 2.0, which is why the announcement of the RS4 Technical Preview is such a big deal. This is the first major firmware update for the HoloLens since release, and brings with it all the changes to Windows platform since the Anniversary Update (build 10.0.14393) which was also known as RS1 and which supports .NET Core 1.0.

Redstone 4 (build 10.0.17133), also known as the Spring Creators Update, is supposed to drop for PCs in mid-April. Which coincidentally is also when Unity 2018.1.0 is supposed to drop. So it would not be out of the question to expect a version of RS4 for HoloLens to drop at around the same time.

What sets RS4 for HoloLens apart from RS4 for Windows? For one thing, on the HoloLens we will have access to a new feature called Research Mode, providing access to low level sensor data such as the ToF depth camera and potentially the 4 mono cameras and the microphones. This in turn can be used to try out new algorithms beyond what the HoloLens already currently uses for data analysis.

On the UI front, the MR Design Labs interface tools have finally been integrated into the dev branch of the Mixed Reality Toolkit. Fingers crossed that this will make its way into the main branch in April also.

Finally, Magic Leap’s mixed reality headset, dubbed the Magic Leap One, had its debut at GDC this month. They also opened their creator portal to all developers, with links to documentation, the Lumin SDK, a special version of Unity 2018 to develop ML apps and a simulator to test gesture and controller interactions.

In the interest of full disclosure, I’ve been developing for the Magic Leap for a while under NDAs and inside a locked room ensorcelled by eldritch spells. It’s a great device and finally creates some good competition for the HoloLens team at Microsoft.

The first reaction among people working with the HoloLens and occluded MR devices may be to be defensive and tribal. Please resist this instinct.

A second, well-funded device like the Magic Leap One means all that much more marketing dollars from both Microsoft and Magic Leap spent on raising the profile of Mixed Reality (or Spatial Computing, as ML is calling it). It means healthy competition between the two device makers that will encourage both companies to improve their tech in efforts to grow and hold large swaths of the AR market. It also means a new device to which most of your spatial development skills will easily transfer. In other words, this is a good thing my MR homies. Embrace it.

And from the development side, there are lots of things to like about Magic Leap. Lumin is Linux/Mono based, which means a higher level of compatibility between the platform and pre-existing Unity assets from the Asset store. It also supports development in Unreal. Lastly, it also supports development on a Mac, potentially offering a way for crossover between the design, gaming and enterprise dev worlds. This in turn raises interest in high-end AR and will make people take a second look at HoloLens and the occluded MR devices.

It doesn’t take a weatherman to know it’s going to be a great summer for Mixed Reality / Spatial Computing developers.

HoloLens and MR Device Dev Advisory Jan-2018

I’ve come to accept that doing HoloLens and MR Device development means working with constant issues. As long as I can stay on top of what these issues are, I feel less like pulling out my hair. And I’m not just a member of the hair club for men – I also want to help you avoid hair loss with monthly updates.

I’m currently doing HoloLens development with VS 2017 v15.3.3, Unity 2017.2.0f3, MRTK 2017.1.2, and W10 17074 (Insider Build).

shared_buffer

This month saw the release of Unity 2017.3.0f3, which introduced a fix but also some new bugs. The fix is to the HoloLens stabilization issues introduced in December’s Unity 2017.2.1 release which caused holograms to be jittery. In Unity 2017.3.0f3, a new player setting in the editor called shared depth buffer fixes this. Just expand the Windows Mixed Reality node under XR Settings and check off Enable Depth Buffer Sharing. On the other hand, this seems to conflict with the stabilization logic in the MRTK, so you may see some jumpiness (but no jitteriness!) so you’ll want to remove that older logic from your code.

2017.3.0f3 also introduced problems with WWW (Unity’s older internet communication class). Basically, it doesn’t work when running in UWP anymore (though it does on other platforms and in the editor), so if your code or any assets you may be depending on for internet communication depend on WWW, you’ll have issues.

If you are using older stable builds of the MR Toolkit (up to 2017.1.2), you’ll start getting warnings and errors in 2017.2.0f03 and above about outdated APIs. Unity introduces API changes with each monthly release. The UnityEngine.VR.WSA namespace, for instance, is now UnityEngine.XR.WSA (sometimes the Unity editor will automatically fix this  for you when you migrate a project but often it doesn’t). In a couple of cases (like in the HandGuidance class) you’ll notice that the InteractionManager APIs have changed.

UnityEngine.XR.WSA.Input.InteractionManager.SourceLost += InteractionManager_SourceLost;
            UnityEngine.XR.WSA.Input.InteractionManager.SourceUpdated += InteractionManager_SourceUpdated;
            UnityEngine.XR.WSA.Input.InteractionManager.SourceReleased += InteractionManager_SourceReleased;

becomes:

UnityEngine.XR.WSA.Input.InteractionManager.InteractionSourceLost += InteractionManager_SourceLost;
            UnityEngine.XR.WSA.Input.InteractionManager.InteractionSourceUpdated += InteractionManager_SourceUpdated;
            UnityEngine.XR.WSA.Input.InteractionManager.InteractionSourceReleased += InteractionManager_SourceReleased;

The signature of the event handlers also change. Just follow Visual Studio Intellisense’s notes on how to fix the signatures.

A Guide to Online HoloLens Tutorials

There are lots of great video tutorials and advanced HoloLens materials online that even people who work with HoloLens aren’t always aware of. I’d like to fix that in this post.

1. The Fundamentals

lil

If you are still working through the basics with the HoloLens, then I highly recommend the course that Dennis Vroegop and I did for LinkedIn Learning: App Development for Microsoft HoloLens. We approached it with the goal of providing developers with everything we wish we had known when we started working with HoloLens in early 2016. The course was filmed in a studio at the Lynda.com campus in Carpinteria, California, so the overall quality is considerably higher than most other courses you’ll find.

 

2. The Mixed Reality Toolkit (HoloToolkit)

hodgson

Once you understand the fundamentals of working with the HoloLens, the thing to learn is the ins-and-outs of the Mixed Reality Toolkit, which is the open source SDK for working with the HoloLens APIs. Stephen Hodgson, a Mixed Reality developer at Valorem, is one of the maintainers of (and probably biggest developer on) the MRTK. He does live streams on Saturdays to address people’s questions about the toolkit. His first two hour-long streamcasts cover the MRTK Input module:

#1 Input 1

#2 Input 2

The next three deal with Sharing Services:

#3 Sharing 1

#4 Sharing 2

#5 Sharing 3

These courses provide the deepest dive you’re ever likely to get about developing for HoloLens.

 

3. HoloLens Game Tutorial

chad

Sometimes it is helpful to have a project to work through from start to finish. Chad Carter provides this with a multipart series on game development for Mixed Reality. So far there are five lessons … but the course is ongoing and well worth keeping up with.

#1 Setup

#2 Core Game Logic

#3 The Game Controller

#4 Motion Controllers

#5 Keeping Score

 

4. Scale and Rotation System

jason_odom

Jason Odom’s tutorial series deals with using Unity effectively for HoloLens. It brings home the realization that most of 3D development revolves around moving, resizing, hiding and revealing objects. It’s written for an older version of the toolkit, so some things will have changed since then. By the way, Jason’s theme song for this series is an ear worm. Consider yourself warned.

#1 Setup

#2 Scale and Rotate Manager

#3 Scale and Rotate Class

#4 Scale and Rotate Class part 2 

#5 Scale and Rotate Class part 3

#6 Scale and Rotate More Manager Changes

#7 Scale and Rotate Temporary Insanity

#8 Scale and Rotate Q & A

 

5. HoloLens Academy

There’s also, of course, Microsoft’s official tutorial series known as the HoloLens Academy. It’s thorough and if you follow through the lessons, you’ll gain a broad understanding of the capabilities of the HoloLens device. One thing to keep in mind is that the tutorials are not always synced up with the latest MRTK so don’t get frustrated when you encounter a divergence between what the tutorials tell you to do and what you find in the MRTK, which is being updated at a much more rapid rate than the tutorials are.

 

6. Summing up

You’re probably now wondering if watching all these videos will make you a HoloLens expert. First of all, expertise isn’t something that you arrive at overnight. It takes time and effort.

Second of all – yeah. Pretty much. HoloLens development is a very niche field and it hasn’t been around for very long. It has plenty of quirks but all these videos will address those quirks either directly or obliquely. If you follow all these videos, you’ll know most of everything I know about the HoloLens, which is kinda a lot.

So have fun, future expert!

10 Questions with Phoenix Perry

phoenix

Certain people are bellwethers for creative technology and you want to check in on what they are up to every 3 to 6 months to find out where the zeitgeist of the coding world is headed. I’m thinking of people like Kyle McDonald, James George and Phoenix Perry – folks who, per Jean Cocteau’s maxim, manage to stay on the avant-garde even when everyone else has caught up to what had been the avant-garde half a year earlier.

Phoenix is currently teaching physical computing in London. She has spoken and led workshops at most of the leading conferences devoted to emerging technology. You can (and should) keep up  with her adventures on her website, phoenixperry.com, and on twitter.

What movie has left the most lasting impression on you?
2046.

What is the earliest video game you remember playing?
Pong.

Who is the person who has most influenced the way you think?
The women of Code Liberation. Over the duration of the organization have radically shifted how I think and who I am. Mentoring younger women in tech has changed who I am. The conversations we have are inspired and open up my mind to a deeper,  more compassionate way to live.

When was the last time you changed your mind about something?
This week. The river is different every time you step into it.

What’s a programming skill people assume you have but that you are terrible at?
I think it’s more a skill level. People assume I’m some super expert but the truth is I’m often relearning my skill set constantly because it’s so broad. For example, every single time I look at javascript, it’s brand new all over. I’ll go delve in an area deeply and the other spaces will move forward and I’m a novice all over again.

What inspires you to learn?
Humility at how little I know.

What do you need to believe in order to get through the day?
I need to believe the people around me value my work and contributions.

What’s a view that you hold but can’t defend?
I hate Opera. Have no real reason why other than it sounds so annoying to my ears. 
What will the future killer Mixed Reality app do?

One that allows me to interact with one experience fluidly across contexts.

What book have you recommended the most?
Memories, Dreams and Reflections by Carl Jung

Farewell, Keyword Manager

keyword_manager

With the Mixed Reality Toolkit 2017.1.2, the Keyword Manager was finally retired, after being “obsolete” for the past several toolkit iterations.

As the toolkit matures, many key components are being refactored to make them more flexible and architecturally proper. The downside to this – and the source of much frustration – is that these refactors tend to upend what developers are used to doing. The Keyword Manager is a great example of this. It was one of the best Unity style interfaces for HoloLens / MR because it encapsulated a lot of complex code in a easy to use drag-and-drop style visual.

The challenge for those working on the toolkit – Stephen Hodgson, Neeraj Wadhwa, and all the others – is to refactor without too badly breaking the interface abstractions we’ve all gotten used to. For the KeywordManager refactor, this was accomplished by breaking the original component into two parts, a SpeechInputSource and a SpeechInputHandler.

inputsource

The SpeechInputSource lets you determine if speech recognition starts up automatically and the recognition confidence level (you want this higher if you are using ambiguous or short phrases like “Start” and “Stop”). The Persistent Keywords field lets you keep the same speech recognition phrases between different scenes in your app. Most important, though, is the Keywords list. This lets you add to a list of phrases you want to be recognized in your app.

inputhandler

The SpeechInputHandler is the component that lets you determine what happens when a phrase is recognized (the response). You click on the plus icon  to add a response, select the phrase that will be handled in the Keyword field, and then can drag and drop gameobjects into your response and select the script and method that is called.

The one thing you need to remember to do is the check off the Is Global Listener field if you want behavior similar to the old KeywordManager. This will listen for all speech commands all the time. If Is Global Listener is not selected, then only the SpeechInputHandler  the user is gazing at will receive commands. This is really useful if you have multiple copies of the same object and only want to apply commands to a particular instance at a time.

10 Questions with Roland Smeenk

smeenk

Roland Smeenk belongs to a species of coders variously known as creative technologists, new media developers, creative designers, etc. As with human civilization, there came a time when coders were expected to settle down in one place and learn to cultivate their code repositories while also effectively implementing division of labor and managerial techniques in order to get us where we are today.

But there are always the hunter-gatherers like Roland who insist on traveling unworn paths, who resist division of labor and want to learn everything for themselves. They stand athwart history, it is true, but they are also the innovators who determine what history will become.

shader

Roland wrote and published the HoloLens Shader Pack to the Unity Asset Store. This lets you have a range of configurable scanning effects like the ones you’ve probably seen in Microsoft’s official HoloLens demo reels – plus a lot more. It’s one of the earliest HoloLens related tools in the Asset Store and an essential component for anyone working on professional MR applications.

 

What movie has left the most lasting impression on you?
Minority Report, because it envisioned future digital interfaces that are already technically feasible these days. From a human factors standpoint most of them are not what you would want in a system that requires efficient manipulation of data. However from an esthetics standpoint they provide a great inspiration for making interactive installations.

What is the earliest video game you remember playing?
I remember playing Pong on my uncle’s television back in the seventies, but that was only one afternoon. It lasted until the eighties before my father bought an Apple IIe personal computer. I played only a few games on that system with it’s monochrome screen. One game that impressed me was “Dung Beetles”, because of the audio sample “We’ve gotcha” that was coming from a speaker that normally only produced simple beeps.

Who is the person who has most influenced the way you think?
I believe there’s a mix of people and experiences that influence your way of thinking in different areas. So what comes to mind are my parents, wife, friends, former colleagues, people I follow online and authors of books I read, all in different areas.

When was the last time you changed your mind about something?
Three questions ago.

What’s a programming skill people assume you have but that you are terrible at?
I don’t know what people are assuming about my programming skills. They are probably better than my mechanical engineering skills that I earned my master’s degree for many moons ago.

What inspires you to learn?
There’s a lot of ground to be explored in mixing the digital and the real world in interesting new ways. And this goes well beyond the use of HoloLens. For interactive experiences it often starts by drawing inspiration from sci-fi movies, music videos, games, artworks and new technology, but I also like a good story as a starting point. This eventually leads to what I need to learn. Lately these are often areas where no software is involved.

What do you need to believe in order to get through the day?
That the things I create will touch people in a positive way.

What’s a view that you hold but can’t defend?
That there is no life after death. At least this reminds me to live life to the fullest.

What will the future killer Mixed Reality app do?
There will not be one killer app, but instead it will be a ubiquitous ecosystem that understands us and helps us do all kinds of everyday tasks. This will give us more free time to spend with family and friends and frees our minds for other things.

What book have you recommended the most?
The design of everyday things by Donald Norman.

HoloLens LinkedIn Learning Course

Pasted image at 2017_09_22 08_59 PM

My friend Dennis Vroegop and I have recorded a course for LinkedIn Learning (Lynda.com) called Developing Apps for the Microsoft HoloLens. We wanted this to be the get up and go course covering the HoloLens that takes you from zero to 60, while also providing a larger understanding of the device itself, it’s place in history, and what the current market for the HoloLens is.

As we say in the course, this is what we wished we had had when we were starting off with HoloLens a year ago. All in all, I think we succeeded beyond our wildest dreams. LinkedIn Learning is offering a free initial month to their video courses, so you can watch the whole thing and start programming on the emulator, if you want, with free software from Microsoft and Unity. All it takes is a will. This is the way.

Our producer on the shoot, Dennis Meyer, has written his insights on the whole process and what he now things about AR and VR after going through this adventure with me and Dennis V.

I hope you enjoy the course. Please let me know what you think in the comments.

10 Questions with Sky Zhou

sky

Sky Zhou is a HoloLens developer who has spent the past year exploring some of the most difficult MR development problems such as storing and retrieving spatial maps and the ins-and-outs of the locatable camera coordinate system. He recently tested out his Room Scanner with help from members of the HoloDevelopers slack group. You can signup to try the public beta now.

If his name sounds familiar, you may be remembering his earlier work on a Pokemon fighting app for the HoloLens.

 

What movie has left the most lasting impression on you?
I have two, The Matrix and Inception; both pose philosophical questions about the nature of existence and reality.

In addition, I like The Matrix for its vision of the future, in terms of the possibility of simulating a world with computer programs and its depiction of the power and danger of AI. I like Inception for its crafty metaphoric story about story telling itself as an art form. HoloLens brought us a giant step closer to the visions of simulated 3D world and alternate realities like dreams. Mixed reality will be a great art form for storytelling.

What is the earliest video game you remember playing?
I didn’t have much play time on video games when I was little. I can remember glympses of super mario, street fighters, and ninja turtles. However, I remember very well the first computer game I played. It was an RPG based on the Romance of Three Kingdoms. I enjoyed the game and the story so much. I wish I can build something like that in mixed reality with HoloLens.

Who is the person who has most influenced the way you think?
Laozi, an ancient Chinese philosopher from 600 BC. It’s hard to explain all his deep thinking here and my interpretation might be flawed. However, if I have to narrow down the idea: things are observed and defined by us, and they can be observed and defined in many other ways. Therefore, nothing has to be absolute and we need not attach ourselves to extremes defined by us. Once you see that, you can always reach a balance, a compromise, or a feasible solution.  It really helps me keep an open mind to this world. The concept of mixed reality could help us understand this fine point. Many different observations and representations can be made in the same physical space, depending on what apps you are running and seeing through the HoloLens, so we can all agree that we don’t always get the same perspective and the same information, and therefore we end up forming different conclusions and decisions.

When was the last time you changed your mind about something?
In general, I change my mind based on additional information and evidence. For example, I used to think Microsoft was a lazy non-innovative company that puts no effort into making another great product and is just milking profit from its Windows and Office software. However, the first public demo of HoloLens in January 2015 blew my mind and completely changed how I see Microsoft.

What’s a programming skill people assume you have but that you are terrible at?
People assume I have some fixed programming skills in some languages, but what I really have is the ability to solve problems, by doing research and experimenting. In this regard, I owe many thanks to the awesome developer community around HoloLens and windows mixed reality.

What inspires you to learn?
1. Problems! I love to apply knowledge to solve problems. It pushes me to learn new things and often lead to even more new knowledge. For example, the frame rate was poor on my first demo of photo-textured room scanning on HoloLens. In order to improve performance on this app, I learned how to use compute shaders.

2. Community. With a great community around HoloLens, you feel you are not alone in this crazy endeavor, and there are people who value what you do. Other developers’ awesome demos also inspire me to do more myself. The feedback I get is the most valuable for alerting me to problems and pushing me to make my apps better. For example, when I saw 3 comments about poor frame rate on my Youtube channel, I knew I had to figure out a way to address it.

What do you need to believe in order to get through the day?
There is another problem to solve and a new thing to learn! Plus my HoloLens is still working!

What’s a view that you hold but can’t defend?
I hold a view that Microsoft got it right this time, with their innovative approach to mixed reality. I can see consumer and business adoption at a massive scale because this technology truly brings amazing utility never seen before, once certain limitations are worked out (such as price, field of view, weight, full gesture recognition, etc.). Windows Mixed Reality is like an extension of Windows with all the familiarities from the existing flat desktop, but in 3D space. This familiarity in non-gaming uses of PCs makes it much more attractive to consumers and businesses.

What will the future killer Mixed Reality app do?
It depends on what pain it kills. Different people experience different pains. For example, a common pain is a long commute time. One possible solution is that company offices can be significantly reduced in size and most people work from home or anywhere they choose. Many large companies are currently heading in this direction already. Besides using mixed reality tools for creative 3D art work, an immersive virtual home office could improve focus, and shared experiences with the holo-presence of colleagues could improve teamwork and collaborations. Thus, the effectiveness and efficiency of working from home can be improved.

The ultimate dream of mixed reality is that you have 3D digital information and holograms overlay on top of a real physical environment no matter where you go and users can interact with them in shared experiences. Think of Pokémon Go plus Google street view, but with useful and relevant information wherever and whenever you need them. This requires much finer mapping—finer than Google street view currently provides—to your desk, your fridge, your car, and even yourself. This idea is not original to me: Ori Inbar wrote a great article recently about it and termed it “the AR Cloud.” When that happens, in essence we will have also created a massive interactive virtual world like the Matrix.

What book have you recommended the most?
Angels and Demons, by Dan Brown; Zen and the Art of Motorcycle Maintenance, by Robert M. Pirsig.

10 Questions with Stephen Hodgson

hodgson

Stephen is an immersive experiences developer at Valorem. He is also a moderator and the most prolific contributor to the HoloToolkit (now the Mixed Reality Toolkit). If there has been a change to the toolkit over the past year that improved your developer experience, Stephen probably made it. Moreover, he does this in his free time.

shodgson

I spent an evening online with him about two weeks ago fixing an issue with automatic builds for Visual Studio 2017 and spent much of that time wondering how one person could maintain so much knowledge about such a large and complex code base. He is the centurion at the gate, finding satisfaction when our Mixed Reality projects go well and happy when he can provide tools to make our development easier. The next time you successfully deliver a project, please consider sending Stephen a thank you.

 

What movie has left the most lasting impression on you?
Arrival was pretty interesting. I really find time travel and their paradoxes quite fascinating. The looping nature of the alien language and the connection to the movies main theme really helped drive the action. I also loved how the movie started at both the beginning and end. I enjoy many movies that range across different genres, from sci-fi to action.

What is the earliest video game you remember playing?
Chrono Cross by Square Enix is definitely the one I remember most vividly, but I’m pretty sure the first video game I ever played was the original Mario game on the Nintendo.

Who is the person who has most influenced the way you think?
This one is pretty difficult to answer. I’m not sure if any one person had a huge impact on why I think the way I do. I’ve always been off in my own thoughts thinking about how light, electromagnetism, and matter work together—oh and also the paradoxes of time travel, haha.

When was the last time you changed your mind about something?
I feel like I change my mind a lot. Generally, I like to approach things from many different angles and evaluate them to see whichever option is the best, and even then I’m likely to make an adjustment down the line. When it matters, I try to corner myself into making a decision that I can’t back out of.

What’s a programming skill people assume you have but that you are terrible at?
Professionally I like to stay pretty honest about my abilities and accept work that fits my skill level while still challenging me to grow. I definitely feel like I need to get stronger in networking and understanding the lower level languages a bit more, although the need for memory management is no longer a requirement, it’s nice to know exactly why a function or class works the way it does.

What inspires you to learn?
Leaning is a part of life, and is essential to survival. On that note, I’ve always liked the notion that the only way to learn is to make mistakes. I’ve always found it frustrating when people can’t admit they’re wrong about something, because they are admitting they don’t make mistakes, which in turn leads me to believe that they’re incapable of learning new ideas.

What do you need to believe in order to get through the day?
Tomorrow never comes. I usually don’t think about the end of the day until it arrives, and by then I’m already planning tomorrow.

What’s a view that you hold but can’t defend?
Not sure how to answer this one. I usually don’t hold a view that can’t stand on its own.

What will the future killer Mixed Reality app do?
The whole idea of mixed reality apps is to bring the virtual into the real world. There’s been a big push recently about how the internet will dramatically change after the association with a physical space and it’s virtual space—like a webpage or other virtual element—can be brought together to create a meaningful productive space.

What book have you recommended the most?
I haven’t read an actual book in quite a while, but growing up I was definitely a bookworm. Now I read code all day. If I had to recommend reading, it’s the new APIs and change logs from Unity, Windows 10 SDK, and the Mixed Reality Toolkit for Unity.