Inkscapeのフィルター機能を試してみる

今回はフリーのドローソフト「Inkscape」で色々な種類のフィルター機能を使ってみます。

スポンサーリンク

使用するイラスト

今回の作業でフィルタ機能を適用するイラストです。

使用するイラスト
© Unity Technologies Japan/UCL

フィルターカテゴリ「イメージエフェクト」

エッジ検出
オブジェクトの色の境界を検出します。

エッジ検出

シャープ
オブジェクト中のエッジと境界をシャープにします。強さ0.15

シャープ

シャープ(もっと)
オブジェクト中のエッジと境界をシャープにします。強さ0.30

シャープ(もっと)

ソフトフォーカスレンズ
ぼかしをつけずに中身のイメージを光らせます。

ソフトフォーカス

フィルム粒子
小規模の粒子状効果を加えます。

フィルム粒子

フィルターカテゴリ「イメージペイントとドロー」

イメージドローイング・基本
色の境界を1ビットの白と黒で強調および再描画します。前回の記事で使用したフィルターです。

イメージドローイング

エレクトライズ
電気版ソラライゼーションエフェクトです。

エレクトライズ

ネオンドロー
ポスタライズおよび色の輪郭を滑らかな線で描画します。

ネオンドロー

ポイント彫刻
透明なポイントを彫った画像に変換します。

ポイント彫刻

古はがき
少しポスタライズし、昔印刷されたはがきのようなエッジを描画します。

古はがき

アニメーションの作成

フィルター「エレクトライズ」を適用した画像と、前回の記事で作成したパスを組み合わせてみます。

anime.jsでイラストを手書き風に表現する
アニメーションのライブラリ「anime.js」を使用して SVG のパスを動かして、イラストの手書き風アニメーションを作成します。

例として下記のように記述します。

HTML
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 720" class="Layer_1" version="1.1">
 <defs>
  <mask id="clipMask">
   <path id="a1-1" stroke="#fff" stroke-width="1" d="...<省略>..."/>
   <path id="a1-2" stroke="#fff" stroke-width="1" d="...<省略>..."/>
   <path id="a1-3" stroke="#fff" stroke-width="2" d="...<省略>..."/>
     ・
     ・
     ・
  </mask>
 </defs>
 <image id="az" xlink:href="elect.png" mask="url(#clipMask)"></image>
</svg>

<image>タグの部分にはフィルター「エレクトライズ」を適用して「PNG画像にエクスポート」で保存した画像を配置しています。(elect.png)

CSS
#az {
  transform-origin: 35% 50%;
}

今回はイラストをrotateYで回転させるので、<image>タグの画像にidを設定して、transform-originで原点の位置を指定します。

JavaScript
var animObj_1 = anime({targets:'#a1-1',strokeDashoffset: [anime.setDashoffset, 0],easing:'easeInOutSine',
   autoplay:true,duration:500,delay:0
});
var animObj_2 = anime({targets:'#a1-2',strokeDashoffset: [anime.setDashoffset, 0],easing:'easeInOutSine',
   autoplay:true,duration:500,delay:500
});
var animObj_3 = anime({targets:'#a1-3',strokeDashoffset: [anime.setDashoffset, 0],easing:'easeInOutSine',
   autoplay:true,duration:500,delay:1000
});
                                                    ・
                                                    ・
                                                    ・
var animObj_1az = anime({targets:'#az',autoplay:true,duration:10000,delay:16250,easing:'linear',
   rotateY:'180deg',opacity:{value:0,delay:26000,duration:4000}
});

画像に設定したidをtargetsで指定して、パラメータを入力しています。
rotateYで180度回転した後に、4秒かけて非表示になるように設定しました。

アニメーションサンプル

サンプルとして上記コードのアニメーションをキャプチャしたものを載せます。

クリックでGIFアニメーションが再生されます
sample_gif

タイトルとURLをコピーしました