夜風のMixedReality

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

MRTKのNearFade機能を応用してオブジェクトの一部が透明になる表現を実装する

本日はMRGT枠です。

MRGTのStandardShaderにはNearFade機能が搭載されています。

redhologerbera.hatenablog.com

この機能は基本的にマテリアルを使用しているオブジェクトとユーザー(カメラ)の距離に応じて透明になるという機能ですが、UseLightのオプションを使用することでMRGTのLightコンポーネントを使用しているオブジェクトに対してフェードを行うというような使い方ができます。

今回はこちらを使用したテクニックとして下の画像のようにオブジェクトの一部だけを透明にする方法を紹介します。

①一部を透明にしたいオブジェクトにGraphics Tools/Standardシェーダーを使用します。

今回はサンプルとしてプリミティブキューブを使用しています。

②マテリアルのプロパティからNearFadeおよびオプションのUse Lightにチェックを入れ有効化します。

③からのゲームオブジェクトを作成しHover Lightコンポーネントをアタッチします。

Radiusの値は0に設定します。

このからオブジェクトを先ほどのマテリアルをアタッチしたCubeに近づけることでNearFadeが働きます。

HoverLightコンポーネントはGraphicsToolsStandardシェーダーのパラメータからHoverLightの機能を有効にしている場合に初めて機能します。

今回は無効化していますがRadiusの値を0にしていることでもし機能を利用しているほかのマテリアルが存在していてたとしても影響を受けないように設定しています。

④キューブのマテリアルのRenderingTypeTransparentに変更します。

これによってフェードが機能するようになります。

以上でオブジェクトの一部が透明になる表現が実装できました。

この表現方法のデメリットとしてフェードはポリゴンごとに機能します。

これによってポリゴン数が小さいオブジェクトの場合きれいな描画が行われない可能性もあります。