先日DigiGirlzというイベントでHoloLensのデモアプリを作成、アテンドをおこないました。
MRTKv2.2.0のPulseShadeを含む数多くの実験的機能を盛り込んだアプリに仕上がりました。
今回からアプリに関して少しずつ残します。
前回の記事はこちらです。
イベントでのデモに関してはこちら記事を見てください。
〇MRTKShaderを用いた魔方陣の演出
UnityのAnimationではマテリアルもAnimationで変化させることができます。
今回の魔方陣ではMRTKStandardShaderを用いて二つの表現を行っています。
〇魔方陣の発行色を変化させる
デモアプリの魔方陣では最初は白く発行する魔方陣が、回転を始めるとともに赤、黄色、緑、青に発光色が変化します。
これはMRTKStandardShaderを適応したマテリアルをアニメーションによってパラメータを変化させることで行っています。
まずAnimation、AnimationControllerがアタッチされている魔法時オブジェクトのAnimationWindowでAdd Propartyを選択します。
魔方陣オブジェクト自身のTransformに次いで子オブジェクトの名前が表示されます。
ここでは、内cross1というオブジェクトを扱います。
Add Popertyで内cross1を選択するとさらに Is Active ,Transform.Mesh Rendererが表示されます。
これはそれぞれ
・Is Active
内cross1オブジェクトを有効にするか、無効にするか
・Transform
内cross1オブジェクトのTransformのアニメーション
・Mesh Renderer
内cross1に設定されているMaterialのアニメーション
を設定します。
ここではマテリアルで発光色を変化させたいのでMesh Rendererを選択し、さらにその中に含まれるMeshRenderer.Material._Emissive Colorを選択します。
するとAnimation WindowのPropertyに内cross1:Mesh Renderer.Material._Emissive Colorが追加されます。
ここで簡単にAnimation Windowを説明すると最上部に並ぶ数字は時間を指しています。 そして内cross1:Mesh Renderer.Material._Emissive Colorは、時間が0:00と1:00の時点でそれぞれ印が付いています。
これは、0:00秒目に○○という状態、1:00秒目に○○という状態ということを指定して、その間の0:00~1:00の時間はAnimationによって自動的に中割されます。 つまり、0:00秒目に数値0という状態、1:00秒目に数値1という状態と指定した場合0:50秒目は数値0.5を取ります。
では、内cross1:Mesh Renderer.Material._Emissive Colorのアニメーションを設定します。
〇MRTKStandardShaderを用いたアニメーション
内cross1:Mesh Renderer.Material._Emissive ColorはMaterial.Emissive Corlorがx,y,z,wの4つの設定項目があります。
これはそれぞれRGBAに対応しています。
0:00でそれぞれ1,1,1,1(白色) 1:00でそれぞれ1,0,0,1に設定しました(赤色)。 実際にアニメーションを動かしてみます。
動かすためにはAnimation Windowの上部にある実行アイコンをクリックします。
実行結果は以下のようになります。
確かに1秒かけてMRTKStandardSaderを適応したマテリアルの発光色が赤く変化しています。
次回は形状の変化を行います。