夜風のMixedReality

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

MixedRealityToolKit v2 Examplesを触ってみる ClippingExamples

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

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

 今回は UX/StandardShader/ClippingExamplesを見ていきます。


HoloLens ClippingExample

〇デモシーンの概要

 このデモシーンでは MRTK StandardShaderをClipping primitive(ClippingPlane,ClippingSphere,ClippingBox)と組み合わせて心臓のオブジェクトをクリッピングしています。

 ClippingPlane,ClippingSphere,ClippingBoxに関しては過去の記事を参考にしてください。

redhologerbera.hatenablog.com

 〇シーンの解説


ClippingExamples

 シーン内には二つのクリスタルのようなキューブ、球体と心臓の3Dオブジェクトがあります。

 ジェスチャーを使ってキューブ、球体を移動させ心臓のオブジェクトにめり込ませると、キューブ、球体の部分のみ心臓のオブジェクトがClipping(切り取り)されます。

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

 概要でも触れていますが、キューブ、球体にはそれぞれClippingBox.cs,ClippingShere.csがアタッチされていて、Rendererに心臓のオブジェクトのメッシュであるnode_id30というオブジェクトが設定されています。

 ClippingPlane,ClippingShere,ClippingBoxの使い方は次のようになります。

〇ClippingPlane,ClippingShere,ClippingBoxの使い方

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

 実にシンプルです。

 RenderersのSizeにClippingしたいメッシュの数を設定。

 Sizeに対応してElementにClippingしたいメッシュを設定。

 これだけでClippingを行うことができます。

 またClipping SideはInside、Outsideの二種が設定でき、Clipping○○.csがアタッチされたオブジェクトの内側、外側どちらをClipingするかを設定できます。

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

 例えばここの設定をOutsideに変更すると上の図のようにClippingShereが機能する球体の内部だけがClippingされます。

 また Use on pre RenderのチェックボックスでカメラのOnPreRenderイベントを用いるかを設定することができます。

〇心臓オブジェクト側の設定

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

 Clipping自体はClippingBox,Shere,Planeで行うことができますが、心臓オブジェクト側にもClippingに関する設定を行うことができます。

 オブジェクトに設定されているMRTK StandardShaderにはClopping Borderという設定項目があり、ここでClippingされた際のBorderの色とその大きさに関して設定することができます。 


ClippingExamples

 

 このシーンでは心臓という人の臓器に対しClippingで切り取りなかのロゴを見ましたが、オブジェクトにこだわればユーザーが自由に中をのぞける人体模型なども作ることができそうです。

 またSpatialMappingのメッシュと組み合わせて建築の場などで現実の壁にClippingオブジェクトを当てることでSpatialMappingのメッシュがClippingされてパイプラインや配線などが見えるという使い方もできそうです。