MixedRealityToolKit(以下MRTK)にはExamplesというデモサンプル集が含まれています。
Examplesを理解すればMRTKの機能の使い方を学習することやノンコーディングでのアプリ開発が可能になります。
今回は 前回に引き続きStanderdshaderのOutlineExamples 見ていきます。
前回の記事はこちらです。 redhologerbera.hatenablog.com
〇シーン解説
sceneにはCube,Sphere,宇宙船(Lander)、ドーナツのオブジェクトがあります。 今回は宇宙船、ドーナツを見ていきます。 Cube Sphereに関しては前回の記事を見てください。
・Landerオブジェクト
宇宙船のような見た目のオブジェクトです。 Landerという名前の親オブジェクトの子オブジェクトとして宇宙船を構成するパーツが並んでいます。
また、Cube同様各オブジェクトにMeshOutline.csがアタッチされており、Sphereとは異なり、各オブジェクトごとにアウトラインが機能する仕組みになっています。
ここで注目する点が MeshOutline.csがディアクティブ(有効化されていない)である点です。
Landerオブジェクトでは、『カーソルが当たった時』のみアウトラインが表示されます。 この『カーソルが当たった時』に関するイベントがMeshOutlineの一つ上にアタッチされているForcusHandler.csです。
OnForcusEnterEvent()のイベントはカーソルがオブジェクトに当たった時、OnForcusExitEvent()はカーソルがオブジェクトから外れたとき呼ばれるイベントで、ここではMeshOutline.csの有効、無効を切り替えています。
これによってカーソルが当たった時のみ当たった場所のOutlineが表示される仕組みになります。
・Torusオブジェクト
Torusオブジェクト(ドーナツ)はMeshOutline.csを用いない方法でOutlineを実現しています。 もともとMeshOutlineはオブジェとのMeshRendererにoutline用のMaterialを追加し、Outline Widthの値に対応してVertexExtrusionValueを変更し、Outlineを行っていましたが、Torusオブジェクトは最初からMeshRendererにOutline用のMaterialが設定されています。
MeshRendereのSizeが2に設定されOutline用のMaterialがセットされています。
透明なオブジェクトをVertexExtrusionによって展開してMeshSmoother.csで平滑化して、RimLightのカラーとPowerによってOutlineを実現しています。