夜風のMixedReality

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

HoloLens 2で腕時計を作る その①

本日はHoloLens 2の表現の調査枠です。

HoloLens 2ではHandTracking の機能により両手50点のTrackingが可能です。

今回はHandTrakicngを応用して腕時計を作成します。

〇作ったもの

youtu.be

右腕(筆者が普段右手に腕時計を付けるので)にリング上で時計が表示されます。

〇腕時計の作成

 今回Boothより次の元怒の扉さんのShaderを使用させていただいています。

booth.pm

 準備としてダウンロードした[HologramArmbandShader]をUnityにインポートします。

 ①[Sphere]オブジェクトを作成し、[HologramArmbandShader]のマテリアルをアタッチします。

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

 ②マテリアルの画像として次の画像を作成しました。

 f:id:Holomoto-Sumire:20201108194439p:plain

 これでリング状のオブジェクトが完成しました。

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

・手の検知

手の検知は[HandBounds]コンポーネント、[SolverHandler]コンポーネント[HandConstraint]コンポーネントで行います。

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

これは[HandMenu]の機能とも共通しています。

[SolverHandler]コンポーネントの[Tracked Target Type]ではどの部位を検知するかを指定します。

ここではHeadなど手以外の部位を指定することもできます。 今回は手を取得するので[Hand Joint]を指定します。

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

[Tracked Handness]では右手、左手、両手のどちらの手を取得するかを指定します。

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

[Tracked Hand Joint]はどのHand Jointを取得するかを指定します。 今回腕時計を作りたいので手首(Wrist)を指定します。

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

これで手を検知することができます。

 次に検知した状態に応じてオブジェクトを追随する機能として[HandConstraint]コンポーネントを使用します。

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

 ここでは手を検知した際に発火するイベントの[On First Hand Detected()]で上記で作成したリストのオブジェクトを表示、手を見失った際に発火するイベントの[On Last Hand Lost()]で非表示にすることで手が検知できているときのみ表示するように設定しました。

これを実機で動かします。

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

以上で手に沿ってリングが現れました。

時計の機能は後日実装します。