先日DigiGirlzというイベントでHoloLensのデモアプリを作成、アテンドをおこないました。
MRTKv2.2.0のPulseShadeを含む数多くの実験的機能を盛り込んだアプリに仕上がりました。
今回からアプリに関して少しずつ残します。
前回の記事はこちらです。
魔方陣の演出を解説しています。
イベントでのデモに関してはこちら記事を見てください。
〇PulseShaderを使う!
今回のデモアプリに関して主催者側の方からのオーダーは以下の二点です。
・初めて体験する中高生にHoloLensの魅力を伝えてほしい
・PulseShaderとSpatialSoundsを使ってほしい
PulseShaderは2019年末にリリースされたMRTKバージョン2.2.0でリリースされた実験的機能です。
PulseShaderに関してはこちらの記事も参考にしてください。
〇SpatialAwarenessのMaterialを差し替える。
今回のデモアプリでは
①アプリ起動してからAirTapを認識してキャラクターが現れるまで
②キャラクターが現れてから曲の1番のサビまで
③1番のサビから2番まで
④2番のサビから間奏まで
⑤間奏から最後まで
の5つのMaterialを適時入れ替えて常に視覚的に変化を与え単調にならない工夫をしています。
5つのMaterialはそれぞれ以下のようになっています。
①SpatialMeshは見えない。
②緑色のPulse
③青色のPulse
④オレンジのPulse
⑤パステルカラーのPulse
と曲が進む中で視覚的にも派手にしています。
〇SpatialAwarenessのMaterialの差し替え
MRTKの公式ドキュメントを参考に次のようなスクリプトを実装しました。
using UnityEngine; using Microsoft.MixedReality.Toolkit.SpatialAwareness; using Microsoft.MixedReality.Toolkit; public class ChangeSpatialMaterial : MonoBehaviour{ // new material; public Material spatialmaterial; /// <summary> /// Change MRTKSpatialAwareness VisibleMaterial. /// </summary> public void OnSpatialShaerCange1st() { // Cast the Spatial Awareness system to IMixedRealityDataProviderAccess to get an Observer var access = CoreServices.SpatialAwarenessSystem as IMixedRealityDataProviderAccess; // Get the first Mesh Observer available, generally we have only one registered var observer = access.GetDataProvider<IMixedRealitySpatialAwarenessMeshObserver>(); // Change the VisivleMaterial to new material. observer.VisibleMaterial = spatialmaterial; } }
これは、MixedRealityToolkitオブジェクトのProfileで設定されたSpatialAwarenessのマテリアルを動的に差し替えることができます。
でもアプリではこのメソッドをアニメーションによって管理することで任意のタイミングでアニメーションにあわせMaterialを差し替え、Pulseの変化をつけています。