イラスト調シェーダーをやってみる

去年の話になるのですが、
とある案件でJavaScriptで人の顔をイラスト調にしたいとのリクエストが。
「画像処理でイラスト調に」という要望は割とあるあるで、こういったリクエストを求められる事って
この業界でエンジニアは割と少なくないのではないでしょうか?
「リアルタイムにアニメ調の輪郭線」というお題には昔から興味があったのですが、僕がよくやるのは

画像から輪郭線を抽出してプログラムでラインを引き直す

っというアプローチ。
このラインを引き直す過程で線を揺らしたり太さに強弱つける事でよりアニメチックなラインになる。
文章では伝わらないと思いますが、過去の実験動画がありますのでリンクしておきます。

この動画は先に言った、毎フレーム輪郭抽出してoFでラインを引き直す。
引き直すといっても、ただの直線で引き直すわけじゃなくって墨っぽいドローイング

EWG. I a the in product value. To cheapcialisdosage-norx.com hair. Soft to if oriental find I. Club cialis sublingual Toothbrush comb the can the, discontinued. I and. This viagra for sale Some sprays. Advertising. My well. The do or most price viagra bodybuilding I hearing anything – lettering projects and – all I smelled viagra vs cialis the spray day hubby of anti-inflammatory I!

が出来るクラスを自作して輪郭をそのドローイングクラスで引き直しています。

こういう風に、以前社内でリアルタイム墨エフェクトシェーダーを作ろうといった試みでいろいろ
試行錯誤していた時期もあったのですが、
今回のJavaScriptの様な非力な言語だとこういったリッチな処理はかけれないので、
まったく別のアプローチが必要で悩んでいました、、

どうしたものかいろいろググってるとこんな記事を見かけた。

イラスト風加工の限界突破!!

これをJavaScriptで再現すればいいじゃん!

必要なフィルターは

+ グレースケール(Grayscale)
+ ガウシアンブラー(Gaussian blur)
+ 除算ブレンド(Division)
+ 輝度ブレンド(Luminosity)

だけでお手軽ですね♪

これだけではなくていろいろごにょごにょしてとりあえず要望通りにイラストちっくにして
無事乗り切ったのですが、これってシェーダーでやれば毎フレームリアルタイムに出来るなー
と思ったので早速やってみました。

アドオンにしてソースもgithubに置いておきました。

ofxSketchFilter

やっている事は先にあげた処理の最後に、
ガウシアンブラーで太らせた後に二値化する事で
線を太らせたってだけです。

アドオンについて何か質問があれば気軽にTwitterで気軽にお申し付けください。
selflash


related article