夜風のMixedReality

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

MixedRealityToolKit v2 Examplesを触ってみる Standerdshader/MaterialGallery その⑦

 これまでMRTKv2のStanderdShader/MaterialGalleryデモシーンを見ていきました。

 今回はその最終回です。

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

 今回見ていくのはClippingPlaneClippingSphereClippingBoxという三つのオブジェクトです。

〇ClippingPlane


MaterialGallery ClippingPlane

 ClippingPlaneオブジェクトはまるで医療用CTやMRIを撮った時のようにAnimationによってオブジェクトの断面が変化しています。

 ShaderBallオブジェクトの子オブジェクトとしてAnimatorというAimationがアタッチされたオブジェクトの子オブジェクトにClippingPlaneオブジェクトがあります。  

 Clippingとは切り取ることなのでこのオブジェクトで行っているのはAnimatorオブジェクトのAnimationがClippingPlaneオブジェクトを動かし、ShaderBallオブジェクトをClippingしています。

 ではInspectorから中身を見ていきます。

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

 ClippingPlaneを見てみるとPlaneという名前ではありますが、MeshRendererやColliderなどはなく、ただClippingPlaneというスクリプトがアタッチされています。

 ClippingPlane.csはMixedRealityToolKitExamplesではなくMixedRealityToolKit/Utilites/ShanderdShaderにあるようです。

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

 Renderersの設定項目があり、ShaderBallとShaderBallInnerの二つのMeshRendererが設定されています。

 どうやらClippingPlane.csは独自の大きさを持ち、Renderersに設定したMeshと接触した場合Clipping Sideに設定された向きに(InsideかOutsideか)Clippingを行っているようです。

 ここではShaderBallオブジェクトという灰色のオブジェクトと、ShaderBallInnerというオレンジのオブジェクトがあり、それぞれCull ModeがFront,Backと別れており、外部を描画する灰色のオブジェクトと内部を描画するオレンジのオブジェクトで断面を表現しています。

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

ClippingSide Inside

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

ClippingSide Outside

 また、ClippingPlaneは向きと大きさを持つため、ClippingSideだけでなくScaleやTransformを変更することで任意の向きにClippingすることが可能です。

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

ClippingSideはOutsideのままでZ軸でオブジェクトを回転させた

  ClippingはShaderの設定ではなくMRTKStanderdShaderが設定されているMaterialが設定されているオブジェクトのMesh RendererをClippingPlane.csで設定することによって行っているようですが、MRTKStanderdShaderにもClippingに関する設定項目があります。 

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

 Clipping Borderという設定ですが、どうやらここはClippingされた際の断面からの光の色と大きさの設定のようです。

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

 Widthがその名の通りBorderの大きさ、Colorが色になるようです。

ClippingSphere


MaterialGallery ClippingSphere

 ClippingSphereはClippingPlaneと同様の仕組みですが、Planeではなくその名の通りSphere(球体)でClippingを行っています。

  AnimationでClippingPlane同様ClippingSphere.csがアタッチされたオブジェクトを動かしているようです。

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

  ClippingShereの使い方はClippingPlane同様ですが、Planeと違いShereの場合面が立体に閉じているため、Clipping SideをOutsideに変更することで面白い効果を引き出せます。


MaterialGallery ClippingShere Test

ClippingBox


MaterialGallery ClippingBox

 こちらも今までの2つと同様で今度はBoxのバージョンです。

 違いはClippingBox.csがアタッチされていることです。

 また、ClippingBoxオブジェクトはClippingShereオブジェクト、ClippingPlaneオブジェクトと異なり内部を描画するためのInnerのオブジェクトがなく、Cull ModeがOffとなっていることで表面も裏面も一つのオブジェクトで描画しています。

 

 今回までMaterialGalleryというMixedRealityToolKit v2 ExamplesのStanderdShaderにかかわるデモシーンを見ていきました。

 オブジェクトの数も多く一つ一つ見てくことは大変でしたが、MixedRealityToolkit StanderdShaderはUnlitやClipping等UnityのStanderdShaderでは別々のShaderに分けられているものが一つのStanderdShaderにまとめられていて使いやすく感じます。

 次回公式ドキュメントを和訳しながら理解を深め実践編を行ってみたいと思います。