June 25, 2017

How Big Is HoloLens’ Field of View?



I have said this too many times, but there are still a lot of dumb asses in media do have a clue.

47″ TV: 19 x 11 degree
HoloLens: 30 X 18 degree

The above screenshot from Microsoft’s recent concept video shows just that. I know that’s a mock up, but it agrees to my estimation perfectly.



HoloLens SDK Is Expected to Release Soon!



As a number of people who have followed my blog noticed that I am writing a HoloLens programming series. I am ready to bring in another post with detailed programming technique and a working example based on my recent research on HoloLens programming. Just before I do so, I checked with the some great people that I have access to, just making sure that I am on the right direction, and that I am not misleading my readers. I got some information that is beyond exiting. I can’t contain my excitement. How reliable is my source? Well, I rarely say things that I am not sure of. Talking is cheap, lets get to is.

(We’re) working hard to release development tools and are looking forward to sharing information on the SDK for Microsoft HoloLens soon. The best way to ensure you receive developer updates and holographic APIs when available is to join the Windows Insider Program and install the Windows 10 Technical Preview. You can also start by building Windows universal apps and ramping up on Unity.

If you are a developer, you don’t need me to say anything more. This a what everyone is waiting for. I wonder why Microsoft didn’t make it available earlier.

For now, I will hold off my HoloLens programming series. Lets talk about it more when the new SDK is released. I think the date should be in line with Dev version of HoloLens hardware release, which is within two months.



HoloLens Programming in C# and DirectX – A Closer Look


Edit: The content of this is still valid, but some of the practice may not be ideal, please here for details.

We are not ready for the code yet. Before I show you how I do C# and DirectX, I want to do two things in one post: 1. Show you all the options we have for programming DirectX in C#. 2. Give you a little introduction about what the hell DirectX is. Lets get to it.

What are the options?

1. Unity + C# script.
As I said in the previous posts, this is not an option for HoloLens apps. Because Unity is for games only. You can still do apps with Unity, but it is going to be resource intensive, as you may expect for a game. If you have large amount of 3D visuals, like in a flight simulation, or the one like Case Western Reserve University does with HoloLens, you are still better off with Unity, but for light 3D rendering, mostly business logic and communication or things like a normal app does, you better write an app instead of a game. You need to look for something other than Unity, or any other game engines.

It would be ideal if Unity or another game engine manage rendering in the way like an app does, that would great for application development, but that’s not the case now. If the app itself has very dynamic objects in the scene, they are moving all the time, and requires fastest response possible from the user, then you have to go with game, no matter it is called a game or not.

2. C++/C# UWP app with DirectX in CoreWindow
CoreWindow is a class that represents the utter most application window of a UWP app. There are two project templates in Visual Studio 2015: DirectX 11 App and DirectX 12 App (New Project -> Visual C++ -> Windows -> Universal ->). Either of those two template generates bare bone code that is based on CoreWindow.

The templates titled “App”, but they are actually games. There is a game loop on app level. Visual updates are done at a possible frame rate. The DirectX rendering target is the app’s CoreWindow. The two templates are C++ projects, as I will show you in next post, it is very much possible to code DirectX in C++ and C# for rest parts, but this one is not our interest, because again, it is a game, not an app.

Let me try one more time to make it clear about the difference between an app and a game from a developer’s point of view. A game tries to use as much CPU/GPU as possible to satisfy a game’s need for frame rate. That’s why it runs on game loop to update visuals, instead of let the system handle them. Lets say, beside display and interaction, your app have a lot of other task to do, if your application is trying every 20 ms to update visuals, what time is left for everything else? I just found it’s not the ideal way of programming.

3. C++/C# DirectX with SwapChainPanel
SwapChainPanel is a xaml control designed to make DirectX work inside of the xaml controls. This is much like XNA and Silverlight interop in the past. It achieve the best of both world. Usually you put SwapChainPanel as the main scene, with other controls work as overlay. SwapChainPanel deal with DirectX rendering. However, the design of SwapChainPanel is still game oriented. You may use SwapChainPanel as islands among other controls, but the general guideline from Microsoft is SwapChainPanel targeting game development.

By the way, there was a SwapChainBackgroundPanel, which is replace by SwapChainPanel.

4. C++/C# DirectX with SurfaceImageSource
SurfaceImageSource works like general ImageSource for XAML controls. Many XAML controls can have ImageSource, SurfaceImageSource works in similar way, the difference is SurfaceImageSource is a surface for DirectX renderings. The resource of than rendering can be used as a image source for many different controls. In the next post, I will show you how to do the rendering part in C++, and everything else C#, like what you do in any UWP apps.

5. C++/C# DirectX with VirtualSurfaceImageSource
VirtualSurfaceImageSource is the same as SurfaceImageSource, except the former is for DirectX rendering of unlimited size, usually larger than the screen size. This is, I think, the best fit for HoloLen applications, because your visuals are likely spreading in the space instead of a small window. In the post after next one, I will show you a working example of that.

So, what the hell is DirectX any way?

DirectX is the ultimate 3D rendering APIs provide by all modern Windows OSes. Whatever 3D engines you know that work on Windows, work on top of DirectX. Being Unity, XNA, Unreal Engine, or any others, there is no exception, they are on top of DirectX.

DirectX is a collection of APIs that do not only 3D, also 2D, Text, Texture, shaders, that’s the X in DirectX. They are:

* Direct3D – for 3D objects
* Direct2D – for 2D overlays
* DriectWrite – for text
* Untilities: DirectXMath, XAudio, XInput

That’s not all, the following are parts of the DirectX subsystem:

* DXGI – Microsoft DirectX Graphics Infrastructure, deals with display devices directly. Because 3D drawing need to be faster than usual, that’s why programmer are required to deal with hardware directly. That’s the interface for it.
* HLSL – High Level Shading Language for DirectX. You write shading in this special language, with extension .hlsl, Visual Studio will compile it to binary.

In DiretX programming, you hear one term a lot, but it doesn’t make sense to most people, that’s Swap Chain. Forget about “swap” or “chain”, think of it as a display buffer, you write on the buffer instead of the monitor itself, the video card will take care of it. The reason it is called a chain because there are more than one buffers, one after another to improve performance. Why swap, well, you don’t need to know. Swap chain has nothing to do with DirectX, it is part of display technology existed long time ago.

Why DirectX programming is hard?

There are two reasons, and two only: 1. the designer of DirectX decided to use stupid names for their APIs, like D3D11CreateDevice(). Fyi, take this one for example, D3D11 means Direct3D version 11. They could just call it CreateDeive(), but they decided to make our lives harder. 2. We don’t do 3D that much. But I promise you, it is just a matter of familiarity. When you see the term “Swap Chain” or the ugly function names the 20th time, they start making sense to you.

That’s it. Next up is an example of SurfaceImageSource, then there is another sample code of VirtualSurfaceImageSource.



HoloLens Programming in C# and DirectX – The Big Picture



We need to be clear about this first: what is developing a HoloLens app? HoloLens is a computer running on Windows 10, by definition, every UWP application should be able to run on HoloLens. So if you write an app for Windows 10 UWP, and publish it to Windows Store. It should run on HoloLens, the way it runs on Windows desktop computers. However, that’s not what I mean by developing for HoloLens. Developing for HoloLens means your app takes advantage of HoloLens 3D mixed reality display, and optionally utilize spatial mapping, hand gestures and voice input. In this post and a few others after this, I only explore 3D display, in the context of HoloLens reality mode, not within a floating/pinned window as for a normal UWP app.

In multiple occasions, Microsoft had hinted Unity with C# script would the way build HoloLens apps. I don’t disagree. Unity is a high level game engine, especially for 3D/2D screen rendering. It is in the same position as XNA was before. Because XNA is no long supported in Windows 10. Unity is probably the best replacement. Unity is recommended for game development in general, not just for HoloLens. Even though you can do DirectX directly, but Unity would make many complicated task much easier otherwise. Also, the Unity Store has tons of stuff for asset creation, some of them are free.

Unity runtime is written in C++, so your C# code for Unity is called C# script, meaning they are not compiled to .Net code. On the low level, Unity is based on DirectX. It is a high level wrapper of DirectX, but a lot more than just a wrapper. The compilation of a Unity project results in a Visual Studio project. There you can deploy, run and debug on HoloLens. To get start with Unity game development, I recommend Adam Tuliper’s post on MSDN: Unity : Developing Your First Game with Unity and C#.

It is clear that if you want to develop a HoloLens 3D Holographic game, or simulation app, like fly simulation, or educational holographic 3D illustration, you can safely choose Unity with C# scripting. Then use Visual Studio to deploy and test on HoloLens.

That’s all good… but, there is a problem.

Unity is a game engine, it is NOT an app engine. The same way XNA is a game engine, not an app engine. I have been asking this question: can you write an app on Unity? Now it is clear, the answer is NO. Of course you can call a fly simulator an app instead of a game, but a game and an app are intrinsically different. Allow me to explain.

A game requires fast real time response and fast real time visual refresh. It sacrifice everything to satisfy the above too requirements. That’s why a game is always running on it own separately loop, called the game loop. An app, on the other hand, is supposed to be on idle until there is input from a user. An app tries to use as less resource as possible. An app is running under system message loop, it is message based. The system take care of visual update.

If you are developing an app instead of a game, you don’t want your application in a busy loop. You don’t want your app to use as much resource as possible to gain frame rate. You want your app to be friendly to other apps.

So, if you develop an app, Unity is out of picture, but you still want to show 3D holograms. Well, that’s the point of HoloLens apps, right? Now what would you do? The answer is DirectX. As far as my research goes, there is no other way currently.

Write an app using DirectX? That must be hard, you say. In fact, it is not as hard as you think. If your application is mainly application logics, with light 3D visuals, like AutoCAD, it is not that hard. It all depends on how complex your 3D models are. I had no previous DirectX experience, by reading and researching for a couple of weeks, I can write simple 3D renderings now. I will present you those DirectX terms and basics to get you started.

Now it comes the real question: Do I have write my app in C++ to use DirectX? Microsoft says yes. There is also a C# wrapper for DirectX called SharpDX, but I found it doesn’t make things much easier. Also, you put your future to an uncertainty by using a open source package.

During the past week or two, I have worked out a way to separate DirectX and your app code: you put your DirectX code in a Windows Runtime Component project, in C++. Your main UWP app code in a another C# project. That way, you can have the freedom to write your big chunk of code in C#, but only a small portion of rendering code in C++. So far, I found it’s best solution for a HoloLens app structure. In the next post I will show you how that works. Also give you working code for download.

Before ending this post, I want to explain why I am doing that. For two reasons: I like to write C# code more than C++. Indeed, I have far more experience in C++ than in C#. I also have good understanding of COM programming, as the server and consumer, but I don’t like writing a UWP app in C++. It just doesn’t seem natural. I believe many would agree. The second reason is most of my examples are in C#. If you have written Windows or Windows Phone apps before, there is a good chance you were using C#. There is zero chance you did it with C++.



HoloLens Programming in C# and DirectX – Intermission



While writing this programming HoloLens series, an extremely relevant, extremely informative, and extremely on topic video popup. I embedded video here, I think it is very very helpful for developer.

Main points from the video:

1. Battery life: 2hrs heavy renders, 5.5h light use.
2. FOV: 15″ monitor half arm length from eyes. Why? Cost and battery life.
3. A number of sensors (I think GPS is very likely).
4. Transparency is adjustable.
5. For complex visual, need to utilize a server to do the rendering, then push the rendering result to HoloLens.
6. Server can be used for multiple wearers to share the same scene.
7. Connection: WIFI, Bluetooth.
8. Unity is the main program engine.
9. It’s a like a laptop in term of CPU power. (Think of Surface 3.)

I will continue this series later.



HoloLens Programming in C# and DirectX, without Unity



As a developer myself, I am exploring how to get started to develop HoloLens applications for the up coming device. The information has been limited from a developer’s perspective. Currently, all sources pointed to Unity. However, that’s doesn’t answer all the questions. Actually there are far more questions unanswered comparing to that it answers.

I have been researching for the past a couple months. Along the way writing this blog, I have gained a comfortable amount understanding about HoloLens from both a user’s perspective and a developer’s perspective. Thought I would share my research results now. This journey consists of a few posts: I will first give a big picture of HoloLens programming: options and realities, then there will be two or more tutorial like postd about how to develop 3D application with working examples and code to download. Keep in mind, I don’t have a device with me. The code has some assumptions. But based on my understanding, if you trust me, my assumptions are usually close to the reality.

I will answer the questions like: Why use Unity; Why Unity is not the answer for everything; What to do if Unity can’t be used. I will show you the difference between an app and a game. I will show you how to write a DirectX application in C# without using a wrapper like SharpDX.

This is just a setup post, the rest is coming up in the next a few days.



A Year of HoloLens


Today is December 21, 2015, one month short of the anniversary of HoloLens’ first revealing. I don’t want to wait for another month to write an anniversary article. As we are approaching the end of 2015 and the start of the new year. I would like to look back at the short and long history of HoloLens. As I set my mind to this task, I have realized, this very site (windowscomment.com) is the only dedicated blog site for HoloLens. I have wrote far more articles about HoloLens than any other website on the Internet. I am proud.

A Bit of History

To start, lets watch the first official Hololens video from Microsoft, posted January 21, 2015.

The HoloLens journey started long before January 2015.

In January 21, the WIRED magazine published an iconic online article titled Project HoloLens: Our Exclusive Hands-On With Microsoft’s Holographic Goggles. Most people don’t realize that even the article was posted on Jan 2015, but the article was talking about the their experience with HoloLens back in October 2014. Strange thing is, January 21st was the day HoloLens was revealed to the published, everyone in the media were allowed to write/publish about HoloLens, which essentially made WIRED “Exclusive Hand-On” meaningless. And further, most people don’t realize the HoloLens they saw in Oct. is actually identical to what we see in Dec. 2015. What do those mean? Let me explain.

Clearly, the initial plan was to reveal the HoloLens of today, not the very raw, big Field of View prototype of Jan 21. The article was supposed to be published in Oct 2014. The change of mind is obviously related to FOV issue that everyone have been talking about now. In any case the hardware haven’t updated since Oct. 2014. By the way, WIRED magazine pushed another full length article about HoloLens in its Feb issue (printed version), same article later posted online.

Of course, there had to be a lot more years leading to Oct. 2014. Many people believe the project started 7 years ago. I have seen another Microsoft unofficial blog says 10 years ago.

The earliest leak of the project was March 2011, in Craig Mundie’s speech in Australia. You can find this article online, but I will just post some quote here:

instead of seeing a screen it can beam individual rays of light into your eyes right on your retina … [so] you can look at your phone and see HDTV

Craig Mundie didn’t mention “Project HoloLens”, but it’s easy to connect the two. HoloLens has two critical parts: the spatial mapping and the light engine. I would safely guess that there were two threads that lead to Project HoloLens: the light part is what Mundie talked about, and spatial mapping part is what lead to Kinect. Now they are on Project HoloLens.

Back to January 21, Microsoft was holding a Windows 10 event that day. The big chunk of the event was about Windows Azure cloud platform update. ScottGu was on stage unbearably long. Then it was Windows 10 consumer features: Continuum, Windows Hello. Then Windows 10 developer features: Windows Universal Platform. At the end, Alex kipman went on. No one had heard him outside of Microsoft. He showed the above video, and announced something called HoloLens.

The video was watched 10 millions times during the first two days. The same day after Windows 10 event, the media was demoed the raw HoloLens prototype, which was tethered, with a big enough FOV. The demo includes a collaboration with NASA called Project OnSight. The tech world was shocked to say the least.

Then it come the BUILD conference on April 29. For the first time, the media were shown the close to final product, the same thing shown today. The press was shocked again, but in a negative way. The FOV had because so small that is not even comparable to what was shown in January. Everyone was disappointed. It was unbelievable how this thing was handled all along.

As I said at the beginning, Microsoft knew about this long before January. Why do they show the tethered prototype that was so much different? That’s a question I still don’t have an answer.

After BUILD, HoloLens have been shown during a few other occasions: E3 2015 on June 16 in Vegas, multi-city road show in July. The same hardware, but updated applications.

Recently, Microsoft have announced HoloLens Developer Edition (which is same one available since Oct. 2014) will ship to developers early 2016, for $3K.

Interesting thing during this is the dates: promised and/or missed dates. The above WIRED article said the product will be in developers’ hand during spring of 2015, that didn’t happen. Microsoft said NASA will be using HoloLens in July, 2015 with its OnSight project, that didn’t happen. Instead of OnSite, which requires a large FOV, they started another project called SideKick, which doesn’t require a big FOV. Microsoft had said during the unveil of SideKick, the OnSight project is still on. We haven’t heard anything about it since then.

Apparently, the original plan was to release the product, which is the exactly like what it is today, in July, as I wrote in many articles. The change of plan is due to overwhelmingly negative response.

What Went Wrong?

Microsoft knew the issue long long before Jan 21st. A very polished product was done three month before that. The product looked every bit like a final product. It indeed looks like a product from a product line. I am tired of explaining, but let go into a little detail to make it more obvious so the media nonsense can stop.

Look the HoloLens from my title picture above, and tell what you see. That’s not something you see anywhere on earth. I bet the majority of parts are customized, you can’t find them on the market. And you can’t make a custom order of 500 units for all of those 100s piece of customized parts hardware. It doesn’t make sense for prototype to be made like that. If you look carefully, Windows logo is on too.

The January demoed and the one worn by the cameras shows the technology with a large FOV exists. It is just has to be tethered. You have seen the long cable dragged with the camera. Microsoft have insisted of mobile, portable, untethered, which is great. But what is wrong if you give people a tethered one with a large FOV, which seems to be a make or break feature? I don’t see anything wrong if I am siting at a desktop, with a heavy, tethered HoloLens attached to my PC, exploring Mars surface beside me.

The short answer to the question is: It is a strategy problem, not a technical problem. They could release a tethered version and mobile version at the same time. All the VRs are tethered. Microsoft’s insistence of untethered, mobile is the problem.

The Specs

Regarding to HoloLens specs, this is what we know so far:

>> Weighs about 400 grams, or about the same as a high-end bike helmet.
>> Contains two Kinect cameras(120×120 degree FOV depth sensor), a Cherry Trail CPU, a GPU, a HPU, a light engine, lens and vent.
>> A stand alone PC that runs on Windows 10.
>> Has only three buttons: one for sound volume, one for adjust contract, one for power.

How Big is the FOV anyway?

The most accurate measurement is from doc-ok.org. It is said to be 30 degree horizontal, 18 degree vertical. Why 30×18? Because 30 degree is the definition of “Near Peripheral Vision”, which is what makes sense in your vision, and 18 degree is the “Pure Central Vision”, which is how much you can focus on. However,things beyond 30 degree are still important because that gives you cues on what exist.

I have measured 47″ TV of mine, a 20″ computer monitor o mine, and a movie theater, sitting at normal distance respectively. Here are their FOVs in comparison to Hololens:

47″ TV: 19 x 11 degree
HoloLens: 30 X 18 degree
20″ Monitor: 40 X 23 degree
Movie Threater: 65 X 40 degree

So, the experience is noticeably smaller than a 20″ computer monitor sitting on the desk, but considerable better than 50″ HDTV.

Here is the bonus question: Can HoloLens replace you TV? Well, regarding size, it beats your 50″ HDTV comfortably.

HoloLens as a Computer

I have written tons of articles about HoloLens as a computer. Most of them are speculations at the time, today I can confirm, my accuracy was close to 100%.

HoloLens is a PC running Windows 10. It is every bit a computer, without need for a monitor. It runs all Windows 10 applications, including Edge, NetFlex. You can use it with any wireless or Bluetooth Keyboard, mouse. It doesn’t support touch, but uses air type instead. You can use voice command. You can stream games from an Xbox/PC to it.

HoloLens as a Display

HoloLens is a Computer with out a display, because it is a display itself, It is the most revolutionary display. The thing is, it doesn’t just act as a display for itself. It can also work as a display for other devices: Xbox, a PC, or whatever that needs a display.

Why the Hell Do I Need a Tablet?

The size of the display has been the main factor that categorize a mobile device. With HoloLens, the display is gone. Size no longer matters, because it is virtual. Of course, FOV is still a constraint, but if FOV is big enough, you can have a display range from 1″ to 100″ as you wish, you do that without make the device bigger or heavier. And you get 3D. Why the hell do I need a tablet, or a phone? You tell me.

The predictions

During the year, I have make many predictions about Hololens. Most of them are right on. One exception is the release date. I have predicted July 2015. That’s far off. Without going too wild, here is my predictions for 2016.

1. A commercial release will be sometime toward end of the year. Lets be real, the hardware is ready long long times ago, when developers get apps ready, they don’t want to hold it for years. One main factor that decides the release date is how many business applications will be available. I mean the really ones, not the toy apps that can be done on two weekends. That will likely happen end of the year 2016 or early 2017, because serious business applications take long to build.

2. A tethered HoloLens will be Released along with the current one, mainly for gaming.

3. Current HoloLens hardware will be update to a larger FOV by end of 2016.

That’s all I can say for now.



Recommended Readings: Developing Your First Game with Unity and C#


Develop for HoloLens is develop UWP apps for Windows 10, right? Because all UWP apps run on HoloLens. Theoretically true, in reality false.

If develop for HoloLens is all about develop for UWP, then the notion of developing for HoloLens wouldn’t exist. In reality, develop for HoloLens is about taking advantage of HoloLens in mixed reality. One important element is 3D. Your choices are 1. Code directly on DirectX, which is generally a hard thing to do. 2. Use a third party 3D engine. If you choose number 2, then Unity is your obvious choice.

Unity is a 3D/2D game engine, but its use is not limited to game. One thing keep in mind though, game and app are totally different thing. A game runs on frames, visuals are upgrade once per frame, and it is running on a game loop. If you are developing a normal application, you probably don’t want that to happen. One thing I don’t have answer though: can Unity help with a non-game application? In the old day of XNA, there is a mixed mode: Silverlight + XNA, they interact with each other. I will have to leave the readers to figure this out.

If you are writing a general app, and use 3D rendering lights, code in DirectX would be a better choice, but again, you would have to go C++, instead of C#, because currently there is good interface between .NET and DirectX 12. If you are writing games, of mostly game like application, Unity would be your choice. Here are a few post from Adam Tuliper, senior technical evangelist with Microsoft, that will get you started with Unity in C#.

Developing Your First Game with Unity and C#
Developing Your First Game with Unity and C#, Part 2
Developing Your First Game with Unity and C#, Part 3
Developing Your First Game with Unity and C#, Part 4
Cross-Platform Game Development with Visual Studio Tools for Unity



What Do Microsoft Need to Succeed in Consumer Market?


I have been writing about Windows Phone and other Windows devices for about 5 years, spent most of off-business time writing about HoloLens since anyone outside of Microsoft heard about it. I can proudly say, no one on this planet had written more about HoloLens than I.

During this time, I have notice one thing that most media don’t want to talk about: anti-Microsoft asshole effect in media and it audiences. Take one of my friends as example, one day we were discussing something technical. He went over to my computer, tried hard to find Chrome on my machine, but I didn’t install that. He has to settle for IE11 that I have, and type in google.com to search something. I want to say: fuck you! but he is my friend. You see, I have IE already open, Bing already open there for him to type in anything he wanted to search for. But he has to find that ancient, 1990 like user interface and search for something he think he couldn’t find from Bing. To be clear, this guy is not stupid, he wouldn’t be my friend if he is. It was the media from the Internet or whatever, educated him to believe that stupid, ugly look search engine is better.

He has a phone that runs Android. Why you buy a plastic phone with an ugly user interface? He said that’s what everyone do. He said same thing to a icrap for his son to play games.

Microsoft doesn’t need a better product. Surface Pro 3/4 are already the best computer and tablet on earth by a margin. Surface 3 is the best tablet that not only play game but a real computer. Surface Book is the best laptop that icrap can’t hold a candle for. Lumia phones are best smartphones ever made by human beings.

They need to turn those assholes into human beings. It’s start happening in the media. David Pogue had been one of those anti-Microsoft assholes, beside Walt Mossberg, he had stop writing Microsoft-bashing article a couple years ago. So, did many others.

My friend may not stop acting as an unintentional asshole for a while, but as long as the media stop doing so, he will eventually.

I want to tell Microsoft here, it is not technology, it is not marketing. Spend some time on the media, that’s all it takes.



Recommended Readings: Developing Your First Game with Unity and C#


Develop for HoloLens is develop UWP apps for Windows 10, right? Because all UWP apps run on HoloLens. Theoretically true, in reality false.

If develop for HoloLens is all about develop for UWP, then the notion of developing for HoloLens wouldn’t exist. In reality, develop for HoloLens is about taking advantage of HoloLens in mixed reality. One important element is 3D. Your choices are 1. Code directly on DirectX, which is generally a hard thing to do. 2. Use a third party 3D engine. If you choose number 2, then Unity is your obvious choice.

Unity is a 3D/2D game engine, but its use is not limited to game. One thing keep in mind though, game and app are totally different thing. A game runs on frames, visuals are upgrade once per frame, and it is running on a game loop. If you are developing a normal application, you probably don’t want that to happen. One thing I don’t have answer though: can Unity help with a non-game application? In the old day of XNA, there is a mixed mode: Silverlight + XNA, they interact with each other. I will have to leave the readers to figure this out.

If you are writing a general app, and use 3D rendering lights, code in DirectX would be a better choice, but again, you would have to go C++, instead of C#, because currently there is good interface between .NET and DirectX 12. If you are writing games, of mostly game like application, Unity would be your choice. Here are a few post from Adam Tuliper, senior technical evangelist with Microsoft, that will get you started with Unity in C#.

Developing Your First Game with Unity and C#
Developing Your First Game with Unity and C#, Part 2
Developing Your First Game with Unity and C#, Part 3
Developing Your First Game with Unity and C#, Part 4
Cross-Platform Game Development with Visual Studio Tools for Unity



Recommended Readings: Hear What Astronauts Say about HoloLens


This is first time we hear what the astronauts say of the HoloLens. Check out this article from Popular Science.



New Clips Show HoloLens Is Real Deal


Microsoft is letting its own HoloLens team members post video clips from their work with HoloLens. We have seen three of them so far. They are: watching Netflix on HoloLens, Watching video on HoloLens and Stream game from Xbox to HoloLens. That shows HoloLens is the real deal, even with small FOV.

Now watch the videos first:

Watching Netflix on HoloLens:

Watching video on HoloLens:

Stream game from Xbox to HoloLens:


First, it appears to me, those videos are shot directly from HoloLens itself. I have proof for that, but I will write about it later. For now trust what I said.

Second, how small is the FOV? Precisely a 50″ TV from 10 feet, that’s the way you watch TV. If you want to watch something closely, like something in front your eyes, sorry, only small objects are fully visible. But from 10 feet, there is plenty of room for many things. I believe those above videos are shot WITHIN HoloLens Field of view.

Remember what I said about Mixed Reality Capture function that is part of Windows 10? That’s probably how the videos are made.

Streaming game from Xbox to HoloLens is a big deal. I had already wondered if there is lag. From the video we don’t enough proof about that, but that’s already too good.

Notice, some of scenes are in very good lighting, like the one close to the window. That answers a lot questions.

What’s next? I want to see reality mode games on HoloLens.

But for now, all the UWP apps runs on HoloLens. Isn’t it good enough?



Microsoft Future Vision – HoloLens, Cortana Based Sci-Fi Collections




Microsoft Research had invited Science-Fiction authors to their labs, showed off some futuristic projects they have been working on, and left rest to the writers. The results are a collections of Sci-Fi creatives. They are based the Microsoft technologies, like HoloLens, Cortana, etc. The collection covers computer vision, artificial intelligence, real-time speech translation, machine learning and quantum computing.

It took Microsoft Research 7 years to get HoloLens technology to today’s state. I am sure there are other projects that are in different stages. It would be great to see what is possible through those sci-fi authors’ imagination.

Those writings will be available tomorrow: Nov. 17th, 2015 in different formats: web, or eReaders.

If you are a fun of HoloLens, you shouldn’t miss this one. You can get them for free sometime tomorrow from Microsoft Future Vision.

Update: They are free, but I can’t find a web version.

HoloLens Academic Grants Winners Accounced!



Microsoft had announced HoloLens projects grants for academics. Now, they have revealed the winners for the grants. Each gets $100k on each of their projects. Will they get continued fund after the grant runs out, I don’t know.

Here is the announcement from Alex Kipman.

Sadly, the list is very short, only 5 institutes:

  • Golan Levin, The Frank-Ratchye STUDIO, Carnegie Mellon University: Open-Source Investigations in Mixed Reality
  • Emily Cooper, Wojciech Jarosz and Xing-Dong Yang, Dartmouth College: Augmenting Reality for the Visually Impaired with Microsoft HoloLens
  • Joseph Gabbard and Doug Bowman, Virginia Tech: Collaborative Analysis of Large-scale Mixed Reality Data
  • Andy Mingo, Tawny Schlieski, Nikki Dunsire, Shelley Midthun, J Bills, Clackamas Community College & Intel, HoloLens Curriculum for Trade-based Education
  • Allen Yang, Professor Claire Tomlin, and Shankar Sastry, University of California, Berkeley: Immersive Semi-Autonomous Aerial Command System (ISAACS)

$500K is like nothing in Microsoft’s pockets, they should have done more. Microsoft have said they have received 500 proposals since July.


My Pursuit of Tethered HoloLens Continues



A few days ago, I wrote a post titled: Is There a Tethered HoloLens? I asked Alex Kipman to comment. He did. See it here.



He wouldn’t answer my question: Is there a tethered HoloLens? But he did share something that we didn’t know. The picture at the top of this post is a frame capture I did from a NASA video showing astronauts testing to send HoloLens to the space. Obviously there is a wire comes from the HoloLens, goes down to a strap worn by the astronaut. I wondered if that had anything to do with FOV. Alex said it is actually a high capacity hard drive to store data captured from HoloLens, whatever they do with that.

Important thing is, he didn’t say no to tethered HoloLens. I will take it as a possibility. As much as I know about this technology, there is no reason to say no. It makes business sense and technically feasible.



Asus to Make HoloLens? You Must Be Kidding!



The original title was: “HoloLens Is just One of Windows Holographic Devices”, I changed it for dramatic.

This is just a pointer to an article from CNET. Interesting development around HoloLens this morning: from CNET.

It’s hardly anything new actually. To Microsoft, Windows Holographic is the real deal. HoloLens is just another Surface like device. Difference is: this one is a new category, not a new device.

Interesting thing is how it can be done by Asus. I am not a fun of those Asian companies, including Lenovo. They can do anything existing on earth, with a bad quality. Even with that in mind, there is no chance, a company called Asus can do HoloLens. Maybe Microsoft will license their technology to Asus?

If does happen, Asus won’t be the only one. Keep your eyes open.



Beyond Technology: After Many Years of Tweeting, I still Don’t Get It


From time to time, I have something to say, but the contents don’t fit into the theme of the this blog. I mean something related to technology, but not directly technology itself. So, I started this “Beyond Technology” series. Honesty I have more to say outside of technology than inside of it, but I will restrict myself to topics that are relevant. Here it goes.

I have been tweeting for about 4~5 years, not too far behind I assume. Main reason I tweet is I am writing on the blog site, I want to notified interested readers that I have something new to say. Beyond that, I really don’t have a reason to tweet. Honestly speaking, it is an obligation, not a pleasure. I don’t even like the word “tweet, twitter” or whatever. That is not the same cases in bloggers community. Just this morning, I saw the following items from my very respected bloggers:

If anyone cares about Mark Guim’s good night sleep, that’s got be his wife, no one else. Well, that’s a good case, but how hard it rains in Southern California is supposed to be a weatherman from their location station’s duty. The thing is, my friend, everybody is doing this, and all the time. They seem to take pleasure doing that.

I don’t know, but is that true that the more you tweet the more likes you can get, therefore the more popular you can be? Maybe I am right, I really can’t find a second reason. But for all intent, I am not going to do that.

Is There a Tethered HoloLens?



This post was in draft for some time. The question has been lingering in my mind for a long time. I have a lot of reason to raise this question.

Two day ago, I wrote something like “HoloLens Is just One Step away from Reality.” The problem boiled down to this: how to miniaturize an already existing technology into a smaller pack, and make it wearable on the head. This is easier to say, but in reality it can take years for that to come to fruition.

I want to further emphasis the fact this technology already exists. Two things we know as a fact. In January 21, 2015, a selected group people from the press were shown the first prototype HoloLens, I am talking about a large FOV. In almost all HoloLens on stage demos, a camera wearing a special HoloLens was shown taking live videos, for that, I am talking about an amazing FOV.

While waiting for portable/wearable HoloLens with an amazing FOV, why not go another path: Sacrifice portability for a large FOV. I am getting the hint from the above picture. Obviously there is a cable connecting to some device on a strap. Could this be something related to FOV. Maybe, maybe not, I truly wish it is.

If you can give me a large FOV, I am more than happy to wear the strap. I believe many would agree.





HoloLens Is Pushed Farther Back?


New reports have pointed out new progress in HoloLens. It is rather disappointing.

Let me a few things here:

1. HoloLens will be released sometime in 2016. Last time they said “certainly within a year”, that was a month ago. The two time are overlapped, but you can see the change of tune. “Within a year” and “Within next year” are certainly two different things.

2. When it does, it will be for developers and businesses, which indicates even at that time, the FOV is still not fixed, or improved that much.

3. HoloLens is on a 5 year journey. What does that mean? The implication is obvious, and I don’t want to talk about it.

Other than disappointment, I don’t have anything to say right now.



How It’s Made: Holographic Videos Viewable by HoloLens



I posted a while ago that Microsoft had created Holo-Video studio to capture holographic video to be played on Hololens. Now Microsoft posted a video (embedded below) to show how that works.



Here is what happens.

In order to mask the surroundings, performance are done on a green stage with green walls. It takes 106 synced RGB and IR cameras to capture the live information.

It first generates 2.7 million per frame point clouds with both RGB and IR info. Then It generates 1 million triangles (finite elements) per frame topology data. After they apply certain logic to determine which area are more important, so increase density of the mesh, which areas are not important to decrease mesh density. The result is 20K per frame triangles. Finally, they wrap it with texture. And then put all information together, compress it, encode it to form a single file, playing at 12Mbits/sec.

The last number is important one. 12 Mega bits/sec is not small. It means a 5 minutes video takes up 360MB storage. It’s big, but not huge. Streaming at 12Mbit/sec is piece of cake on WiFi. Streaming over Internet can be an issue though.