■ MonochromeTrace.aex

効果

スキャンした線画の黒線・色線を各色ごとに2階調化します。
まぁ、ぶちゃけて言えばRETAS Pro!のTraceManの2階調トレースと同じものです^^;

昔同じものをPhotoshopプラグインフィルタで作った事があっていろいろアルゴリズムを考えていました。 まぁ、急にその事思い出してとりあえずAFプラグインで作ってみました^^;

用途

普通、使い道はありません。
なんせAfterEffectsはコンポとか撮影とかに使うものなので、セル仕上げに使うフィルタなんて僕自身も使いません。
基本的にAFプラグインの色関係エフェクトのアルゴリズム習作って感じです。

もしかしたら、アマチュアの人がTraceMan代わりに使えるかも:-)

オプション

黒・赤・緑・青・黄の閾値 各色を2諧調化する時のしきい値。
黒・赤・緑・青・黄の描画 ONで実際に描画。OFFの時は白になります。
主線(黒)の色 実際に描かれる黒の色を指定。
1ドットは消去 1ドットのみの点を消去する。
白は透明に 白部分を透明にします。

アルゴリズム

以下の処理を全ピクセルに行う。

◎step.1
色識別の準備。ピクセルのRGB値をHLS値に変換する。実際はAfterEffectsのGraphicsAPIで簡単に行う。
HLSとは、H:色相(hue) L:明度(lightness) S:彩度(saturation) のこと。

それぞれ固定少数値なので整数値に変換。その際範囲を色相(0..359)、明度(0..100)、彩度(-20..100)に調整しておく。

実際には

#define BLACK_UNDER_VALUE 20
#define PRM_MAX 100
PF_HLS_Pixel hsl;
long h,l,s;

h = hls[0] >> 16;
l = hls[1] * PRM_MAX >>1 6;
s = (hls[2] * (PRM_MAX + BLACK_UNDER_VALUE) >>16) - BLACK_UNDER_VALUE;

って感じ。

◎step.2
まず、黒の識別は彩度で行う。上の変換での彩度の範囲は、-20..100なので0以下はすべて黒とする。
つまり彩度16%以下は黒と決め込んでいる。まあこれも可変パラメータとしても良いがあまり触らないので、固定値に。

黒と識別されたら、明度としきい値を比較して2階調化する。 後は、パラメータの主線の色で塗りつぶして終わり。黒を描画しないのなら白を描画する。
黒じゃなかったら次へ。

◎step.3
次に色相で色を識別。
このプラグインでは, 290°から359°と0°から40°は赤、40°から65°は黄色、65°から170°は緑、170°から290°は青としている。
ここを細かく指定すれば、マゼンダ・シアンも識別できるが、そんな色鉛筆は滅多にないので無視している。
色の識別が終わったら、彩度としきい値と比較して2階調化する。後は、それぞれの色で塗りつぶして終わり。

◎step.4
1ドットを消去がONなら、消す処理を行う。今回のバージョンはちょっと手抜き。

その他

SDKのバージョンは5.5。

更新・修正履歴

v1.1 とりあえず作る。まぁこれ以上はないかな

-index-