本日はMRTK3調査枠です。
現在GraphicsToolsを読み解いています。
今回はGraphicsTools/StandardシェーダーのサンプルであるMaterialGalleryサンプルシーンからClippingBoxを見ていきます。
〇ClippingBox
ClippingBoxは画像のように球体を任意にくりぬく表現です。

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

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

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

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

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


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


また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
{
...
}
ClippingBoxはClippuingPrimitiveクラスの継承クラスであり、立方体領域内でのピクセル単位でのクリッピングを可視化するコンポーネントになっています。
[ExecuteInEditMode]アトリビュートが付いていることで、UnityEditor上でもスクリプトが駆動するようになっています。
次回以降でもう少しClippingBox内でどのような処理が行われているのかを追っていきます。