夜風のMixedReality

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

HoloLensでファンタジーな世界を作る プラズマボールその2

本日はファンタジー枠です。

昨日からHoloLensのHandTrackingを使用したプラズマボールを作成しています。

今回はインターネットマーケットの[Booth]で公開、販売されている[Energy Springjoint Ball by Raivo]を用いています。

booth.pm

前回はURPで使用できるようにShaderを編集しています。

redhologerbera.hatenablog.com

今回はHandTrackingへの対応を行います。

〇作ったもの

www.youtube.com

〇環境

・Unity2021.1.10f1

・UniversalRP

・Energy Springjoint Ball by Raivo

〇プラズマボールを動かす。

[Energy Springjoint Ball by Raivo]はトランスフォームを変更するとまるでばねのように元の位置に戻るようになっています。

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

[Energy Springjoint Ball by Raivo]のオブジェクトのインスペクターウィンドウを見ると[Spring Joint]コンポーネントによってばねの動きが再現されています。

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

[Spring Joint]コンポーネントでは[Connected Body]の設定によって親となるオブジェクトを指定できます。

このオブジェクトは[Rigidbody]コンポーネントが存在する必要があります。

[Rigidbody]コンポーネントがアタッチされたからのゲームオブジェクトの子オブジェクトとしてボールを配置します。

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

親オブジェクトの[Rigidbody]コンポーネントからは[Use Gravity]のチェックを外し重力としての使用を無効化します。

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

以上でプラズマボールを動かすことができるようになりました。

〇HandTrackingとの連携

①からのゲームオブジェクトを作成し、以下のコンポーネントをアタッチします。

・HandBounds

・SolverHandler

・HandConstractPlamUp

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

②[SolverHandler]コンポーネントの[Tracked Target Type]を[Hand Joint]、[Tracked Handness]を[Right]、[Tracked Hand Joint]を[Palm]に設定します。

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

これで右手のHandTrackingの中でPalm(手の甲)が追尾されるようになります。

③[HandConstractPlamUp]コンポーネントの[OnFirstHandDetected()]イベントにボールの出現するように各ゲームオブジェクトを有効、もしくはエフェクトをPlay()に指定、[OnFirstHandLost()]に各ゲームオブジェクトを無効、もしくはエフェクトをStop()に指定します。

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

これで手を検知した際プラズマボールが手に追従するようになります。また、手の検知を失った場合プラズマボールが焼失します。

④[HandConstractPlamUp]コンポーネントの[Palm Up]の[Require Flat Hand]にチェックを入れ有効化します。これによって手のひらを顔に向け手を開いた場合のみプラズマボールが出現するようになります。

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

以上でプラズマボールが完成しました。