このページでは、Inkscapeを使ってオブジェクトの中に「穴」のように向こう側(背景や下に重なっているオブジェクト)が見える領域を作る方法についてまとめてみます。

- Contents
- 方法1:差分を使う
- 方法2:クリッピングを使う
- 方法3:マスキングを使う
(2024.04.03更新)
Inkscapeを使って「穴」を描く方法はおもに3つあると思います。
- 外側のパスと内側のパスの差分をとる
- 外側のオブジェクトを内側のパスでクリッピングする
- 外側のオブジェクトを内側のオブジェクトでマスキングする
方法1:差分を使う
「穴」を開けたい外側のオブジェクト(パス、シェイプなど)と「穴」の形を描いた内側のオブジェクト(パス、シェイプなど)を描いて、外側と内側のオブジェクトを同時に選択します。

そしてメニューでパス > 差分を操作します。すると2つのパスの差分が取られて、外側と内側の2つのサブパスに挟まれた部分をフィルとする1個のパスオブジェクトになります。

内側のパスの内側はもうフィルではないので、向こう側が見えて「穴」になります。

差分をとった結果は1個のパスなので、さらに「穴」を追加することもできます。

「穴」の周囲は1つのサブパスなのでノードツールを使って自由に変形することもできますが、外側と内側のスタイルは共通のものになるので、例えば「穴」の周囲だけぼかしを入れるというようなことはできません。
また、当たり前ですが「穴」を描くのに使えるのはパス(またはパスに変換可能なもの)に限られます。ビットマップは使えません。
方法2:クリッピングを使う
方法1と同じように「穴」を開けたい外側のオブジェクトと「穴」の形を描いた内側のオブジェクトを同時に選択し、メニューでオブジェクト > クリップ > クリップを反転して設定を操作します。
結果の見た目は方法1と同じです。
ただし、この機能はInkscapeの現在のバージョン(1.3.2)ではパスエフェクトの「パワークリップ」を使って実現されているので少しクセがあって、パスと矩形と円弧は「穴」として使えますが、星形やテキストは使えません。(星形やテキストの場合は形はそのままでパスに変換すればもちろん「穴」にすることができます。)
また1つのオブジェクトにクリッピングパスは1つだけ設定可能なので、2つ目の「穴」を追加しようとしても2つ目の「穴」だけがある状態になってしまい、追加したことになりません。

さらに、方法1と同様に「穴」の周囲をクリッピングパスとして表示してノードツールを使って変形することも一応できます(「クリッピングとマスキング」)。ただし、パワークリップで設定しているクリッピングパスの編集機能にはクセがあっていろいろと不思議な動作をするので、後から「穴」の形を変更することは考えないほうがいいかもしれません。
これも当然ですが、クリッピングパスにはスタイルを設定できないので、例えば「穴」の周囲だけぼかしを入れるというようなことはできません。
方法3:マスキングを使う
方法1と同じように「穴」を開けたい外側のオブジェクトと「穴」の形を描いた内側のオブジェクト(マスキング用オブジェクト)を同時に選択し、メニューでオブジェクト > マスク > マスクを反転して設定を操作します。
(参考:クリッピングとマスキング)
結果の見た目は方法1と似ていますが、方法3はマスクを使っている(正確にはパワーマスクというパスエフェクトを使っている)ので、内側のオブジェクトの色によって結果が異なります。
内側のオブジェクトの真っ黒な部分に重なるところは完全に透明になるので方法1や方法2と見た目が同じ「穴」にしたい場合は内側のオブジェクトを黒で塗りつぶせばよいですが、黒以外で塗ると半透明になります。

方法1や方法2と違って、パス、シェイプ、テキスト以外にもビットマップオブジェクトも「穴」に使うことができます。

ただし、方法2と同様で、1つのオブジェクトにマスクは1つだけ設定可能なので、2つ目の「穴」を追加しようとしても2つ目の「穴」だけがある状態になってしまい、追加したことになりません。
方法2と同様に、ノードツールを使ってマスク領域の形を後から変更することもできます。
さらにマスキングを使って「穴」を描く方法の特徴として、マスキング用のオブジェクトのスタイルもそのまま「穴」の見え方に反映させることができるという点があります。
例えば点線、グラデーション、塗りつぶしパターン、ぼかしなどもそのまま「穴」のスタイルとして使えます。
パターンで塗りつぶしたオブジェクトを使って「穴」にすると次のようになります。

次の例は「穴」の周囲にぼかしを入れたものです。
