フィルター

Next2D Playerは、DisplayObjectに適用できる様々なビジュアルフィルターを提供しています。

フィルターの適用方法

const { Sprite } = next2d.display;
const { BlurFilter, DropShadowFilter, GlowFilter } = next2d.filters;

const sprite = new Sprite();

// 単一のフィルター
sprite.filters = [new BlurFilter(4, 4)];

// 複数のフィルター
sprite.filters = [
    new DropShadowFilter(4, 45, 0x000000, 0.5),
    new GlowFilter(0xff0000, 1, 8, 8)
];

// フィルターの削除
sprite.filters = null;

利用可能なフィルター

フィルター説明
BlurFilterぼかし効果
DropShadowFilterドロップシャドウ効果
GlowFilterグロー効果
BevelFilterベベル効果
ColorMatrixFilterカラーマトリックス変換
ConvolutionFilter畳み込み効果
DisplacementMapFilter変位マップ効果
GradientBevelFilterグラデーションベベル効果
GradientGlowFilterグラデーショングロー効果

BlurFilter

ぼかし効果を適用します。ソフトフォーカスからガウスぼかしまで作成できます。

const { BlurFilter } = next2d.filters;

new BlurFilter(blurX, blurY, quality);

プロパティ

プロパティデフォルト説明
blurXnumber4水平方向のぼかし量(0〜255)
blurYnumber4垂直方向のぼかし量(0〜255)
qualitynumber1ぼかしの実行回数(0〜15)

DropShadowFilter

ドロップシャドウ効果を適用します。内側シャドウ、外側シャドウ、ノックアウトモードなどのスタイルオプションがあります。

const { DropShadowFilter } = next2d.filters;

new DropShadowFilter(
    distance, angle, color, alpha,
    blurX, blurY, strength, quality,
    inner, knockout, hideObject
);

プロパティ

プロパティデフォルト説明
alphanumber1シャドウのアルファ透明度(0〜1)
anglenumber45シャドウの角度(-360〜360度)
blurXnumber4水平方向のぼかし量(0〜255)
blurYnumber4垂直方向のぼかし量(0〜255)
colornumber0シャドウの色(0x000000〜0xFFFFFF)
distancenumber4シャドウのオフセット距離(-255〜255ピクセル)
hideObjectbooleanfalseオブジェクトを非表示にするかどうか
innerbooleanfalse内側シャドウにするかどうか
knockoutbooleanfalseノックアウト効果を適用するかどうか
qualitynumber1ぼかしの実行回数(0〜15)
strengthnumber1インプリントの強さ(0〜255)

GlowFilter

グロー効果を適用します。内側グロー、外側グロー、ノックアウトモードなどのスタイルオプションがあります。

const { GlowFilter } = next2d.filters;

new GlowFilter(
    color, alpha, blurX, blurY,
    strength, quality, inner, knockout
);

プロパティ

プロパティデフォルト説明
alphanumber1グローのアルファ透明度(0〜1)
blurXnumber4水平方向のぼかし量(0〜255)
blurYnumber4垂直方向のぼかし量(0〜255)
colornumber0グローの色(0x000000〜0xFFFFFF)
innerbooleanfalse内側グローにするかどうか
knockoutbooleanfalseノックアウト効果を適用するかどうか
qualitynumber1ぼかしの実行回数(0〜15)
strengthnumber1インプリントの強さ(0〜255)

BevelFilter

ベベル効果を適用します。オブジェクトを3次元的に表現できます。

const { BevelFilter } = next2d.filters;

new BevelFilter(
    distance, angle, highlightColor, highlightAlpha,
    shadowColor, shadowAlpha, blurX, blurY,
    strength, quality, type, knockout
);

プロパティ

プロパティデフォルト説明
anglenumber45ベベルの角度(-360〜360度)
blurXnumber4水平方向のぼかし量(0〜255)
blurYnumber4垂直方向のぼかし量(0〜255)
distancenumber4ベベルのオフセット距離(-255〜255ピクセル)
highlightAlphanumber1ハイライトのアルファ透明度(0〜1)
highlightColornumber0xFFFFFFハイライトの色(0x000000〜0xFFFFFF)
knockoutbooleanfalseノックアウト効果を適用するかどうか
qualitynumber1ぼかしの実行回数(0〜15)
shadowAlphanumber1シャドウのアルファ透明度(0〜1)
shadowColornumber0シャドウの色(0x000000〜0xFFFFFF)
strengthnumber1インプリントの強さ(0〜255)
typestring”inner”ベベルの配置(“inner”、“outer”、“full”)

ColorMatrixFilter

4x5カラーマトリックス変換を適用します。明度、コントラスト、彩度、色相などを調整できます。

const { ColorMatrixFilter } = next2d.filters;

new ColorMatrixFilter(matrix);

プロパティ

プロパティデフォルト説明
matrixnumber[]単位行列4x5カラー変換用の20個の要素を持つ配列

マトリックスのデフォルト値(単位行列)

[
    1, 0, 0, 0, 0,
    0, 1, 0, 0, 0,
    0, 0, 1, 0, 0,
    0, 0, 0, 1, 0
]

ConvolutionFilter

マトリックス畳み込みフィルター効果を適用します。ぼかし、エッジ検出、シャープ、エンボス、ベベルなどの効果を実現できます。

const { ConvolutionFilter } = next2d.filters;

new ConvolutionFilter(
    matrixX, matrixY, matrix, divisor, bias,
    preserveAlpha, clamp, color, alpha
);

プロパティ

プロパティデフォルト説明
alphanumber0範囲外ピクセルのアルファ透明度(0〜1)
biasnumber0マトリックス変換結果に加算するバイアス量
clampbooleantrueイメージをクランプするかどうか
colornumber0範囲外ピクセルの置換色(0x000000〜0xFFFFFF)
divisornumber1マトリックス変換中の除数
matrixnumber[] | nullnullマトリックス変換に使用する値の配列
matrixXnumber0マトリックスのX次元(列数、0〜15)
matrixYnumber0マトリックスのY次元(行数、0〜15)
preserveAlphabooleantrueアルファチャンネルを維持するかどうか

DisplacementMapFilter

BitmapDataオブジェクトのピクセル値を使用して、オブジェクトの変位を実行します。

const { DisplacementMapFilter } = next2d.filters;

new DisplacementMapFilter(
    bitmapBuffer, bitmapWidth, bitmapHeight,
    mapPointX, mapPointY, componentX, componentY,
    scaleX, scaleY, mode, color, alpha
);

プロパティ

プロパティデフォルト説明
alphanumber0範囲外変位のアルファ透明度(0〜1)
bitmapBufferUint8Array | nullnull変位マップデータを含むバッファ
bitmapHeightnumber0変位マップデータの高さ
bitmapWidthnumber0変位マップデータの幅
colornumber0範囲外変位に使用する色(0x000000〜0xFFFFFF)
componentXnumber0X変位に使用するカラーチャンネル
componentYnumber0Y変位に使用するカラーチャンネル
mapPointXnumber0マップポイントのXオフセット
mapPointYnumber0マップポイントのYオフセット
modestring”wrap”フィルターモード(“wrap”、“clamp”、“ignore”、“color”)
scaleXnumber0X変位結果の乗数(-65535〜65535)
scaleYnumber0Y変位結果の乗数(-65535〜65535)

GradientBevelFilter

グラデーションベベル効果を適用します。グラデーションカラーで強調された斜めのエッジでオブジェクトを3次元的に見せます。

const { GradientBevelFilter } = next2d.filters;

new GradientBevelFilter(
    distance, angle, colors, alphas, ratios,
    blurX, blurY, strength, quality, type, knockout
);

プロパティ

プロパティデフォルト説明
alphasnumber[] | nullnullカラー配列の各色に対応するアルファ値の配列(各値0〜1)
anglenumber45ベベルの角度(-360〜360度)
blurXnumber4水平方向のぼかし量(0〜255)
blurYnumber4垂直方向のぼかし量(0〜255)
colorsnumber[] | nullnullグラデーションで使用するRGB 16進数カラー値の配列
distancenumber4ベベルのオフセット距離(-255〜255ピクセル)
knockoutbooleanfalseノックアウト効果を適用するかどうか
qualitynumber1ぼかしの実行回数(0〜15)
ratiosnumber[] | nullnullカラー配列の各色に対応する色分布比率の配列(各値0〜255)
strengthnumber1インプリントの強さ(0〜255)
typestring”inner”ベベルの配置(“inner”、“outer”、“full”)

GradientGlowFilter

グラデーショングロー効果を適用します。制御可能なカラーグラデーションによるリアルな輝きを表現できます。

const { GradientGlowFilter } = next2d.filters;

new GradientGlowFilter(
    distance, angle, colors, alphas, ratios,
    blurX, blurY, strength, quality, type, knockout
);

プロパティ

プロパティデフォルト説明
alphasnumber[] | nullnullカラー配列の各色に対応するアルファ値の配列(各値0〜1)
anglenumber45グローの角度(-360〜360度)
blurXnumber4水平方向のぼかし量(0〜255)
blurYnumber4垂直方向のぼかし量(0〜255)
colorsnumber[] | nullnullグラデーションで使用するRGB 16進数カラー値の配列
distancenumber4グローのオフセット距離(-255〜255ピクセル)
knockoutbooleanfalseノックアウト効果を適用するかどうか
qualitynumber1ぼかしの実行回数(0〜15)
ratiosnumber[] | nullnullカラー配列の各色に対応する色分布比率の配列(各値0〜255)
strengthnumber1インプリントの強さ(0〜255)
typestring”outer”グローの配置(“inner”、“outer”、“full”)

使用例

ボタンのホバー効果

const { Sprite } = next2d.display;
const { GlowFilter } = next2d.filters;

const button = new Sprite();

button.addEventListener("rollOver", () => {
    button.filters = [
        new GlowFilter(0x00ff00, 0.8, 10, 10)
    ];
});

button.addEventListener("rollOut", () => {
    button.filters = null;
});

影付きテキスト

const { TextField } = next2d.text;
const { DropShadowFilter } = next2d.filters;

const textField = new TextField();
textField.text = "Hello World";
textField.filters = [
    new DropShadowFilter(2, 45, 0x000000, 0.5, 2, 2)
];

複合フィルター

const { GlowFilter, DropShadowFilter, BlurFilter } = next2d.filters;

sprite.filters = [
    // 外側のグロー
    new GlowFilter(0x0088ff, 0.8, 15, 15, 2, 1, false),
    // ドロップシャドウ
    new DropShadowFilter(4, 45, 0x000000, 0.6, 4, 4),
    // 軽いぼかし
    new BlurFilter(1, 1, 1)
];

カラーマトリックスによるグレースケール

const { ColorMatrixFilter } = next2d.filters;

// グレースケール変換マトリックス
const grayscaleMatrix = [
    0.299, 0.587, 0.114, 0, 0,
    0.299, 0.587, 0.114, 0, 0,
    0.299, 0.587, 0.114, 0, 0,
    0,     0,     0,     1, 0
];

sprite.filters = [new ColorMatrixFilter(grayscaleMatrix)];

グラデーショングロー効果

const { GradientGlowFilter } = next2d.filters;

sprite.filters = [
    new GradientGlowFilter(
        4, 45,
        [0xff0000, 0x00ff00, 0x0000ff], // colors
        [1, 1, 1],                       // alphas
        [0, 128, 255],                   // ratios
        10, 10, 2, 1, "outer", false
    )
];

関連項目