「note」に引っ越し中です。移動したページごとに移動先へのリンクを作っていく予定です。

Inkscapeのパスエフェクトを手動で実行する

 このページでは、Inkscapeのパスエフェクトに対して実行可能な「パスに戻す」という機能(パスエフェクトを手動で実行する機能)についてまとめたいと思います。

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

 (2024.07.11更新)

 「パスエフェクト」はパスオブジェクトに対して自動的に編集操作を行うマクロのような機能で、パスオブジェクトの属性にパスエフェクトのIDとパラメータを加えることで最終的に表示されるオブジェクトが生成される仕組みです。

 1つのパスオブジェクトに複数のパスエフェクトを設定した場合は、そのエフェクトは順番に実行されます。ダイアログ上でその順番を入れ替えることもできます。

 詳しくは「パスエフェクトの使い方(共通部分)」を。

 ところで、パスエフェクトによって生成されたオブジェクト(変形後のパスや自動的に追加されたテキストなど)は直接編集する(例えばノードツールで変形する)ことはできません。パスエフェクト実行前のパスのほうを編集するか、パスエフェクトのパラメータを調整するしかありません。

 パスエフェクトを実行した結果をさらに編集したい場合は、あらかじめパスエフェクトを手動で実行してしまい、パスエフェクトによる編集後のオブジェクトの形にしてしまってから編集することになります。

 そのためにはメニューからパス > オブジェクトをパスへを操作すればいいのですが、この操作では設定されている全てのパスエフェクトが実行されてしまいます。

 一方、パスエフェクトダイアログにはエフェクトごとに手動で実行する機能があります。これを使えば一部のパスエフェクトだけを手動実行して実行後のオブジェクトを編集することができるようになります。

 具体例は次のようになります。

 まずパスを描きます。

 このパスにパスエフェクトを設定します。まず「透視図/エンベロープ」というエフェクトを設定します。四隅をドラッグすることで全体をゆがめるように変形することができます。

 さらに「ラフ」と「鏡映対称」の2つのエフェクトも追加で設定します。


 上から順に実行された結果、まず「エンベロープ」でゆがめられ、「ラフ」でブレブレの線に変換され、「鏡映対称」で右側に鏡像が現れます。

 ところで、この状態で「ラフ」の横にある目の形のボタンをクリックすると、「ラフ」は削除はされないけれど無効になり、実行されなくなります。結果として線をブレブレにする処理だけがスキップされます。

 また、本題とあまり関係のない手順ですが、「エンベロープ」の横のほうにある点々の描かれたボタンをマウスでドラッグして、エフェクトの順番を入れ替えてみます。

 「エンベロープ」を一番下に移動すると、実行順でも最後になるので、「ラフ」と「鏡映対称」を実行したあとに「エンベロープ」でゆがめられるので、次のように2つに並んだパスの全体がゆがんだ状態に変化します。

 ここで、一番下の「エンベロープ」の右にある「V」のボタンをクリックすると、そのエフェクトに対して実行できる機能のプルダウンメニューが現れます。このメニューに「パスに戻す」という項目があります。


 このメニュー項目は英語では「Flatten」と表示されるもので、対象のエフェクトを手動で実行することでエフェクト適用後のオブジェクトに変換するというものです。「Flatten」という用語は「(このエフェクトを手動で)展開する」という意味だと理解しています。(「Flatten」の解釈については「「Flatten」と呼ばれる機能について」を)

 このメニューを操作すると、メニュー操作対象の「エンベロープ」と、それより前に実行されるはずの他のエフェクト(「ラフ」と「鏡映対称」)が手動で実行され、それらのエフェクト自体は削除されます。

 「エンベロープ」が一番下(実行順では最後)のエフェクトだったので、結果的にすべてのエフェクトが手動で実行され、すべてのエフェクトが削除されます。実行した結果は見た目はエフェクト適用時と同じですが、エフェクトを1つも設定していないただのパスになります。これならただの普通のパスなのでノードツールなどで自由に編集することができますが、エフェクトは消えてしまうのでエフェクトのパラメータを変える操作はもうできなくなっています。

 ちなみにパス > オブジェクトをパスへを操作しても同じことが起こります。

 今度は一番下の「エンベロープ」ではなく、二番目の「鏡映対称」に対して「パスに戻す」を実行してみます。

 すると、「鏡映対称」と1つ前の「ラフ」だけが手動で実行され、かつ、消去されます。

 ブレブレの線にする処理と鏡像を追加する処理は手動で実行され、その結果に対して「エンベロープ」のエフェクトが実行されている状態です。見た目では違いがないので分からないですが「エンベロープ」はエフェクトとして残っているので、そのパラメータを調整することは以前として可能です。

 エフェクトごとのパラメータを調整して、その実行結果をあと少しだけ修正したいと思うエフェクトがある場合は、そのエフェクトに対して「パスに戻す」を実行してから修正するという作業を想定した機能なのかと思います。