Mask Effect 2D エフェクトを使用する

Mask Effect 2D エフェクトを使用して、2Dノードにマスクを適用します。

../../_images/mask-effect-2d-large.png

2Dノードのマスク効果を作成する

2Dノードにマスク効果を作成するには:

  1. Library Alt を押しながら右クリック Effects で、Mask Effect 2D を選択します。

    ../../_images/create-mask-effect-2d.png
  2. Node Tree または Prefabs で、マスク効果を適用したい2Dノードを作成します。

    ../../_images/image-in-node-tree.png ../../_images/image-in-preview1.png
  3. Library > Effects > 2D Effects から Mask Effect 2D エフェクトを Node Tree または Prefabs にドラッグし、マスクエフェクトを適用したい 2D ノードにドロップします。

    この方法で、その2Dノードに Effect Prefab プロパティを Mask Effect 2D エフェクトに設定します。

    ../../_images/drag-mask-effect-to-node.png ../../_images/mask-effect-prefab-set.png
  4. Library で Mask Effect 2D エフェクトを選択し、Properties で Mask Effect 2D プロパティを追加して設定します。

    ../../_images/mask-effect-2d-properties.png ../../_images/mask-effect-in-preview.png

    Mask Texture は、マスクとして使用したいテクスチャを設定します。

    マスクエフェクトを使用するには、このプロパティを設定する必要があります。

    ../../_images/mask-texture.gif

    Mask Width はマスクの幅を設定します。

    デフォルトで、マスクの幅は、Mask Texture として設定したテクスチャの幅です。

    ../../_images/mask-width.gif

    Mask Height はマスクの高さを設定します。

    デフォルトで、マスクの高さは、Mask Texture として設定したテクスチャの高さです。

    ../../_images/mask-height.gif

    Mask Horizontal Alignment はマスクの水平配置を設定します。

    • Left はマスクの左端をノードの左端に揃えます。これはデフォルトの値です。

    • Right は、マスクの右端をノードの右端に揃えます。

    • Center はマスクをノードの中央に水平に配置します。

    • Stretch は、マスクを水平方向に伸ばして、ノードの左端から右端までフィットさせます。

    ../../_images/mask-horizontal-alignment.gif

    Mask Vertical Alignment はマスクの垂直配置を設定します。

    • Top は、マスクの上端をノードの上端に揃えます。これはデフォルトの値です。

    • Bottom は、マスクの下端をノードの下端に合わせます。

    • Center はマスクをノードの中央に垂直に配置します。

    • Stretch は、マスクを垂直に伸ばしてノードを上端から下端までフィットさせます。

    ../../_images/mask-vertical-alignment.gif

    Mask Offset は、x軸およびy軸に沿ったマスクオフセットを設定します。

    Kanzi は、このプロパティを Mask Stretch、Mask Horizontal Alignment、Mask Vertical Alignment、および Mask Scale プロパティの後に適用します。

    ../../_images/mask-offset.gif

    Mask Scale はマスクをスケールするための係数を設定します。

    Kanzi は、このプロパティを Mask Stretch、Mask Horizontal Alignment、および Mask Vertical Alignment プロパティの後に適用します。

    ../../_images/mask-scale.gif

    Use Screen Space は、マスクを画面に対して相対的にレイアウトするかどうかを設定します。

    デフォルトで、Kanzi はマスクエフェクトを使用するノードに対して相対的にマスクをレイアウトします。

    ../../_images/mask-screen-space.gif

    Mask Stretch はマスクのストレッチモードを設定します。

    • None はマスクをストレッチしません。

    • Fill はマスクをストレッチしてノードを埋めるようにします。

    • Uniform は、垂直方向または水平方向のいずれかでノードを埋めるために、より小さいスケールを必要とする方向に均一なスケーリングを使用してマスクを拡張します。

    • Uniform To Fill は、垂直方向または水平方向のいずれかで、より大きなスケールが必要な方向にノードを埋めるために、均一なスケーリングを使用してマスクを拡張します。

    • Repeat はマスクをストレッチしませんが、Mask Texture として設定したテクスチャ内の Wrap Mode プロパティの値に基づいて、その領域の外でマスクを繰り返すことができます。

    ../../_images/mask-stretch.gif

    Mask Channel は、マスクの入力として使用したい Mask Texture のチャンネルを設定します。

    • Alpha はテクスチャからアルファチャンネルを使用します。これはデフォルトの値です。

    • Red はテクスチャの赤色チャンネルを使用します。

    • Green はテクスチャの緑色チャンネルを使用します。

    • Blue はテクスチャの青色チャンネルを使用します。

    • Luminance は、赤、緑、青の色チャンネルから計算された輝度値を使用します。

    ../../_images/mask-channel.gif

    Invert Mask は、マスクを反転させて、マスク内の透明な領域を不透明にし、逆にするかどうかを設定します。

    ../../_images/invert-mask.gif

    Mask Strength は、マスクの強度を0から1の範囲で設定します。

    • マスク効果を完全に適用するには、値1を使用します。これはデフォルトの値です。

    • マスクされていない結果と完全にマスクされたバージョンをブレンドするようにマスクを部分的に適用するには、0から1の間の値を使用します。

    • マスク効果を無効にするには、値を0にします。

    ../../_images/mask-strength.gif

マスクエフェクトのインスタンスをカスタマイズする

Library > Effects でエフェクトのプロパティを編集すると、そのエフェクトを使用するすべてのノードの外観が変更されます。エフェクトのプロパティ値をオーバーライドすることで、各エフェクトインスタンスをカスタマイズできます。例えば:

  • Shadow Effect 2D エフェクトを作成する際、そのエフェクトの異なるインスタンスで影の柔らかさを変えることができます。

  • Mask Effect 2D エフェクトを作成する際、そのエフェクトの異なるインスタンスでマスクのサイズを変えることができます。

  • Blur Effect 2D エフェクトを作成する際、そのエフェクトの異なるインスタンスでぼかしの量を変えることができます。

  • Outline Effect 2D エフェクトを作成する際、そのエフェクトの異なるインスタンスでアウトラインの色を変えることができます。

エフェクトのインスタンスをカスタマイズするには:

  1. エフェクトを作成し、ノードをそれに使用するように設定します。

    例えば、Shadow Effect 2D エフェクトを作成し、Image ノードにそれを使用するように設定します。2Dノードにシャドウ効果を作成する を参照してください。

    ../../_images/effect-prefab-property-set.png ../../_images/image-in-preview-w-shadow.png
  2. エフェクト内のプロパティをカスタマイズする:

    1. Library で、作成したエフェクトを選択します。カスタマイズしたいプロパティの隣にある Properties で、image-publish-property をクリックします。

      Kanzi Studio はそのプロパティからカスタムプロパティを作成し、それをエフェクトプレハブのルートに追加し、2Dエフェクト内のプロパティに ##Template バインディングを作成します。

      例えば、Shadow Blur Radius プロパティの隣にある image-publish-property をクリックします。Kanzi Studio はカスタム Shadow Blur Radius プロパティを作成し、それをルートエフェクトプレハブに追加し、Shadow Effect 2D エフェクトプレハブ内にカスタム Shadow Blur Radius プロパティへの ##Template バインディングを作成します。

      ../../_images/properties-publish-shadow-blur-radius.png ../../_images/properties-shadow-blur-radius-template-binding.png
    2. Node Tree または Prefabs で、作成したエフェクトを使用する2Dノードを選択します。Properties で、カスタマイズしたプロパティの横にある image-add-property をクリックし、プロパティの値を設定します。

      Kanzi Studio は2Dノードに To Source バインディングを追加し、そのプロパティの値をノードの Node2D.Effect プロパティを通じて利用可能なエフェクトインスタンスにプッシュします。

      複数の2Dノードに同じエフェクトを設定することができ、各2Dノードでプロパティを追加して異なる値を設定することができます。

      例えば、Properties で、Shadow Effect 2D Properties > ShadowEffect2D.BlurRadius プロパティを追加し、Image ノードでのみ影の柔らかさを調整するために使用します。

      ../../_images/properties-shadow-effect-2d-blur-radius.png ../../_images/preview-shadow-effect-2d-blur-radius.png
  3. (オプション) カスタマイズしたい各エフェクトプロパティに対して、前のステップを繰り返します。

    ヒント

    ノードからプロパティとその To Source バインディングを削除したい場合は、そのプロパティを右クリックして Remove Property And Binding を選択します。

APIで Mask Effect 2D エフェクトを使用する

マスク効果を作成するには、

// Create an effect template.
NodeEffectTemplate2DSharedPtr maskEffectTemplate =
    NodeEffectTemplate2D::create(MaskEffect2D::getStaticMetaclass()->getName(), "MaskEffect");

// Set the value of the MaskProperty in the template.
// The MaskProperty defines the mask texture which you must set before you can use the mask effect.
TextureSharedPtr maskTexture = acquireMaskTexture(getDomain());
maskEffectTemplate->addPropertyValue(MaskEffect2D::MaskProperty, Variant(maskTexture));

// Create a mask effect prefab.
NodeEffectPrefab2DSharedPtr maskEffectPrefab =
    NodeEffectPrefab2D::create(getDomain(), "MaskEffect prefab", maskEffectTemplate);

// Assign the mask effect to a 2D node.
node2d->setEffectPrefab(maskEffectPrefab);

// Get the node-specific effect instance created from the assigned prefab.
MaskEffect2DSharedPtr maskEffect = dynamic_pointer_cast<MaskEffect2D>(node2d->getEffect());

// Set the mask stretch mode to uniform.
maskEffect->setStretch(MaskEffect2D::Stretch::Uniform);

詳細については、MaskEffect2D クラスを参照してください。

関連項目

2Dノードのエフェクト

Blur Effect 2D エフェクトを使用する

Outline Effect 2D エフェクトを使用する

Shadow Effect 2D エフェクトを使用する

複数のエフェクトの使用

2Dノードの外観の調整

ブラシの使用

レンダリング