夜風のMixedReality

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

MixedReality-GraphicsTools-Unityを触る その⑬ ClippingBox

本日はMRTK3調査枠です。

現在GraphicsToolsを読み解いています。

今回はGraphicsTools/StandardシェーダーのサンプルであるMaterialGalleryサンプルシーンからClippingBoxを見ていきます。

〇ClippingBox

ClippingBoxは画像のように球体を任意にくりぬく表現です。

ClippiungBoxは実際に描画されているShaderBallの子オブジェクトとしてAnimatorオブジェクトそしてClippingBoxオブジェクトがあります。

Animatorオブジェクトはその名の通り、アニメーターがアタッチされているだけのオブジェクトになります。

Animatorオブジェクトの子オブジェクトにはClippingBoxコンポーネントがアタッチされており、このコンポーネントがShaderBallオブジェクトのクリッピングを行っています。

 

 このClippingBoxコンポーネントをディアクティブ(非表示)にすることでクリッピングが行われなくなります。

ClippingBoxコンポーネントにはClipping SideのパラメータとしてOutsideInsideが選択でき、Insideにすることでクリッピングの領域が反転します。

 

このくりぬかれる領域は、ClippingBoxオブジェクトのTransformに依存しており、Scaleの大きさに依存しています。

xのスケールを小さくした場合

またClippingBoxオブジェクトにはRenderersのリストがあり、ここでクリッピングしたい対象のオブジェクトを指定します。

 /// <summary>
    /// Component to animate and visualize a box that can be used with 
    /// per pixel based clipping.
    /// </summary>
    [ExecuteInEditMode]
    [AddComponentMenu("Scripts/GraphicsTools/ClippingBox")]
    public class ClippingBox : ClippingPrimitive
    {
     ...
    }

ClippingBoxClippuingPrimitiveクラスの継承クラスであり、立方体領域内でのピクセル単位でのクリッピングを可視化するコンポーネントになっています。

docs.microsoft.com

[ExecuteInEditMode]アトリビュートが付いていることで、UnityEditor上でもスクリプトが駆動するようになっています。

次回以降でもう少しClippingBox内でどのような処理が行われているのかを追っていきます。