本日はHoloLensの表現実験枠です。
先日より調査しているステンシルを使用した表現を試していきます。
〇HoloLens 2022年アドベントカレンダー
HoloLens 2022年アドベントカレンダーはQiita上で私の師であるがち本さんが開催している企画です。
クリスマスまで毎日記事を埋めていくことが目的で本日は10日目の記事になります。
〇手で穴をあける
①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
ステンシルの解説は過去の記事を参考ください。
ここで重要なものがCull ModeをFrontに変えている点です。
これはShader側でメッシュの裏表の描画の設定で、Frontに設定することで表面がカリングされ裏面が描画されるようになります。
③Sphereの親オブジェクトになるようにからのゲームオブジェクトを作成します。(ここではholeと名前を付けています。)
④holeに次のコンポーネントを追加します。
・SolverHandler
・HandConstraint
・HandBounds(HandConstraintをアタッチすると自動で追加されます。)
SolverHandlerはMRTKで提供されているコンポーネントで手や頭部などデバイスの位置をトラッキングできるコンポーネントです。
HandConstraintはSolverHandlerとセットで使用することでこのオブジェクトをSolverHandlerでトラッキングしているポイントに追従させることができます。
⑤SolverHandlerのTracked Target TypeをHand Jointに設定し、Tracked HandnessをRightにしています。
これによって右手にSphereが追従するようになります。
⑥Sphereの大きさを0.3に変更します。
これでちょうどいい大きさになりました。
〇実機で確認
手に合わせてポータルをあけることができましたが、現状常に見えている状態ですので、ポータルとは言えないため次回SpatialMeshのシェーダーを使用した穴の開け方をトライしてみます。
筆者自身MRGTにこだわっていたところもあるので様々な視点からトライしていきたいです。