夜風のMixedReality

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

MixedRealityToolKit v2 Examplesを触ってみる OutlineExamples その②

 MixedRealityToolKit(以下MRTK)にはExamplesというデモサンプル集が含まれています。

 Examplesを理解すればMRTKの機能の使い方を学習することやノンコーディングでのアプリ開発が可能になります。

 今回は 前回に引き続きStanderdshaderのOutlineExamples 見ていきます。


OutLineExample

 前回の記事はこちらです。   redhologerbera.hatenablog.com

〇シーン解説

   sceneにはCube,Sphere,宇宙船(Lander)、ドーナツのオブジェクトがあります。    今回は宇宙船、ドーナツを見ていきます。    Cube Sphereに関しては前回の記事を見てください。

・Landerオブジェクト


 宇宙船のような見た目のオブジェクトです。    Landerという名前の親オブジェクトの子オブジェクトとして宇宙船を構成するパーツが並んでいます。

 f:id:Holomoto-Sumire:20191119094818j:plain

 また、Cube同様各オブジェクトにMeshOutline.csがアタッチされており、Sphereとは異なり、各オブジェクトごとにアウトラインが機能する仕組みになっています。

 ここで注目する点が MeshOutline.csがディアクティブ(有効化されていない)である点です。

 f:id:Holomoto-Sumire:20191119095430j:plain

 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が設定されています。

 f:id:Holomoto-Sumire:20191119103947j:plain

 MeshRendereのSizeが2に設定されOutline用のMaterialがセットされています。

 f:id:Holomoto-Sumire:20191119110020j:plain


OutlineExamples

 透明なオブジェクトをVertexExtrusionによって展開してMeshSmoother.csで平滑化して、RimLightのカラーとPowerによってOutlineを実現しています。