本日はMRTKのExamplesの調査枠です。
HoloLens 2ではユーザーの目線を取得するEyeTrackingが使用可能になりました。
これによって開発者はユーザーの目を使った操作を提供するだけではなくどこを見ていたかの情報を得ることができるようになりました。
EyeTrackingDemo-05-Visualizerシーンではユーザーがどこを見ていたかをヒートマップで見ることができる例が紹介されています。
〇EyeTrackingDemo-05-Visualizer
〇ManagerComponents
EyeTrackingDemo-05-Visualzerシーンは外部のシーンから読み込むことを想定しているためシーン内にHoloLens用の設定を行う[MixedRealityToolkit]オブジェクトと[MixedReapityPlaySpace]オブジェクトがありません。

[EyeTrackingDemo-05-Visualizer]シーン単体でデプロイする場合は上部ワールドタブから[MixedRealityToolkit]→[Add to configure...]からシーンに構成を加える必要があります。

通常使用するデバイス、機能に応じて[MixedRealityToolkit]オブジェクトから構成を設定する必要がありますが、[EyeTrackingDemo-05-Visualizer]シーンは[EyeTrackingDemos ManagerComponents]オブジェクトの[LoadProfilesOnStartup]コンポーネントによって動的に設定を切り替えています。

[LoadProfilesOnStartup]コンポーネントの[Config Profile]に使用したいProfileをアタッチすることで指定した構成に切り替えます。
〇LoadProfilesOnStartup
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using UnityEngine;
namespace Microsoft.MixedReality.Toolkit.Examples.Demos.EyeTracking
{
/// <summary>
/// Automatically loads a given Mixed Reality Toolkit configuration profile when loading up the scene.
/// </summary>
[AddComponentMenu("Scripts/MRTK/Examples/LoadProfilesOnStartup")]
public class LoadProfilesOnStartup : MonoBehaviour
{
[Tooltip("Mixed Reality Toolkit profile to load when starting up this scene.")]
[SerializeField]
private MixedRealityToolkitConfigurationProfile configProfile = null;
private void Start()
{
MixedRealityToolkit.Instance.ActiveProfile = null;
}
private void LateUpdate()
{
if ((configProfile != null) && (MixedRealityToolkit.Instance != null) && (MixedRealityToolkit.Instance.ActiveProfile == null))
{
MixedRealityToolkit.Instance.ActiveProfile = configProfile;
Debug.Log($"Loading new MRTK configuration profile: {configProfile.name}");
}
}
}
}
Start関数で[MixedRealityToolkit]に現在指定されているアクティブな構成を削除して初期化します。
private void Start()
{
MixedRealityToolkit.Instance.ActiveProfile = null;
}

private void LateUpdate()
{
if ((configProfile != null) && (MixedRealityToolkit.Instance != null) && (MixedRealityToolkit.Instance.ActiveProfile == null))
{
MixedRealityToolkit.Instance.ActiveProfile = configProfile;
Debug.Log($"Loading new MRTK configuration profile: {configProfile.name}");
}
}
[configProfile]がアタッチされている、MixedRealityToolkitが存在する、MixedRealityToolkitのアクティブな構成が存在しない場合、アクティブな構成に[configProfile]を指定します。
これによって実行中に動的に構成が切り替わります。