夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

HoloLensで使える3Dモデルを作る ~ライトセーバーを作る~ その⑧ カイバークリスタルの色をフォースで変化させる。後編

HoloLensでは現実空間に3Dオブジェクトを配置、作用させることによってMixedReality(複合現実)を実現しています。

 この3DオブジェクトはHoloLensやxRの分野だけではなく、映画、ゲーム、製造、建築など多くの業界で幅広く用いられるようになりました。

 3Dオブジェクトを作成するツールも増え、少し良い性能のPCさえあれば3Dモデルを作ることは誰でも簡単にできるようになりました。

 前回からライトセーバーのコアとなるカイバークリスタルを作っています。 今回は8回目の記事です。

 前回の記事はこちら

redhologerbera.hatenablog.com

〇アニメーションでクリスタルのMaterialを変化させる。

 前回Hand Rayのカーソルがカイバークリスタルに当たっているときに発生するイベントを作りました。

 今回はMaterialを変化させるアニメーションを作成して、HoloLens 2で手をかざしている間Materialが変化するような演出を作成します。

 f:id:Holomoto-Sumire:20200111172429j:plain

 カイバークリスタルにAnimationControllerを作成し追加します。

 f:id:Holomoto-Sumire:20200111172849j:plain

 AnimationControllerにCrystalIdel、GreenCrystalの2つのAnimationClipを作成します。

 CrystalIdelは待機状態のアニメーションです。

 フォーカスが途中で外れた場合にGrenCrystal AnimationClipが解除されCrystalIdleへと戻ります。

・GreenCrystal Animation

 このアニメーションでは最初の無色透明のクリスタルを緑色のクリスタルに時間をかけて変化させます。

 f:id:Holomoto-Sumire:20200111180115j:plain

 無色透明のクリスタルと前回作成した緑のクリスタルのMaterialの違いは主に以下の点です。

 ・[Albedo]のカラー

 ・[Refractive Index]の値

 ・[Rim Light]のカラー

 ・[RimPower]の値

 これらのパラメータをAnimarionのパラメータとしてセットします。

 マテリアルのアニメーションに関しては以前の記事を参考にしてください。 

redhologerbera.hatenablog.com

 今回はそれぞれ以下のパラメータをセットしました。

 ・[Albedo]のカラー ⇒[カイバークリスタル : MeshRenderer.Material._Color]

 ・[Refractive Index]の値 ⇒[カイバークリスタル :MeshRenderer.Material._Refractive Index]

 ・[Rim Light]のカラー ⇒[カイバークリスタル :MeshRenderer.Material._Rim Color]

 ・[RimPower]の値 ⇒[カイバークリスタル :MeshRenderer.Material._Rim Power]

〇AnimationControllerで遷移条件を設定する。

 前回と合わせここまでで

 ・Hand Rayのカーソルがクリスタルに当たった場合アニメーションの遷移を実行する

 ・Materialを変更するアニメーションを作成する

 が完了しています。

 次に遷移条件を設定します。

 前回設定した[Theme]の[InteractableAnimatorTheme]の[State Properties]の[Forcus]を[Focue]へと変更します。

f:id:Holomoto-Sumire:20200111181847j:plain

 次に[AnimatorWindow]から[Property]タグを開き[+]アイコンから[Trigger]を追加します。

 f:id:Holomoto-Sumire:20200111182135j:plain

 新しいトリガーが作られるので、名前を[InteractableAnimatorTheme]の[State Properties]の[Forcus]に設定した[Focue][と同じに設定します。

 f:id:Holomoto-Sumire:20200111182535j:plain

 [CrystalIdel]上で右クリックして[Make Transition]を選択します。すると[CrystalIdel]から矢印が伸びるので[GreenCrystal]と結びます。

f:id:Holomoto-Sumire:20200111183026j:plain

 作成した矢印を選択し[inspector]から次の変更を行います。

 ①[Has Exit Time]のチェックボックスからチェックを外す。 これはアニメーション終了の時間です。今回は時間ではなくTriggerで行うためチェックを外します。

 ②[Settings]の[Transition Duration (s)]の値を0にする。 この値は生物学的や自然な動きを行う際に前のアニメーションが完全に終了してから次のアニメーションを行うのではなく、クロスフェードさせる時間の設定です。 今回はその必要がないため0に設定しました。

 ③[Conditions]の[+]から使用するTriggerを設定する。

 f:id:Holomoto-Sumire:20200111185046g:plain

 これでカイバークリスタルにHand Rayのカーソルが当たった場合GreenCrystalのアニメーションが実行されます。

 仕上げとして途中でカイバークリスタルからHand Rayのカーソルがそれた…つまりフォースを使う集中力が途切れた場合の処理も行います。

 [Theme]の[InteractableAnimatorTheme]の[State Properties]の[Default]に設定されている名前をAnimationの新しいtoggleとして設定します。

 f:id:Holomoto-Sumire:20200111185712j:plain

 Focus同様にGreenCrystalからCrystalIdelに矢印を結び遷移条件に[Default]というTriggerを設定します。

 これで途中でHand Rayがクリスタルからそれた場合、つまりフォースに集中できなかった場合クリスタルは元の無色透明になってしまいます。 

f:id:Holomoto-Sumire:20200111185831j:plain 完成したものが以下になります。

youtu.be