本日はMRTK枠および小ネタです。
Unityでアプリケーションを開発するうえで通常はカメラに対しての奥行で、奥から上書きされるように描画が行われることで、通常の物理空間同様に近くにあるオブジェクトほどほかのオブジェクトと重ならない見た目になります。
よくある状況として物理的に遠くにあるオブジェクトをほかのオブジェクトで隠れずに手前に描画したいというものがあります。
今回はMRTKおよびその後継に当たるMRGTのシェーダーを使用して最前面描画を行います。
〇MRTK/MRGTシェーダーで最前面描画を行う
今回は画像のような視野角を可視化するオブジェクトを作りました。
これはユーザーの頭に沿って追従し、2m先に表示されるようになっています。
この状態では2m以内に別のオブジェクトがある場合隠れて描画されなくなってしまいます。
今回この枠を最前面表示します。
①枠にMixed Reality Toolkit/Standardシェーダーを適応します。
なおGraphicsTools/Standardシェーダーでも全く同様に機能します。
②Rendering ModeをCustomに切り替えます。
MRTKStandardシェーダー(MRGTStandardシェーダー)ではCustomを使用することで様々な描画設定を行うことができます。
③Depth TestをDisabledに変更します。
以上で最前面描画が行えます。
Depth Testは深度テストとも呼ばれ奥行によるたオブジェクトとのピクセルのオクルージョン(塗りつぶし)の比較を行う設定で、Disabledは無効を意味するため、奥行比較を無視することができます。
これによってオブジェクトが手前にあるほかのオブジェクトに遮られずに最前面描画が行われます。
本日は以上です。