夜風のMixedReality

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

MixedRealityGraphicsToolsでアウトラインをつける

本日はMRGT枠です。

〇MixedRealityGraphicsToolsとは?

MixedRealityGraphicsTools(MRGT)はHoloLensやMetaQuestをはじめとしてxRアプリケーション開発に役立つツールキットであるMixedRealityToolkitの最新版MRTK3で提供されるパッケージの一つで、グラフィックの機能がまとめて提供されています。

〇アウトライン

 アウトラインはグラフィックの表現の一つで、オブジェクトの輪郭部に表示されるラインを指します。

これは効果的に使用することで、UXの向上が期待できます。

 例えばユーザーが手を伸ばした際にだけアウトラインが表示されるなどの使用では、ユーザーは手を使ってオブジェクトに対して何らかのインタラクティブを持った動作が可能であることを知覚します。

 MRGTではこのアウトラインを簡単に表現する方法が提供されています。

〇MRGTのアウトラインの付け方

①アウトラインをつける対象を用意します。今回はUnity PrimitveのCubeを使用します。

 このアウトラインが付く対象のオブジェクトにMRGT関連のシェーダーを持っている必要がありません。

②CubeのインスペクターウィンドウからMeshOutlineコンポーネントをアタッチします。

これはMRGTで提供されているコンポーネントになります。

③次にGraphics Tools/Standardのシェーダーのマテリアルを作成します。

④マテリアルパラメータのうち次の項目を修正します。

・Cull Mode = Front

・Light Mode = Unlit

・Vertex Extrusion =オン

Vertex ExtrusionのExtrusion Valueの値は0のままで大丈夫です。

ここで開設するとCull ModeFrontに設定することでメッシュの裏側面が描画されます。

 裏面が描画されている状態でVertex Extrusionの機能によってメッシュの法線方向にメッシュが展開されます。

 

 この時、MeshOutlineコンポーネントによってCubeのマテリアルにマテリアルスロットが追加されアウトライン用のマテリアルがアタッチされます。

MeshOutlineコンポーネントのOutline Materialに作成したアウトライン用のマテリアルをアタッチします。

 ここでOutline Widthの値分Vertex ExtrusionExtrusion Valueの値に代入されます。

 つまり法線方向の展開量になります。

〇アウトラインが破断する場合

 場合によっては法線方向にメッシュを展開しているためアウトラインに破断が生じることがあります。

 このような時はGraphicsTools/StandardシェーダーのVertex Extrusion*からUse Smooth Normals**にチェックを入れます。

これによって破断なくアウトラインが表示されるようになりました。

以上でMRGTを使用してアウトラインをつけることができました。