夜風のMixedReality

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

HoloLensで床や壁に穴を変える。 その④ 手で穴をあける HoloLensアドベントカレンダー2022年 10日目

本日はHoloLensの表現実験枠です。

先日より調査しているステンシルを使用した表現を試していきます。

〇HoloLens 2022年アドベントカレンダー

 HoloLens 2022年アドベントカレンダーはQiita上で私の師であるがち本さんが開催している企画です。

 クリスマスまで毎日記事を埋めていくことが目的で本日は10日目の記事になります。

qiita.com

〇手で穴をあける

①UnityプリミティブSphereを配置します。

②MRGTShaderのマテリアルを作成しSphereにアタッチします。

・RenderingMode =Custom

・Mode = Fade

・Depth Write = Off

・Cull Mode = Front

・LightMode = Unlit

・Render Queue Overiide = 1998

・Enable Stencil Testing = on

・Stencil Comparison =Always

・Stencil Operation = Replace

ステンシルの解説は過去の記事を参考ください。

redhologerbera.hatenablog.com

ここで重要なものがCull ModeをFrontに変えている点です。

これはShader側でメッシュの裏表の描画の設定で、Frontに設定することで表面がカリングされ裏面が描画されるようになります。

redhologerbera.hatenablog.com

③Sphereの親オブジェクトになるようにからのゲームオブジェクトを作成します。(ここではholeと名前を付けています。)

④holeに次のコンポーネントを追加します。

・SolverHandler

・HandConstraint

・HandBounds(HandConstraintをアタッチすると自動で追加されます。)

SolverHandlerはMRTKで提供されているコンポーネントで手や頭部などデバイスの位置をトラッキングできるコンポーネントです。

HandConstraintSolverHandlerとセットで使用することでこのオブジェクトをSolverHandlerでトラッキングしているポイントに追従させることができます。

SolverHandlerTracked Target TypeHand Jointに設定し、Tracked HandnessRightにしています。

これによって右手にSphereが追従するようになります。

⑥Sphereの大きさを0.3に変更します。

これでちょうどいい大きさになりました。

〇実機で確認

youtu.be

手に合わせてポータルをあけることができましたが、現状常に見えている状態ですので、ポータルとは言えないため次回SpatialMeshのシェーダーを使用した穴の開け方をトライしてみます。

 筆者自身MRGTにこだわっていたところもあるので様々な視点からトライしていきたいです。