夜風のMixedReality

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

Unity MRTKシェーダー、MRGTシェーダーで最前面描画を行う。

本日はMRTK枠および小ネタです。

Unityでアプリケーションを開発するうえで通常はカメラに対しての奥行で、奥から上書きされるように描画が行われることで、通常の物理空間同様に近くにあるオブジェクトほどほかのオブジェクトと重ならない見た目になります。

よくある状況として物理的に遠くにあるオブジェクトをほかのオブジェクトで隠れずに手前に描画したいというものがあります。

 今回はMRTKおよびその後継に当たるMRGTのシェーダーを使用して最前面描画を行います。

〇MRTK/MRGTシェーダーで最前面描画を行う

今回は画像のような視野角を可視化するオブジェクトを作りました。

これはユーザーの頭に沿って追従し、2m先に表示されるようになっています。

この状態では2m以内に別のオブジェクトがある場合隠れて描画されなくなってしまいます。

今回この枠を最前面表示します。

①枠にMixed Reality Toolkit/Standardシェーダーを適応します。

なおGraphicsTools/Standardシェーダーでも全く同様に機能します。

Rendering ModeCustomに切り替えます。

MRTKStandardシェーダー(MRGTStandardシェーダー)ではCustomを使用することで様々な描画設定を行うことができます。

redhologerbera.hatenablog.com

Depth TestDisabledに変更します。

以上で最前面描画が行えます。

Depth Testは深度テストとも呼ばれ奥行によるたオブジェクトとのピクセルのオクルージョン(塗りつぶし)の比較を行う設定で、Disabledは無効を意味するため、奥行比較を無視することができます。

これによってオブジェクトが手前にあるほかのオブジェクトに遮られずに最前面描画が行われます。

本日は以上です。