The Scaling Ratios Every HoloLens Dev Should Know for Clean Text in Mixed Reality
Designing for mixed reality, especially for the HoloLens, can present unique challenges. Dong Yoon Park, a Principal UX Designer at Microsoft with a passion for typography, recently gave a talk to the Windows Holographic Users Group Redmond (WinHUGR) about the pitfalls he ran into trying to convert what started out as a 2D iOS app 5 years ago to the newer 3D Holographic frontier with Unity.
At first, Yoon disregarded the idea of converting his app to the 3D space, but somehow had a change of heart. In a recent post on Medium, he said, "... as soon as I started putting type into 3D space with HoloLens, I realized that typography in a mixed reality space could be really gorgeous! It has a totally different physicality compared to traditional display or paper media."
Anyone that has done development in Unity knows the default text settings for UI text or 3D text are just bad in general. They are particularly bad for HoloLens users. To get UI text to a useable point, I always have to push the Dynamic Pixels Per Unit really high, and then scale the whole object back down to a usable point. 3D text has a different but similar process to fix it as well.
To get an exact result, Mr. Park used printed type to compare to his work on the HoloLens, at a distance of 2 meters. Using the same font on the printed paper and the HoloLens and standing 2 meters away, Park was eventually able to find the ideal Unity settings.
The scaling factors from this experiment are approximately 0.0005 for UI Text and 0.005 for 3D Text Mesh. Even though it might not be perfectly accurate, with these scaling factors, you can get the relevant type size which will be similar to physical type size at 2-meter distance. If you use this scaling factor, you can say 48pt type size at 2-meter distance are same in Unity and Adobe Illustrator.
User Experience (UX) standardization is often a big topic on the HoloDeveloper Slack server. Obviously, only so much of UX can be standardized due to UX being very tied to what you are creating. Text is a fundamental part of UX and taking the guess work out of it can help on many levels.
For developers out there struggling with this, shortly there will be a great way to use this new standard rather easily. Park has taken this one step further, to help the community, and has submitted a pull request in the HoloToolkit Github repository. This code addition will add prefabs to simplify the whole process. Once it has been approved and is merged into the master code, creating text that works will be as easy as dragging in a prefab and typing in the text you want it to say.
Once Yoon's new piece of code has been added to the HoloToolkit, expect a full rundown of how it works and what the best practices are to use with it, so stay tuned here on NextReality.