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

Inkscapeのエクステンション:3Dのエッジ

 このページでは、Inkscapeのエクステンションの1つである、選択したパスオブジェクトの端(エッジ)のところにグラデーションを付けて立体的に盛り上がっているかのような絵にしてくれるエクステンションを紹介します。

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

(2023.04.19更新)

 どうやってこんな絵柄にしているかというと、選択したパスにぴったり重なる別のパスを生成して、このパスに光が当たっているところ(白)から光が当たっていないところ(黒)までのグラデーションを設定しています。

 さらに、このグラデーション付きのパスがどうやって生成されているかというと、どうやら次のような手順になっているようです。

 まず、対象のパスのストロークにピッタリ重なるように、かつ、黒から白まで色が変化していくように連続するパスを生成してグループ化し(次の例では白いパスも存在が分かるように点線に置き換えています)、そのパスのストロークを適当な幅まで太くし、それらにぼかしを設定します。

 そして、対象のパスの複製を作って、そのパスをクリッピングパスとしてクリッピングを実行します。すると、上に示した例のように、対象のパスにピッタリ重ねることができるグラデーション付きのパスになります。次の例の真ん中のものがクリッピングした直後で、右端がそれを対象のパスにピッタリ重ねたものです。

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

3Dエッジのパラメータ

 3Dエッジがどんな動作をしているのかが分かった上で、そのパラメータの意味を調べてみました。

 このエクステンションのダイアログは次のようになっています。


 照明角度は、どの角度から光があたっているかのような絵柄にするかを指定します。「ゼロ」は選択したパスオブジェクトのちょうど右側からの光を指定したことになります。

 シェードは、明るいところ(白)から暗いところ(黒)まで何段階で色を変化させるかを指定します。言い換えると、重ねるために生成するパスを黒いものから白いものまで何本生成するかを指定することになります。

 注意しないといけないのは、この重ねるために生成されるパスは、選択したパスの1つのノードから他の1つのノードまでのストロークに重なるように生成されるので、選択したパスのセグメント数が少ない(ノード数が少ない)場合に、それに対して多すぎるシェードを指定してしまうと、そのシェード数分のパスを生成できず、それよりも少ないパスしか生成しないので、思ったよりもなめらかに変化しない絵柄になってしまいます。

 黒と白のみにチェックを入れると、シェードに指定した数を無視して、黒と白の2本のパスだけを生成して(ぼかしを入れて)重ねます。

 ストローク幅は生成するパスの幅を指定するもののようですが、現時点では使われていないパラメータらしいです。

 ぼかしの標準偏差ガウシアンぼかしを入れるときの畳み込み演算に用いるガウス分布の標準偏差のことで、大きい値を指定するとぼかしの幅が大きくなり、よりなだらかなぼかしになります。

 ちなみにガウシアンぼかしというのは、すごくざっくり言えば、各画素ごとに、その色と周囲の画素の色を混ぜた色に書き換えることで全体にぼやっとした配色(つまり「ぼかし」)になるようにする処理の中で、どのぐらいの重みを付けて混ぜるかをガウス分布に従って決める(例えば遠い画素とはそんなに混ぜない)という方法とのことです。

 ぼかしの幅ぼかしの高さはぼかした結果が描かれる範囲を指定するパラメータのようですが、こちらも現時点では使われていないようです。3Dエッジは内側をクリッピングしてしまうので、このパラメータを指定しても意味がないということなのかもしれません。