Why Is Most HoloLens Development Happening in Unity?
Autodesk offers some of the most popular software for computer-aided design (CAD) projects, which involve all sorts of 3D rendering. Their tools are clearly suited for use with the Microsoft HoloLens, but so far very little supports HoloLens development outside of Unity. Why is that?
Autodesk developer Ken Walmsley offers an explanation:
So how do you take a CAD model and get it to display inside HoloLens? CAD geometry is typically modelled via boundary representation, whereas game engines such as Unity like to work with meshes. You can export FBX (a mesh format) from most Autodesk software, but this doesn't automagically result in a good experience once imported into Unity: they will often be unnecessarily detailed or just look ugly.
The detail problem comes from things like screw threads: if these have been modelled accurately, they'll result in thousands upon thousands of unwanted polygons which will impact both the size of the application and its runtime performance. The offending objects will either need to be removed or simplified – perhaps using a texture to represent the thread, rather than geometry.
The ugliness comes from the fact that Unity doesn't have enough information to display the model well: things typically get better once you provide a UV mapped texture, but creating one takes time and effort.
Despite that, Walmsley explains in his own post that he doesn't know Autodesk's plans to support the HoloLens, but he's got a couple of the headsets now and intends to push development further through his own experiments. He's not alone. We've already seen one example of a developer bridging the gap between Autodesk and Unity. Microsoft already has partnerships with Autodesk for mixed reality tools, anyhow, so it's reasonable to expect support in the future.
But what about everything else? Unity happens to be the platform of choice for HoloLens development because Microsoft partnered with them, and because they've built the engine for you, so it's much easier than using DirectX (of which many launch apps were made with). Experienced 3D engine developers can build out or adapt their own middleware engine, but that's a lot of work, and Unity takes away all of that extra labor.
With a headset that hasn't even seen a consumer release yet, it's not all that strange that there are little development platforms for the HoloLens specifically. The UNREAL Engine 4 has an update supporting mixed reality capture for VR, so it may be another option down the line.
Technically Unity isn't necessary for HoloLens development—it just is the preferred method—so, for now, we'll just have to wait and see if someone (perhaps the folks at Epic working on the Unreal Engine?) can dethrone it from the top of the ranks.