お絵描きソフトInkscape(インクスケープ)の使い方を初級レベルから上級レベルまで広く紹介しています。
情報追加のリクエストや分かりにくい点があれば下のCONTACTフォームからどうぞ。

Inkscapeのパスエフェクト:簡略化

 このページでは、Inkscapeのパスエフェクトの1つである、簡略化エフェクトを紹介します。このエフェクトは、プルダウンメニューから実行可能な簡略化(セグメント数を減らしてなめらかにつながったパスにすること)機能のエフェクト版といえます。

 メニューから実行する簡略化は細かいパラメータを指定できませんが、こちらはパラメータを変えながら気に入った形になるように簡略化を行うことができます。

 (参考:パスエフェクト/エクステンションとは

 (参考:鉛筆ツールでパスを描く

(2023.03.25更新)

 このエフェクトは、鉛筆ツールを使ってフリーハンドっぽい線を描くときに、あまりガジガジした線にならないように、パスをなめらかにする目的でも使われています。もちろん、任意のパスに適用することもできます。

 ただ、どんな手法で簡略化を行っているかは解説コンテンツがほぼ無く、エフェクトのパラメータの意味もほぼ分からないので、実際にいじってみながらどんな具合に簡略化されるのかを推定するしかないところがちょっと残念です。

 まずエフェクトダイアログのパラメータ指定画面を見てみます。

 ステップ数は簡略化を繰り返す回数を指定します。回数が多いほうば簡略化が進むので、どんどんおおざっぱな形のパスになることが期待されますが、実際に変えてみると、見た目でほとんど変化しなかったり、簡略化以前にひどく形が変化してしまう場合があるので、適切な値を指定するのは難しいです。

 典型的には次のような感じになります。左がエフェクト無し、真ん中がステップ数「1」、右がステップ数「5」の例です。

 これは割に期待通りに簡略化の程度が大きくなっていくケースですが、オリジナルパスの形などによってはこうはならないことも多いです。

 おおよそのしきい値は1回の簡略化でどの程度の簡略化を行うかを示す指標らしいのですが、こちらも大きくすればその分大きく簡略化されるのかというと、そうでもない場合が多いです。

 典型的には次のような感じになります。右にいくほど大きいしきい値を指定しています。

 平滑化の角度は、ノードを挟んでセグメント同士の角度がここで指定した角度より小さく変化しているところだけ簡略化を行うというものです。小さい値を指定すると、ほとんど曲がっていないノードのところだけ簡略化が行われ、大きく曲がっているところはそのままになるので、パスのいわばノイズのところだけ簡略化されるイメージです。一方、「360(度)」を指定すると、どんなノードも簡略化の対象となるので、パス全体がおおざっぱな形に変換されます。

 次の例では、右にいくほど大きい角度を指定しています。より尖がったところが簡略されない状態から簡略される状態になっていくことが分かります。

 ヘルパーのサイズは、ノードツールで選択したときに簡略化の具合いを目で確認できるように、パス編集のためのノードやノードハンドルと似たような形で簡略化後のノードとノードハンドル(ヘルパーと呼ぶらしい)を表示するときの、その表示の大きさを指定します。

 次の例では、サイズを5.0(デフォルト)→3.0→1.0に指定しています。

簡略化の手法の選択

 ダイアログの最後のところにボタンが2つ並んでいます。これらはトグルボタンになっていて、それぞれオンとオフを切り替えることができます。

 ただし、これらのボタンの意味を説明してくれるコンテンツが本当になくて(がんばって英語の解説動画とかも目を通したけど)、しょうがないので、いろんな形のパスに適用してみて、こんな意味なんじゃないかなあと思ったものをメモしておきたいと思います。

 まず、パスを個別にというボタンですが、名前からすると、複数のパスについて個別に簡略化することが想像されたのですが、実際にやってみると、パスを個別に(簡略化する)モードと言うよりは、「セグメント単位で(簡略化する)」という機能なんじゃないかという気がしてきました。

 このトグルボタンをオンにせずに簡略化を実行すると、パス全体のノードの分布に応じてその全体をゆるーくつないだようなパスに変換されるのですが、このトグルボタンをオンにすると、セグメントごとにゆるーい形の線に変換しているようにみえます。だから「セグメント単位で簡略化する」機能なんじゃないかなと想像しているわけです。

 次の例は、左がパスを個別にをオフにしたときの結果で、右がパスを個別にをオンにしたときの結果です。違いがわかりやすいサンプルを試してみた結果なので、確かにそうとまでは言えないけれど、オンにしたほうは1つ1つのセグメントごとにゆるい線に変換されているように見えます。


 次に、結合パスのみというボタンですが、これも名前から推測すると、複数のサブパスを結合した構造になっているパスだけを簡略化の対象にするという意味なのかと思われましたが、実際にやってみると、そんな動作はしていないようでした。試してみた結果、こちらも「結合したパス」という意味ではなく、簡略化の処理は通常であればいろんな種類のステップを重ねて実行するところを、「隣り合うセグメントのマージ」というステップだけで簡略化を行うという意味のように思われます。

 次の例は、左が結合パスのみをオフにしたときの結果で、右が結合パスのみをオンにしたときの結果です。違いがわかりやすいサンプルを試してみた結果なので、確かにそうとまでは言えないけれど、オンにしたほうは2つのセグメントのペアの単位でゆるい線に変換されているように見えます。


実際に簡略化を実行するときの手順は?

 パラメータの意味がはっきりしない状態で「こんな簡略化をしたい」という希望がかなうように簡略化を実行するのはちょっと難しいかもしれませんが、各ノードの分布をできるだけ維持したい場合はパスを個別にをオンにし、各ノードを間引くように簡略化したい場合は結合パスのみをオンにして、おおよそのしきい値を0.3ぐらいから0.1ずつ変化させながら良さそうな値を探っていくという感じがいいのじゃないかと思います。(しきい値はなぜか非常に桁数の多い値になっているので、マウス操作などでは効果が出るほどの違いで数値が変わっていきません。直接0.2とか0.8とか飛び飛びの値を入力していったほうが効率がいいかもしれません。)