その84。
tmlib.js 怒濤の 100 サンプル!! – Graphics(HTML5 Canvas) 編
今回試すサンプルは「ピクセル操作」の「トゥーンフィルターを適応させてみよう」です。
ではサンプルが掲載されているのでまずは見てみましょう。
中央のボタンを押してみて下さい。
女の子がダブっているように描画されたと思います。
/* * 定数 */ var SCREEN_WIDTH = 465; var SCREEN_HEIGHT= 465; tm.main(function() { // canvas インスタンス生成 var canvas = tm.graphics.Canvas("#world"); // 幅, 高さを指定 canvas.resize(SCREEN_WIDTH, SCREEN_HEIGHT); // 画面にフィットさせる canvas.fitWindow(); // 画像 var img = new Image(); img.src = "URL省略"; img.onload = function() { canvas.drawImage(img, 0, 0); // リバースフィルタ var srcBitmap = canvas.getBitmap(0, 0, img.width, img.height); var dstBitmap = tm.graphics.Bitmap(img.width, img.height); var filter = tm.graphics.ToonFilter(); filter.apply(srcBitmap, dstBitmap); canvas.drawBitmap(dstBitmap, 0, img.height); }; });
今回のトゥーンフィルタもその79で勉強したモノクロフィルタと呼び出すクラスが違うだけで処理の流れは変わりません。
サンプルの画像が元からアニメのようなイラストなのでわかりづらいのですがこのトゥーンフィルタはアニメ風にするためのフィルタになります。
wikiにトゥーンレンダリングという項目がわかりやすいので詳細が知りたい方は参照してください。
アニメ風と説明しましたが正確には手描きのアニメ風です。線や陰影をハッキリさせる表現方法ということになります。
言うならば80年代アニメ(例:北斗の拳)のような感じだと思って下さい。
そう思えばホラ見えるはずです!
アルゴリズムは結構な数があるようですし、僕らが目にしているアニメはレベルが高いですからね。
全く同じに再現するのは難しいものです。