{"id":1485,"date":"2019-09-09T05:19:13","date_gmt":"2019-09-09T05:19:13","guid":{"rendered":"http:\/\/dongyoonpark.com\/?p=1485"},"modified":"2022-12-27T19:17:18","modified_gmt":"2022-12-27T19:17:18","slug":"bringing-the-periodic-table-of-the-elements-app-to-hololens-2-with-mrtk-v2","status":"publish","type":"post","link":"https:\/\/mixedrealitynow.com\/ko\/bringing-the-periodic-table-of-the-elements-app-to-hololens-2-with-mrtk-v2","title":{"rendered":"Bringing the Periodic Table of the Elements app to HoloLens 2 with MRTK v2"},"content":{"rendered":"\n<div style=\"position:relative; padding-bottom:calc(56.25% + 44px)\"><iframe loading=\"lazy\" src=\"https:\/\/gfycat.com\/ifr\/HonoredVibrantGordonsetter\" frameborder=\"0\" scrolling=\"no\" width=\"100%\" height=\"100%\" style=\"position:absolute;top:0;left:0;\" allowfullscreen=\"\"><\/iframe><\/div><p> <a href=\"https:\/\/gfycat.com\/honoredvibrantgordonsetter\"><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sharing the story of updating HoloLens app made with HoloToolkit(HTK) to use new Mixed Reality Toolkit v2(MRTK) which supports HoloLens 2\u2019s articulated hand tracking and eye tracking input<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>This article is based on MRTK 2.0.0 and explains how to bring your MRTK v1(HoloToolkit)-based projects to MRTK v2. To learn more about the latest MRTK releases, please visit MRTK Documentation.&nbsp;<\/strong><a href=\"http:\/\/aka.ms\/mrtkdocs\" rel=\"noreferrer noopener\" target=\"_blank\"><strong>http:\/\/aka.ms\/mrtkdocs<\/strong><\/a><\/p>\n<\/blockquote>\n\n\n\n<p id=\"a3ad\">We published&nbsp;<a href=\"https:\/\/github.com\/Microsoft\/MRDesignLabs_Unity_PeriodicTable\" rel=\"noreferrer noopener\" target=\"_blank\">Mixed Reality Design Lab\u2019s Periodic Table of the Elements app<\/a>&nbsp;for HoloLens and immersive headset back in 2015 to demonstrate how to create an end-to-end experience using HoloToolkit\u2019s building blocks. To fully leverage new articulated hand tracking and eye tracking input on HoloLens 2, we need to update HoloToolkit(HTK) to the newly released Mixed Reality Toolkit(MRTK) v2.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"b505\">What is MRTK v2?<\/h2>\n\n\n\n<p id=\"dfdd\">MRTK is a Microsoft-driven open source project.&nbsp;<mark>MRTK-Unity provides a set of foundational components and features to accelerate mixed reality app development in Unity<\/mark>. The latest Release of MRTK v2 supports HoloLens\/HoloLens 2, Windows Mixed Reality, and OpenVR platforms.<\/p>\n\n\n\n<p id=\"fcc6\">Since MRTK v2 is completely redesigned from the ground up, foundational components such as&nbsp;<strong>input system are not compatible with HoloToolkit<\/strong>. Because of this, you need to put some effort to upgrade HoloToolkit to MRTK. In this story, I\u2019ll show you how I updated HoloToolkit to MRTK and evolved the design to fully leverage hand tracking and eye tracking input.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"fcf1\">Required tools<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*fnRS0JPJfAYnB1Dh3kBQXw.png\" alt=\"\"\/><\/figure>\n\n\n\n<p id=\"27f0\">You can find the latest information about the&nbsp;<mark>tools needed for HoloLens 2 development<\/mark>&nbsp;on this page:<\/p>\n\n\n\n<p><a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/mixed-reality\/install-the-tools\">https:\/\/docs.microsoft.com\/en-us\/windows\/mixed-reality\/install-the-tools<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"6227\">Getting new MRTK release packages<\/h2>\n\n\n\n<p id=\"066a\">From MRTK GitHub repository,&nbsp;<a href=\"https:\/\/github.com\/Microsoft\/MixedRealityToolkit-Unity\/releases\" rel=\"noreferrer noopener\" target=\"_blank\">you can download MRTK release packages under \u2018<strong>Release<\/strong>\u2019 menu.<\/a>&nbsp;You can also clone the repository. The branch name for the MRTK v2 is&nbsp;<strong>mrtk_release<\/strong>. If you want to get the latest features and components under active development, you can use the&nbsp;<strong>mrtk_development<\/strong>&nbsp;branch. However, please keep in mind that development branch could be unstable and something might be broken.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*06gJYUuwY8aAUpcg1qLVYw.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Release packages on MRTK GitHub<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*Ls0fdpjPFJ2JndUr-2Lrjw.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">MRTK release packages download links<\/figcaption><\/figure>\n\n\n\n<p id=\"27c4\">There are two types of release packages.&nbsp;<strong>Foundation&nbsp;<\/strong>and&nbsp;<strong>Examples<\/strong>.&nbsp;<strong>Foundation&nbsp;<\/strong>package has core features and input system of MRTK<strong>.&nbsp;<\/strong>Optional<strong>&nbsp;Examples&nbsp;<\/strong>package contains example scenes and scripts that demonstrate the use of core features in the Foundation package. In the example scenes, you will be able to play with various types of new&nbsp;<mark>interaction building blocks and UI components<\/mark>. Below is one of the example scenes you can find in the Examples package.<\/p>\n\n\n\n<p id=\"f478\"><a href=\"https:\/\/github.com\/microsoft\/MixedRealityToolkit-Unity\/blob\/mrtk_release\/Documentation\/README_HandInteractionExamples.md\" rel=\"noreferrer noopener\" target=\"_blank\"><strong>HandInteractionExamples<\/strong>.unity scene<\/a>&nbsp;demonstrates various types of spatial UI and interactions for the hand tracking input.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*DZ2xD-Ym_Irh8OqbGLGktw.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">MRTK\u2019s HandInteractionExamples scene<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"MRTK - Mixed Reality Toolkit&#039;s Hand Interaction Examples with HoloLens 2\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/wogJv5v9x-s?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"6e0c\">Replacing the HoloToolkit with MRTK<\/h2>\n\n\n\n<p id=\"1cf2\">The original Periodic Table app project had&nbsp;<strong>HoloTookit&nbsp;<\/strong>folder with&nbsp;<strong>MRDL_PeriodicTable&nbsp;<\/strong>folder. Since the app specific scripts and contents are in MRDL_PeriodicTable folder, we can simply delete HoloToolkit folder.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/600\/1*1Px13DMtqVyNB3DgTRnPVQ.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Original project structure with HoloToolkit<\/figcaption><\/figure>\n<\/div>\n\n\n<p id=\"fd32\">After deleting HoloToolkit folder, let\u2019s import new MRTK packages through&nbsp;<strong>Assets &gt; Import Package &gt; Custom Package<\/strong>\u2026 menu.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1926\/1*RLHFi_TE3UYyfDKiqYCDAQ.png\" alt=\"\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1156\/1*it7I53aSgKGf95Hc142e-Q.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Importing new MRTK v2 package<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p id=\"403d\">When you import new MRTK, a lot of things will look broken because the location of the shaders, materials, fonts have been changed. Also, you will see many error messages from the scripts.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*cHMKaDv8_yVZ0W-AFU2GPA.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Contents are displayed in pink color with missing shader\/material<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*xEGF2JydQrY1Ep5ju3uBEA.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">A lot of error messages<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"d06b\">Resolving Script Errors<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"22d0\">Namespace issues<\/h3>\n\n\n\n<p id=\"b350\">When you look at the script errors, you will find that most of them are about the namespace changes. Old&nbsp;<strong>HoloToolkit.Unity<\/strong>&nbsp;namespace lines could be easily cleaned up by using Visual Studio\u2019s \u2018<strong>Remove and Sort Usings<\/strong>\u2019 menu.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1138\/1*HjWC2vdwRuWFd8b99N_z6Q.png\" alt=\"\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1936\/1*b7tcjRkF3pbJhFYMm2Sfmw.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Remove and Sort Usings menu<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p id=\"d39c\">For missing classes and interfaces, you can use \u2018<strong>Show potential fixes<\/strong>\u2019 menu to add\/update the proper reference. Below example shows adding&nbsp;<strong>Microsoft.MixedReality.Toolkit.UI<\/strong>&nbsp;for the&nbsp;<strong>InteractionReceiver<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*JitjvDQG2Bmhorj--A7NAg.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">\u2018Show potential fixes\u2019 menu<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*6xlrxy7YtQ32R0lWvSaktA.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Adding proper namespace<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*7Tpume4hZT0Y9HwXyoz7sQ.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Now the reference to InteractionReceiver is fixed<\/figcaption><\/figure>\n\n\n\n<p id=\"37a4\">You can find detailed info on&nbsp;<strong>HoloToolkit to MixedRealityToolkit API\/Component mapping table<\/strong>&nbsp;on this page:&nbsp;<a href=\"https:\/\/microsoft.github.io\/MixedRealityToolkit-Unity\/Documentation\/HTKToMRTKPortingGuide.html\" rel=\"noreferrer noopener\" target=\"_blank\"><strong>Porting Guide Upgrading from the HoloToolkit (HTK)<\/strong><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"b337\">HTK-MRTK Mapping Table: Interface and event<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*055V6T07-ZEIpp7SRHGhww.png\" alt=\"\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"f462\">Renamed\/Replaced\/Deleted Class and Feature issues<\/h3>\n\n\n\n<p id=\"9f61\">Most of the core features and building blocks have been either ported or upgraded for MRTK v2.&nbsp;<a href=\"https:\/\/microsoft.github.io\/MixedRealityToolkit-Unity\/Documentation\/HTKToMRTKPortingGuide.html\" rel=\"noreferrer noopener\" target=\"_blank\">You can find the mapping table for the UX controls and Utilities in the Porting Guide page.<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"3e7f\">HTK-MRTK Mapping Table: UX controls<\/h3>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*hr789gLNPg1ry_OMmYvcPg.png\" alt=\"\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"c3ee\">HTK-MRTK Mapping Table: Utilities<\/h3>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*Rkxrjtg1ex8_ZByiPo3j9A.png\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"4f59\">Resolving Prefab\/Material\/Shader errors<\/h2>\n\n\n\n<p id=\"4a0d\">The first thing we can easily clean up is the material\/shader errors. Because of the location change, you need to re-assign font texture\/materials. Periodic Table app uses the font Selawik series which is one of the Microsoft\u2019s open-source fonts. The new location of the font files and textures in MRTK v2 is:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><a href=\"https:\/\/github.com\/Microsoft\/MixedRealityToolkit-Unity\/tree\/mrtk_release\/Assets\/MixedRealityToolkit\/StandardAssets\/Fonts\" rel=\"noreferrer noopener\" target=\"_blank\">MixedRealityToolkit\/StandardAssets\/Fonts<\/a><br><a href=\"https:\/\/github.com\/Microsoft\/MixedRealityToolkit-Unity\/tree\/mrtk_release\/Assets\/MixedRealityToolkit\/StandardAssets\/Materials\" rel=\"noreferrer noopener\" target=\"_blank\">MixedRealityToolkit\/StandardAssets\/Materials<\/a><\/p>\n<\/blockquote>\n\n\n\n<p id=\"c76c\">The materials in this folder for Selawik font support proper occlusion.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*pxRsPjT7guU6JeD9fEAEYQ.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Missing Font materials<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*-mt-JMMmdMgCHg8PRDweEw.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Re-assigned proper Font material for the Selawik font.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*FgiaCChTm3ZKuQx3Od7ORg.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Assigning proper font and material<\/figcaption><\/figure>\n\n\n\n<p id=\"907b\">You will also find some of the materials using old HoloToolkit\u2019s shader broken, showing&nbsp;<strong>Hidden\/InternalErrorShader<\/strong>. You can simply re-assign&nbsp;<strong>Mixed Reality Toolkit &gt; Standard<\/strong>&nbsp;from the Shader drop-down menu.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1656\/1*paAisrmx5swMxgA8XDqrXw.png\" alt=\"\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1908\/1*mE1nySRkPDqLsh5owl0wrw.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Re-assigning missing MRTK\/Standard shader<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"7efc\">Building blocks used in the Periodic Table app<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"a112\">Foundational Scene Components: Camera, InputManager, Cursor<\/h3>\n\n\n\n<p id=\"bb98\">In the Scene Hierarchy, HoloToolkit had three basic components: MixedRealityCamera, InputManager, and Cursor. In MRTK, they are replaced with&nbsp;<strong>MixedRealityToolkit&nbsp;<\/strong>and&nbsp;<strong>MixedRealityPlayspace<\/strong>.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1152\/1*DrwceVAfKoxhtvbX5V6JXQ.png\" alt=\"\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1150\/1*Ryj0UAtp7_ZLnJuXFrqoAw.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Default scene setup component for HoloToolkit vs MRTK v2<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p id=\"c33d\">To upgrade these basic scene components, simply delete old ones and use the menu&nbsp;<strong>Mixed Reality Toolkit &gt; Add to Scene and Configure\u2026<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*G8kPh4QmPYuFcBWQm_9Dng.png\" alt=\"\"\/><\/figure>\n\n\n\n<p id=\"16b1\">Sometimes, MixedRealityPlayspace might not be added through this menu. In this case, you can create a new scene, add components using the menu, then drag and drop these components into your existing scene. (You can drag and drop other scene files into the opened scene)<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/2398\/1*KO0d5wI95tbw1EUIuJZ8MA.png\" alt=\"\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1156\/1*R8glHbD38CzasaBAhJY_-Q.png\" alt=\"\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1802\/1*zMCfMUAHIZE20zfiwl_RvA.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Drag and Drop MixedRealityPlayspace from the other scene<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"6027\">Running the app in Unity Editor with input simulation<\/h2>\n\n\n\n<p id=\"1221\">MRTK v2 supports in-editor input simulation. Using the keyboard and mouse, you can test your app for the hand tracking and eye tracking input. Space bar gives you the right hand and the left shift key gives you the left hand. T and Y key make them persistent. By dragging with the mouse right button, you can control the camera. Using W, A, S, D keys, you can move.<\/p>\n\n\n\n<p id=\"b146\">See MRTK\u2019s&nbsp;<a href=\"https:\/\/microsoft.github.io\/MixedRealityToolkit-Unity\/Documentation\/InputSimulation\/InputSimulationService.html\" rel=\"noreferrer noopener\" target=\"_blank\"><strong>Input Simulation Service documentation<\/strong><\/a>&nbsp;for more details.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ab7c\">Button<\/h2>\n\n\n\n<p id=\"d277\"><a href=\"https:\/\/github.com\/Microsoft\/MixedRealityToolkit-Unity\/blob\/htk_release\/Assets\/HoloToolkit-Examples\/UX\/Readme\/README_InteractableObjectExample.md\" rel=\"noreferrer noopener\" target=\"_blank\"><strong>Compound Button script<\/strong><\/a>&nbsp;series was used in Element and surface type buttons to provide visual feedback for different types of interaction states and trigger actions. In MRTK v2, Compound Button has been replaced with&nbsp;<a href=\"https:\/\/github.com\/Microsoft\/MixedRealityToolkit-Unity\/blob\/mrtk_release\/Documentation\/README_Interactable.md\" rel=\"noreferrer noopener\" target=\"_blank\"><strong>Interactable<\/strong><\/a><strong>.&nbsp;<\/strong>With Interactable, you can easily add visual feedback to the different input states such as default, focus and pressed. You can also use input events to trigger actions.<\/p>\n\n\n\n<p id=\"b66c\"><strong>ElementContainer&nbsp;<\/strong>is the cube-shaped prefab which contains the template for the element model, information layout and open\/close animations. The entire box acts as a button. In the Element object under ElementContainer, I have removed old ElementButton script and added&nbsp;<strong>Interactable<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*t6wgq8iOYCNZ1vv0nJqQGg.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">ElementContainer prefab and Element object<\/figcaption><\/figure>\n\n\n\n<p id=\"9920\"><strong>Interactable<\/strong>&nbsp;handles visual states and event trigger for the&nbsp;<a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/mixed-reality\/point-and-commit\" rel=\"noreferrer noopener\" target=\"_blank\">far interaction inputs such as Gaze + Air-tap, Hand ray, and motion controller pointer<\/a>. Since we want to keep the far interaction model for the element targeting and selection, we will use Interactable.<\/p>\n\n\n\n<p id=\"0c75\">See<strong>&nbsp;<\/strong><a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/mixed-reality\/interactable-object\" rel=\"noreferrer noopener\" target=\"_blank\"><strong>Interactable object design guideline<\/strong><\/a>&nbsp;for more details.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*L89M8xhuHGAQCK9EeaLDsQ.jpeg\" alt=\"\"\/><figcaption class=\"wp-element-caption\">A simple example of using Interactable to add visual feedback to an object<\/figcaption><\/figure>\n\n\n\n<p id=\"ec01\">In the&nbsp;<strong>Interactable<\/strong>, I have created a new profile \u2018<strong>ElementBoxTheme<\/strong>\u2019 with the Theme Property \u2018<strong>ScaleOffsetColorTheme<\/strong>\u2019 and Target object \u2018Box\u2019 (which is the outer shell of the element object). With this, we can easily define color, scale, and offset values for the different input states \u2014 Default, Focus, Pressed, and Disabled.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*HHfsd47FyZoYsyEsZK55ow.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Removing old ElementButton script Adding Interactable<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*tcYg5DpsQ3tSU5bWFN4RAA.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Created two themes to add visual feedback to the Box and PanelFront object<\/figcaption><\/figure>\n\n\n\n<p id=\"aaed\">In the&nbsp;<strong>Interactable<\/strong>, you can also easily add actions for the various types of events. The&nbsp;<strong>Open()&nbsp;<\/strong>method in the Element.cs script triggers the animation, opens the element box, and shows the 3D model with information on the panels.&nbsp;<strong>SetActiveElement()<\/strong>&nbsp;is used together to specify currently opened element.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">public void SetActiveElement()<br>{<br>     Element element = gameObject.GetComponent&lt;Element&gt;();<br>     ActiveElement = element;<br>}public void Open()<br>{<br>     if (present.Presenting)<br>     return;<br>     StartCoroutine(UpdateActive());<br>}<\/pre>\n\n\n\n<p id=\"0062\">Under the&nbsp;<strong>Events&nbsp;<\/strong>section of the&nbsp;<strong>Interactable<\/strong>, I have added two method calls by dragging and dropping the Element script and using the drop-down.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1554\/1*ZGr4uhYjokMEurfcMkT_BQ.png\" alt=\"\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1550\/1*Vgrd7SAtJAw7ceDwoXT9qg.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Assigning method calls under the Events section<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p id=\"cac2\">Surface type buttons were made with&nbsp;<strong>HolographicButton<\/strong>&nbsp;prefab in HoloToolkit. The&nbsp;<strong>HolographicButton&nbsp;<\/strong>prefab has been updated as well, from&nbsp;<strong>CompoundButton&nbsp;<\/strong>to&nbsp;<strong>Interactable<\/strong>. Additionally,&nbsp;<a href=\"https:\/\/github.com\/Microsoft\/MixedRealityToolkit-Unity\/blob\/mrtk_release\/Documentation\/README_Button.md\" rel=\"noreferrer noopener\" target=\"_blank\">new&nbsp;<strong>PressableButton&nbsp;<\/strong>and&nbsp;<strong>PressableButtonPlated&nbsp;<\/strong>prefab<\/a>&nbsp;have been added which supports direct manipulation with articulated hand tracking input. With PressableButton, you can press the button with your fingertip.&nbsp;<strong>PressableButton&nbsp;<\/strong>also uses&nbsp;<strong>Interactable<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*puQOrOiuVDKgDRE09A6bQA.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">PressableButtonPlated prefab which supports direct hand interaction<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*AL5BjvjMeMyHjgLMDrifCg.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Old Surface type buttons based on Compound Button series<\/figcaption><\/figure>\n\n\n\n<p id=\"f619\">To use direct hand interaction, I have removed the old surface type buttons and added new&nbsp;<strong>PressableButtonPlated<\/strong>&nbsp;prefabs.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*4aqIiFPABvc246YXtigAVQ.png\" alt=\"\"\/><\/figure>\n\n\n\n<p id=\"fd13\">These buttons will update the layout style by changing the&nbsp;<strong>Grid Object Collection<\/strong>\u2019s Surface Type. (Explained in the next section below)<\/p>\n\n\n\n<p id=\"94d5\">Grid Object Collection is also useful when you want to layout multiple buttons. Instead of manually calculating the button size and putting the coordinates, use Grid Object Collection and adjust Rows and Cell Width\/Height.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*x3zqXwY87EwTody8S8m6Sg.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Buttons in a grid layout with Grid Object Collection<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*SxgWQc8PdLsxvWniT_zXug.png\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"db84\">Object Collection<\/h2>\n\n\n\n<p id=\"8212\"><a href=\"https:\/\/github.com\/Microsoft\/MixedRealityToolkit-Unity\/blob\/htk_release\/Assets\/HoloToolkit-Examples\/UX\/Readme\/README_ObjectCollection.md\" rel=\"noreferrer noopener\" target=\"_blank\"><strong>Object Collection<\/strong><\/a>&nbsp;is a script which helps you lay out an array of objects in various types of shapes. In MRTK v2, you can find the scripts with updated names:&nbsp;<a href=\"https:\/\/github.com\/Microsoft\/MixedRealityToolkit-Unity\/blob\/mrtk_release\/Assets\/MixedRealityToolkit.SDK\/Features\/UX\/Scripts\/Collections\/GridObjectCollection.cs\" rel=\"noreferrer noopener\" target=\"_blank\">GridObjectCollection.cs<\/a><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><a href=\"https:\/\/github.com\/Microsoft\/MixedRealityToolkit-Unity\/tree\/mrtk_release\/Assets\/MixedRealityToolkit.SDK\/Features\/UX\/Scripts\/Collections\" rel=\"noreferrer noopener\" target=\"_blank\">MixedRealityToolkit.SDK\/Features\/UX\/Scripts\/Collections<\/a><\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1280\/1*CZqV7FN6x72w3UIzOGPgew.jpeg\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Object Collection Types<\/figcaption><\/figure>\n\n\n\n<p id=\"41c4\">Dynamically generated element objects are located under the&nbsp;<strong>TableParent<\/strong>.In the&nbsp;<strong>TableParent<\/strong>&nbsp;object, I have replaced old ObjecCollection script with new&nbsp;<strong>GridObjectCollection<\/strong>&nbsp;script. To change various properties of the GridObjectCollection through the buttons, I have added a new script&nbsp;<strong>LayoutStyleChanger<\/strong>. It simply changes the properties then update the collection.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*5GIVrr8_vKvYNrLC4wOUxw.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">GridObjectCollection script<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*gPELmZxZqtFBBz8SSfROyg.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Changing various options of the GridObjectCollection<\/figcaption><\/figure>\n\n\n\n<p id=\"065f\">Using the&nbsp;<strong>Interactable<\/strong>&nbsp;component in the PressableButtonPlated, we can easily trigger action using the&nbsp;<strong>OnClick<\/strong>() event under the&nbsp;<strong>Events<\/strong>&nbsp;section. For each surface type button, I have assigned LayoutStyleChanger script\u2019s ChangeLayoutStyleXXX() method.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*1PfTwHVnk_M0PyDooq_QgQ.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Assigning the method to the PressableButtonPlated<\/figcaption><\/figure>\n\n\n\n<div style=\"position:relative; padding-bottom:calc(56.25% + 44px)\"><iframe loading=\"lazy\" src=\"https:\/\/gfycat.com\/ifr\/piercingcolorfulafricanaugurbuzzard\" frameborder=\"0\" scrolling=\"no\" width=\"100%\" height=\"100%\" style=\"position:absolute;top:0;left:0;\" allowfullscreen=\"\"><\/iframe><\/div><p> <a href=\"https:\/\/gfycat.com\/piercingcolorfulafricanaugurbuzzard\"><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"4034\">Interaction Receiver<\/h2>\n\n\n\n<p id=\"c89b\">In MRTK v2, you can find the same InteractionReceiver class at this location:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><a href=\"https:\/\/github.com\/Microsoft\/MixedRealityToolkit-Unity\/tree\/mrtk_release\/Assets\/MixedRealityToolkit.SDK\/Features\/UX\/Scripts\/Receivers\" rel=\"noreferrer noopener\" target=\"_blank\">MixedRealityToolkit.SDK\/Features\/UX\/Scripts\/Receivers<\/a><\/p>\n<\/blockquote>\n\n\n\n<p id=\"4dc8\">InteractionReceiver in MRTK v2 supports additional events related to hand tracking interactions such as TouchStarted and TouchCompleted.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ff4e\">Running in the Unity editor<\/h2>\n\n\n\n<p id=\"08df\">After resolving the scripts and prefab errors, I was able to run the app in the editor. MRTK v2 supports in-editor input simulation including articulated hand tracking. You can easily test HoloLens input using the keyboard and mouse. For more information on the in-editor input simulation, please refer to this page:&nbsp;<a href=\"https:\/\/microsoft.github.io\/MixedRealityToolkit-Unity\/Documentation\/InputSimulation\/InputSimulationService.html\" rel=\"noreferrer noopener\" target=\"_blank\">Input Simulation Service<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*zDYhNbGDJ0ClYbDqBeZjqQ.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Fixed Font material issue<\/figcaption><\/figure>\n\n\n\n<p id=\"b4c1\">Once you update the app to MRTK v2, the new input system automatically supports available input types. For example, in HoloLens, you can use Gaze and Air-tap gesture to target and select. In HoloLens 2, hand ray will be automatically visualized when a hand is detected. Because of this, now Periodic Table supports both HoloLens 1st gen and HoloLens 2.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*MVGEQ8JmQyyNNkzNtndx9A.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Running in the editor with hand ray using MRTK\u2019s input simulation<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*uQB6Dmmv5vsr1LCOy7rPlA.png\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"fe6e\">Adjusting the element view position for the near interactions, adding PressableButton for the \u2018Close\u2019 action<\/h2>\n\n\n\n<p id=\"114a\">Once an element is focused and selected, the box flies to the user and opens up a 3D model and information panels. Since the original version was designed for the gaze and air-tap, the element was still far from the user. To leverage HoloLens 2\u2019s direct hand input interaction, I have adjusted the element position to the near interaction range which is about 45cm from the user.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*Bv2I1F7gBaWTiKijfQUFPQ.jpeg\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Target sizing in near interaction range<\/figcaption><\/figure>\n\n\n\n<p id=\"e0da\">The original version had an implicit button around the 3D model for closing the element box with air-tap. Since the information panel and the element object are within the distance for the near interactions, we can use a pressable button for the \u2018Close\u2019 action. MRTK\u2019s pressable button has 3.2&#215;3.2cm dimension to support both near and far interactions.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/2514\/1*BkVkY7sEZxvSBfYwqW4mgw.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/3148\/1*O61FMI-3DgQzEkK60ksQbw.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>https:\/\/cdn.embedly.com\/widgets\/media.html?src=https%3A%2F%2Fgfycat.com%2Fifr%2Fwiltedterrificfrog&amp;url=https%3A%2F%2Fgfycat.com%2Fwiltedterrificfrog&amp;image=https%3A%2F%2Fthumbs.gfycat.com%2FWiltedTerrificFrog-size_restricted.gif&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=gfycatClose button in action with hand tracking input simulation<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*xr1qONC0Y5ffeUhGU6gcbA.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Updated icon material\u2019s texture and the label text<\/figcaption><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>These design guidelines will help you understand HoloLens 2\u2019s input interaction models and recommendations.<\/p>\n\n\n\n<p><a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/mixed-reality\/interaction-fundamentals\" rel=\"noreferrer noopener\" target=\"_blank\"><strong>Instinctual Interaction<\/strong><\/a><strong><br><\/strong><a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/mixed-reality\/interactable-object\" rel=\"noreferrer noopener\" target=\"_blank\"><strong>Interactable Object<\/strong><\/a><strong><br><\/strong><a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/mixed-reality\/direct-manipulation\" rel=\"noreferrer noopener\" target=\"_blank\"><strong>Direct Manipulation with Hands<\/strong><\/a><\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ed14\">Adding HoloLens 2\u2019s articulated hand interaction<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/7808\/1*aBHFxXcjo_5Eazh1BXhxNA.jpeg\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/7808\/1*oCyQavUyWeJcDkdnzoEItw.jpeg\" alt=\"\"\/><\/figure>\n\n\n\n<p id=\"d498\">One of the most exciting features in HoloLens 2 is articulated hand tracking input. Using this, we can achieve more&nbsp;<a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/mixed-reality\/interaction-fundamentals\" rel=\"noreferrer noopener\" target=\"_blank\">instinctual interactions<\/a>&nbsp;by directly interacting with holographic objects.<\/p>\n\n\n\n<p id=\"4e3b\">In the Periodic Table app, the hero content object is the 3D element model. By adding direct manipulation interactions, the user can observe and inspect the model by grabbing it and bringing it closer or by scaling it and rotating it.<\/p>\n\n\n\n<p id=\"3842\">Adding direct manipulation is very easy in MRTK v2. The&nbsp;<a href=\"https:\/\/github.com\/Microsoft\/MixedRealityToolkit-Unity\/blob\/mrtk_release\/Documentation\/README_ManipulationHandler.md\" rel=\"noreferrer noopener\" target=\"_blank\"><strong>ManipulationHander<\/strong>&nbsp;script<\/a>&nbsp;handles both one-handed and two-handed manipulation. It also supports both near and far interactions. You can use this for Gaze-based interactions or Hand ray-based interactions too. By simply assigning ManipulationHandler script, you can make any object manipulatable \u2014 Grab, Move, Rotate, Scale.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/2400\/1*tGZnZ0513vGThIM4aNjXqQ.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/3058\/1*147IBbKrD3JYku0Peoncog.jpeg\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Manipulation Handler supports both one and two-handed manipulation<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*qiR0a6hdEP7syT7cNKCDKQ.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Added Manipulation Handler script to MoleculeObject<\/figcaption><\/figure>\n\n\n\n<div style=\"position:relative; padding-bottom:calc(56.25% + 44px)\"><iframe loading=\"lazy\" src=\"https:\/\/gfycat.com\/ifr\/wiltedterrificfrog\" frameborder=\"0\" scrolling=\"no\" width=\"100%\" height=\"100%\" style=\"position:absolute;top:0;left:0;\" allowfullscreen=\"\"><\/iframe><\/div><p> <a href=\"https:\/\/gfycat.com\/wiltedterrificfrog\"><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"d85e\">Enabling the Voice Command<\/h2>\n\n\n\n<p id=\"d175\">The&nbsp;<strong>Interactable<\/strong>&nbsp;script which we used in the Element box provides the voice command functionality. To use this voice command feature, you need to:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Add the keyword to the&nbsp;<strong>Voice Command<\/strong>&nbsp;field under the&nbsp;<strong>Interactable<\/strong>.<\/li>\n\n\n\n<li>Add the keyword to the&nbsp;<strong>MixedRealitySpeechCommandsProfile<\/strong>. You can see this profile by selecting MixedRealityToolkit in the Hierarchy panel, then in the Inspector panel, click through&nbsp;<strong>MixedRealityInputSystemProfile &gt; MixedRealitySpeechCommandsProfile<br><\/strong><em>*To add your keyword to the MixedRealitySpeechCommandsProfile, you need to clone profile using the \u2018<\/em><strong><em>Clone<\/em><\/strong><em>\u2019 button.<\/em><\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*ktTf0hHJ8v7rwTSfqTSV1g.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Adding a voice command keyword to the Interactable<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*X89u0zD8yUBZ1iHJWefd8w@2x.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Adding a new keyword to MixedRealitySpeechCommandsProfile<\/figcaption><\/figure>\n\n\n\n<p id=\"fb48\">Once you have added keywords, you can test it in the editor\u2019s game mode using the PC\u2019s microphone.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"875a\">Adding HoloLens 2\u2019s eye tracking input for the automatic text scrolling<\/h2>\n\n\n\n<p id=\"f2ba\">Eye tracking is one of the most exciting features in HoloLens 2. You can learn about various types of eye tracking interactions through the&nbsp;<a href=\"https:\/\/microsoft.github.io\/MixedRealityToolkit-Unity\/Documentation\/EyeTracking\/EyeTracking_ExamplesOverview.html\" rel=\"noreferrer noopener\" target=\"_blank\">MRTK\u2019s eye tracking examples.<\/a>&nbsp;You can find these examples in the Microsoft.MixedReality.Toolkit.Unity.<strong>Examples<\/strong>-VERSION.unitypackage. The folder is&nbsp;<strong>MixedRealityToolkit.Examples\/Demos\/EyeTracking<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*ia7XAxcK7JWocwiQ6XVQTg.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Eye Tracking example scene<\/figcaption><\/figure>\n\n\n\n<p id=\"d6f8\">For the Periodic Table of the Elements app, we will use eye tracking\u2019s auto-scrolling feature on the left information panel.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"a8fc\">Enabling the Eye Tracking input<\/h3>\n\n\n\n<p id=\"ea3f\">To enable eye tracking input in HoloLens 2, you need to add Eye Gaze Data Provider to the MRTK\u2019s Data Providers under InputSystemProfile. For more details, please refer to this page:&nbsp;<a href=\"https:\/\/nam06.safelinks.protection.outlook.com\/?url=https%3A%2F%2Fmicrosoft.github.io%2FMixedRealityToolkit-Unity%2FDocumentation%2FEyeTracking%2FEyeTracking_BasicSetup.html&amp;data=02%7C01%7CDongYoon.Park%40microsoft.com%7C9ec8507560c44e65172c08d6e2e8df5b%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636945887138626382&amp;sdata=fMAbbRP5Wqvt9B35SJQMSTlCE8fhJSTbl8VdDYKu12c%3D&amp;reserved=0\" rel=\"noreferrer noopener\" target=\"_blank\"><strong>Getting started with Eye Tracking<\/strong><\/a><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*cTZHLt5dgZJzg4M5iiuLbA.png\" alt=\"\"\/><\/figure>\n\n\n\n<p id=\"29f2\">One additional step to enable eye tracking input is the checkbox&nbsp;<strong>Use Eye Tracking<\/strong>&nbsp;in the Gaze Provider. You can find the Gaze Provider under&nbsp;<strong>MixedRealityPlayspace &gt; Main Camera<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*DBd5d-ZSB_7vTN86iq21ZA.png\" alt=\"\"\/><\/figure>\n\n\n\n<p id=\"1992\">To simulate the eye tracking in the Unity editor, you need to check&nbsp;<strong>Simulate Eye Position<\/strong>&nbsp;in the&nbsp;<strong>MixedRealityInputSimulationProfile.<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*FWtq_wwQqKDCcY09sDsPGQ.png\" alt=\"\"\/><\/figure>\n\n\n\n<p id=\"4abd\">To build and deploy to the device, the&nbsp;<em>\u2018GazeInput\u2019<\/em>&nbsp;capability must be enabled in the Visual Studio\u2019s application manifest.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*HWSBOmJW_RHsF7IJAJ84zg.png\" alt=\"\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"9f5f\">Auto-scroll with Eye Tracking input<\/h3>\n\n\n\n<p id=\"3930\">You can find the script and example of making Unity\u2019s TextMesh Pro auto scroll with eye tracking in the&nbsp;<strong>EyeTrackingDemo-03-Navigation.unity<\/strong>&nbsp;scene.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*kpHPhVei7q-qPpgr7nzAZA.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">EyeTrackingDemo-03-Navigation scene<\/figcaption><\/figure>\n\n\n\n<p id=\"6a6b\">You can find the Scroll View component under&nbsp;<strong>Eye-based-Scroll &gt; Eye Scroll &gt; Canvas<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*LQX7eD3uGcpXfuUDEpASMg.png\" alt=\"\"\/><\/figure>\n\n\n\n<p id=\"ab39\">The ActiveEyeGazeRegion object has the scripts&nbsp;<strong>EyeTrackingTarget<\/strong>&nbsp;and&nbsp;<strong>ScrollRectTransf<\/strong>. You can see the script provides various options.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1894\/1*IqCvYFyQ7U-ZdVr6kAZSNg.png\" alt=\"\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1900\/1*4cGkY9JudbGdfbHy9O_HOQ.png\" alt=\"\"\/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p id=\"f57f\">From MixedRealityToolkit.Examples package, I imported the EyeTracking folder(<strong>MixedRealityToolkit.Examples\/Demos\/EyeTracking)<\/strong>&nbsp;into the Periodic Table app project.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*g5kWjFkkw2trfBlyCh_jCg.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Importing EyeTracking folder from MixedRealityToolkit.Unity.Examples package<\/figcaption><\/figure>\n\n\n\n<p id=\"5646\">Since the original Periodic Table app used TextMesh for the text display, I have updated the code to use TextMesh Pro.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*W2kxodZ_pBBHiz2JxRz2Sg.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Brought the auto scroll canvas example into the Element Container<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*BI9Ae_RblwkIUK1Gd545rg.png\" alt=\"\"\/><\/figure>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1516\/1*BUMzIhFA_Qxr3Ofnd2rvMQ.png\" alt=\"\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1714\/1*b72Si_f0YwVHFwuHYLaSYg.png\" alt=\"\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1844\/1*Ylkk8N6tTPf8-h98DIPbDA.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Replaced old TextMesh with new TextMesh Pro<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p id=\"5fbd\">When you run the app in the editor, you can see the text automatically scroll based on your eye gaze position. On the device, you can feel more natural scrolling when you just continue reading the text.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*ll7bTrldBl1sqTaNHMfbXw.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Text on the left information panel automatically scrolls with eye tracking<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"8dc4\">Project source code repository<\/h2>\n\n\n\n<p id=\"66e4\">You can find the Periodic Table of the Elements app in the Mixed Reality Design Lab\u2019s GitHub. The branch name is&nbsp;<strong>\u2018master\u2019<\/strong>. Currently, it is based on MRTK RC2.1 It was tested with<strong>&nbsp;Unity 2018.3.13f1<\/strong><a href=\"https:\/\/github.com\/microsoft\/MRDesignLabs_Unity_PeriodicTable\/tree\/master\/\" rel=\"noreferrer noopener\" target=\"_blank\">microsoft\/MRDesignLabs_Unity_PeriodicTablePeriodic Table of the Elements for HoloLens and Immersive headset &#8211; microsoft\/MRDesignLabs_Unity_PeriodicTablegithub.com<\/a><\/p>\n\n\n<style>.wp-block-kadence-spacer.kt-block-spacer-_167003-9c .kt-block-spacer{height:120px;}.wp-block-kadence-spacer.kt-block-spacer-_167003-9c .kt-divider{border-top-width:1px;height:1px;border-top-color:#eee;width:80%;border-top-style:solid;}<\/style>\n<div class=\"wp-block-kadence-spacer aligncenter kt-block-spacer-_167003-9c\"><div class=\"kt-block-spacer kt-block-spacer-halign-center\"><hr class=\"kt-divider\"\/><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Other Stories<\/h2>\n\n\n\n<div class=\"wp-block-query is-layout-flow wp-block-query-is-layout-flow\"><ul class=\"wp-block-post-template has-small-font-size is-layout-flow wp-block-post-template-is-layout-flow\"><li class=\"wp-block-post post-5150 post type-post status-publish format-standard has-post-thumbnail hentry category-articles tag-interactionsdk tag-metaquest tag-mixed-reality tag-mr tag-quest\">\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\"><figure class=\"wp-block-post-featured-image\"><a href=\"https:\/\/mixedrealitynow.com\/ko\/how-to-enable-passthrough-for-mixed-reality-meta-quest-3-quest-pro-quest-2\" target=\"_self\"  ><img loading=\"lazy\" decoding=\"async\" width=\"1697\" height=\"1000\" src=\"https:\/\/mixedrealitynow.com\/wp-content\/uploads\/2024\/05\/2024-05-29-00_34_04-Media-Player.png\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"How to enable Passthrough for Mixed Reality &#8211; Meta Quest 3, Quest Pro, Quest 2\" style=\"object-fit:cover;\" srcset=\"https:\/\/mixedrealitynow.com\/wp-content\/uploads\/2024\/05\/2024-05-29-00_34_04-Media-Player.png 1697w, https:\/\/mixedrealitynow.com\/wp-content\/uploads\/2024\/05\/2024-05-29-00_34_04-Media-Player-300x177.png 300w, https:\/\/mixedrealitynow.com\/wp-content\/uploads\/2024\/05\/2024-05-29-00_34_04-Media-Player-1024x603.png 1024w, https:\/\/mixedrealitynow.com\/wp-content\/uploads\/2024\/05\/2024-05-29-00_34_04-Media-Player-768x453.png 768w, https:\/\/mixedrealitynow.com\/wp-content\/uploads\/2024\/05\/2024-05-29-00_34_04-Media-Player-1536x905.png 1536w, https:\/\/mixedrealitynow.com\/wp-content\/uploads\/2024\/05\/2024-05-29-00_34_04-Media-Player-18x12.png 18w\" sizes=\"auto, (max-width: 1697px) 100vw, 1697px\" \/><\/a><\/figure><\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\"><h2 class=\"wp-block-post-title\"><a href=\"https:\/\/mixedrealitynow.com\/ko\/how-to-enable-passthrough-for-mixed-reality-meta-quest-3-quest-pro-quest-2\" target=\"_self\" >How to enable Passthrough for Mixed Reality &#8211; Meta Quest 3, Quest Pro, Quest 2<\/a><\/h2>\n\n<div class=\"wp-block-post-excerpt\"><p class=\"wp-block-post-excerpt__excerpt\">#Mixed Reality #Passthrough #Hand Tracking #MetaQuest #Quest3 #Quest2 #QuestPro To enable passthrough, follow these 3 [&hellip;] <\/p><\/div><\/div>\n<\/div>\n\n<\/li><li class=\"wp-block-post post-4469 post type-post status-publish format-standard has-post-thumbnail hentry category-articles category-projects\">\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\"><figure class=\"wp-block-post-featured-image\"><a href=\"https:\/\/mixedrealitynow.com\/ko\/designing-type-in-space-for-hololens-2\" target=\"_self\"  ><img loading=\"lazy\" decoding=\"async\" width=\"760\" height=\"400\" src=\"https:\/\/mixedrealitynow.com\/wp-content\/uploads\/2022\/12\/TypeInSpace2Hero_1920x1080-760x400.jpg\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"Designing Type In Space for HoloLens 2\" style=\"object-fit:cover;\" \/><\/a><\/figure><\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\"><h2 class=\"wp-block-post-title\"><a href=\"https:\/\/mixedrealitynow.com\/ko\/designing-type-in-space-for-hololens-2\" target=\"_self\" >Designing Type In Space for HoloLens 2<\/a><\/h2>\n\n<div class=\"wp-block-post-excerpt\"><p class=\"wp-block-post-excerpt__excerpt\">Background As a designer passionate about typography and spatial computing, I\u2019ve long been captivated by [&hellip;] <\/p><\/div><\/div>\n<\/div>\n\n<\/li><li class=\"wp-block-post post-4424 post type-post status-publish format-standard has-post-thumbnail hentry category-articles\">\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\"><figure class=\"wp-block-post-featured-image\"><a href=\"https:\/\/mixedrealitynow.com\/ko\/mrtk-101-how-to-use-crucial-spatial-interactions-and-ui-for-ar-vr-xr-hololens-oculus-quest-openvr-openxr\" target=\"_self\"  ><img loading=\"lazy\" decoding=\"async\" width=\"760\" height=\"400\" src=\"https:\/\/mixedrealitynow.com\/wp-content\/uploads\/2021\/11\/MRTK03004_Moment3-760x400.jpg\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"MRTK 2 &#8211; How to build crucial Spatial Interactions\" style=\"object-fit:cover;\" \/><\/a><\/figure><\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\"><h2 class=\"wp-block-post-title\"><a href=\"https:\/\/mixedrealitynow.com\/ko\/mrtk-101-how-to-use-crucial-spatial-interactions-and-ui-for-ar-vr-xr-hololens-oculus-quest-openvr-openxr\" target=\"_self\" >MRTK 2 &#8211; How to build crucial Spatial Interactions<\/a><\/h2>\n\n<div class=\"wp-block-post-excerpt\"><p class=\"wp-block-post-excerpt__excerpt\">Learn how to use MRTK to achieve some of the most widely used common interaction [&hellip;] <\/p><\/div><\/div>\n<\/div>\n\n<\/li><li class=\"wp-block-post post-4872 post type-post status-publish format-standard has-post-thumbnail hentry category-articles category-projects\">\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\"><figure class=\"wp-block-post-featured-image\"><a href=\"https:\/\/mixedrealitynow.com\/ko\/how-to-use-meta-quest-2-quest-pro-with-mrtk3-unity-for-hand-interactions\" target=\"_self\"  ><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"915\" src=\"https:\/\/mixedrealitynow.com\/wp-content\/uploads\/2023\/02\/mrtk_ux_v3_cover.png\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"How to use Meta Quest 2\/Quest Pro with MRTK3 Unity for Hand Interactions\" style=\"object-fit:cover;\" srcset=\"https:\/\/mixedrealitynow.com\/wp-content\/uploads\/2023\/02\/mrtk_ux_v3_cover.png 1920w, https:\/\/mixedrealitynow.com\/wp-content\/uploads\/2023\/02\/mrtk_ux_v3_cover-300x143.png 300w, https:\/\/mixedrealitynow.com\/wp-content\/uploads\/2023\/02\/mrtk_ux_v3_cover-1024x488.png 1024w, https:\/\/mixedrealitynow.com\/wp-content\/uploads\/2023\/02\/mrtk_ux_v3_cover-768x366.png 768w, https:\/\/mixedrealitynow.com\/wp-content\/uploads\/2023\/02\/mrtk_ux_v3_cover-1536x732.png 1536w, https:\/\/mixedrealitynow.com\/wp-content\/uploads\/2023\/02\/mrtk_ux_v3_cover-18x9.png 18w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/figure><\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\"><h2 class=\"wp-block-post-title\"><a href=\"https:\/\/mixedrealitynow.com\/ko\/how-to-use-meta-quest-2-quest-pro-with-mrtk3-unity-for-hand-interactions\" target=\"_self\" >How to use Meta Quest 2\/Quest Pro with MRTK3 Unity for Hand Interactions<\/a><\/h2>\n\n<div class=\"wp-block-post-excerpt\"><p class=\"wp-block-post-excerpt__excerpt\">With the support of OpenXR, it is now easy to use MRTK with Meta Quest [&hellip;] <\/p><\/div><\/div>\n<\/div>\n\n<\/li><li class=\"wp-block-post post-1485 post type-post status-publish format-standard has-post-thumbnail hentry category-articles category-projects\">\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\"><figure class=\"wp-block-post-featured-image\"><a href=\"https:\/\/mixedrealitynow.com\/ko\/bringing-the-periodic-table-of-the-elements-app-to-hololens-2-with-mrtk-v2\" target=\"_self\"  ><img loading=\"lazy\" decoding=\"async\" width=\"760\" height=\"400\" src=\"https:\/\/mixedrealitynow.com\/wp-content\/uploads\/2019\/09\/1_xTTHyL_uj-cQfU-QZvqZ4g-760x400-1.png\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"Bringing the Periodic Table of the Elements app to HoloLens 2 with MRTK v2\" style=\"object-fit:cover;\" srcset=\"https:\/\/mixedrealitynow.com\/wp-content\/uploads\/2019\/09\/1_xTTHyL_uj-cQfU-QZvqZ4g-760x400-1.png 760w, https:\/\/mixedrealitynow.com\/wp-content\/uploads\/2019\/09\/1_xTTHyL_uj-cQfU-QZvqZ4g-760x400-1-300x158.png 300w\" sizes=\"auto, (max-width: 760px) 100vw, 760px\" \/><\/a><\/figure><\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\"><h2 class=\"wp-block-post-title\"><a href=\"https:\/\/mixedrealitynow.com\/ko\/bringing-the-periodic-table-of-the-elements-app-to-hololens-2-with-mrtk-v2\" target=\"_self\" >Bringing the Periodic Table of the Elements app to HoloLens 2 with MRTK v2<\/a><\/h2>\n\n<div class=\"wp-block-post-excerpt\"><p class=\"wp-block-post-excerpt__excerpt\">Sharing the story of updating HoloLens app made with HoloToolkit(HTK) to use new Mixed Reality [&hellip;] <\/p><\/div><\/div>\n<\/div>\n\n<\/li><\/ul><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Sharing the story of updating HoloLens app made with HoloToolkit(HTK) to use new Mixed Reality [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4561,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[31,21],"tags":[],"class_list":["post-1485","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articles","category-projects"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/mixedrealitynow.com\/wp-content\/uploads\/2019\/09\/1_xTTHyL_uj-cQfU-QZvqZ4g-760x400-1.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mixedrealitynow.com\/ko\/wp-json\/wp\/v2\/posts\/1485","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mixedrealitynow.com\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mixedrealitynow.com\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mixedrealitynow.com\/ko\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mixedrealitynow.com\/ko\/wp-json\/wp\/v2\/comments?post=1485"}],"version-history":[{"count":2,"href":"https:\/\/mixedrealitynow.com\/ko\/wp-json\/wp\/v2\/posts\/1485\/revisions"}],"predecessor-version":[{"id":4727,"href":"https:\/\/mixedrealitynow.com\/ko\/wp-json\/wp\/v2\/posts\/1485\/revisions\/4727"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mixedrealitynow.com\/ko\/wp-json\/wp\/v2\/media\/4561"}],"wp:attachment":[{"href":"https:\/\/mixedrealitynow.com\/ko\/wp-json\/wp\/v2\/media?parent=1485"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mixedrealitynow.com\/ko\/wp-json\/wp\/v2\/categories?post=1485"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mixedrealitynow.com\/ko\/wp-json\/wp\/v2\/tags?post=1485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}