Mixed Reality Design Labs - Periodic Table of the Elements
This repo is where Microsoft’s Windows Mixed Reality Design team publishes sample apps and experiments. Periodic Table of the Elements is an open-source sample app which demonstrates how to use Mixed Reality Toolkit(MRTK)'s input system and building blocks to create an app experience for HoloLens and Immersive headsets.
Design & Development Stories
- Bringing the Periodic Table of the Elements app to HoloLens 2 with MRTK v2
- Designing Periodic Table of the Elements for HoloLens
Supported Unity and MRTK version
- Unity 2018.3.13f1
- MRTK: v2.0.0-RC1-Refresh
Open MRDL_PeriodicTable\Scenes\Main.unity to view the main scene. You will see a deactivated prefab called ElementContainer - activate it and navigate to ‘Element’ in the hierarchy. You will see three components: Element, ElementButton, and PresentToPlayer.
ElementButton extends the abstract Button class - its job is to listen for state change events. It passes these events along to Element, which then handles displaying and animating information about the element. It relies in part on PresentToPlayer, which orients and moves the box toward the player.
Deeper in the prefab you’ll find an MoleculeObject with the Atom component attached. This script uses Unity’s instanced rendering API to draw hundreds of mesh particles with very few draw calls. This can be a useful alternative to Shuriken particle systems, which aren’t always performant enough for Hololens devices without a great deal of careful tweaking.
Box elements use the AcrylicReflective and AcrylicReflectiveTransparent shaders These can be used in other projects for anything that needs a shiny, stylized look without tanking the frame rate.
The ObjectCollectionMode script inherits from one of HUX’s most powerful tools, the InteractionReceiver class. With it you can rapidly set up an object to listen for input from HUX buttons. Just use the inspector to drag HUX buttons to the Interactables array, override a base function like OnTapped, and you’re ready to go.
If you’re rapidly prototyping, using the button’s name to differentiate input is a quick way to get things done. You could also create a custom component that information relevant to a button’s function.
More from Mixed Reality Design Labs
Sample app - Lunar Modulehttps://github.com/Microsoft/MRDesignLabs_Unity_LunarModule
Lunar Module is a open-source sample app from Microsoft’s Mixed Reality Design Labs, it is a spiritual sequel to the 1979 Atari classic, Lunar Lander. This sample app will demonstrate how to extend Hololens’ base gestures with two hand tracking and xbox controller input, reactive objects to surface mapping and plane finding, and simple menu systems. You can use this project’s components to create your own mixed reality app experience.