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

Inkscapeでクローンを作る

 このページでは、「分身の術」のように、色などのスタイルが揃った「分身オブジェクト」を作るクローン機能について紹介します。

  (参考:タイルクローンとは

  (参考:クローンを使っていろんなテキストを作る

(2023.09.11更新)

クローンとは

 メニューで編集 > クローン > クローンを作成を操作すると、選択してあるオブジェクトのクローン(コピーではない!)がキャンバスに追加されます。あるいは、オブジェクトをドラッグして移動しながら「c」を押すと、押したときの位置にクローンを追加することもできます。

 クローンとして貼り付けたオブジェクトは、クローン元のオブジェクトとのリンクを内部に持っていて、クローン元のオブジェクトの属性(形状や色など)を継承します。

 どういうことかというと、クローン自身の属性ではなくクローン元の属性を使って描かれます。

 したがって、クローン元のオブジェクトを編集すると、それからクローンされたオブジェクトの表示も自動的に更新されて、同じ編集後の属性がクローンのほうにも同期して反映されます。

 逆に、クローンのほうを直接編集しても、クローン元には反映されません。

反映される属性とされない属性

 反映される属性と反映されない属性、クローン側で変更可能な属性と変更不可能な属性との間にどのような分類ルールがあるのかはよくわかってません。

 例えば、クローン元を移動しても、Inkscapeのデフォルト設定ではクローンは移動しません。環境設定ダイアログでクローンも移動するように設定しておくと一緒に移動するようになります。

 例えば、クローン元のオブジェクトをパスに変換しても、クローンのほうはパスとして編集できるようにはなりません(というか、クローンのほうは単独でパスとして編集できるようにならないようです)。

 例えば、クローン元のオブジェクトのプロパティ(例えばタイトル)を変更しても、クローンには反映されません。

 例えば、クローンをロックしても(編集不可にセットしても)、クローン元を変形すると反映されます(ロックされてない!)。

 なんでこんなことになっているか、なんとなくの理解としては、Inkscapeでいうところのクローンは、生物のクローンとは異なり、そっくりなものをもう1つ作るということではなく、テンプレートのように一部の属性に対してベースとなる値をまずクローン元に設定しておいて、クローン先で必要に応じてその属性を変更したり追加したりするという、オブジェクト指向でいうところの「継承」に近い機能だからなのだと思います。

 例えて言えば「分身の術」です。本物が変化すると分身も変化するけど、分身のほうが単独で変化することはないって感じです。だから生成直後のクローンオブジェクトはクローン元と見た目はそっくり同じ(位置まで同じ)ですが、その後も一部の属性についてはずっと継承し続けることになり、クローン後に独立して変更できないのでしょう。(その点では「クローン」と呼ぶよりも「子オブジェクト」とか呼んだほうが意味として合ってるのかなとも思ったりします。)

 うまく整理できないのですが、見た目に関係ない属性(ラベルなど)は継承されず、見た目に関係する属性のうちオブジェクト全体の位置/回転角度/傾きのような差分量(クローン元の値に対する相対的な値)の指定によって変更可能な属性は継承するけど変更可能、見た目に関係する他の属性(矩形の角の丸め、多角形の頂点の数、フィルやストローク)は継承しかつ変更できない、ということのようです。

 Inkscapeのクローン機能は、SVG形式でいうところの<use>エレメントを使って実現されているので、SVG形式の仕様を詳しく追えばこの辺りのことはもっと整理できるのかもしれません。

継承される属性について

 さて、さらにややこしいことに、継承されて変更できない属性にはさらに2種類あって、スタイルと、スタイル以外の属性とで、少し継承の仕方が異なります。

 スタイル(フィル、ストローク)については、クローン元オブジェクトで設定されている属性は必ず継承され、クローン側で変更する操作を行うことは可能ですが、変更した結果は無視された状態で表示されます。クローン元オブジェクトで設定されていない(アンセット、Unset)属性はクローン側で好きな値を設定することが可能です。

 スタイル以外の属性の場合、クローン元オブジェクトで設定されているか否かによらず、クローン元オブジェクトの属性を継承します。そして少なくともInkscapeの画面上ではクローン側のその属性を変更することはできないようです。

クローン側で変更可能なスタイル

 クローン側で変更可能なスタイルは、クローン元オブジェクトで設定されていないスタイルです。ここで「設定されていない(アンセット)」とはどういう意味かというと、「塗りなし」とか「太さゼロ」のように明示的に何も表示しないように設定しているということではなく、その属性について何も記述していない(未知の)状態のことです。クローン元オブジェクトを選択した状態で、フィル/ストロークダイアログのフィルストロークの塗りのそれぞれのタブにある「?」で表示されているアンセットボタンを押すことで「設定されていない(アンセット)」状態に切り替えることができます。(クエスチョンマークのアイコンになってますが、ヘルプではありません笑)

アンセットボタン
アンセットボタン

 アンセットボタンを押したスタイルは、クローン元オブジェクトのデータから消去され、クローンオブジェクトのほうで設定することが可能になります。

 ややこしいのは、クローン元で設定されているスタイルでもクローン側で変更する操作は可能です。変更操作をすると、見た目は変わらないですが(クローン元のスタイルを継承するから)データとしては変更後の属性が格納されています。この状態でクローン元のスタイルに対してアンセットボタンを押すと、クローンの変更後の属性が無視されなくなって変更後のスタイルで表示されるようになります。前に変更した色などで急に表示されるようになるので、ちょっと戸惑います。

何と何がクローン関係にあるか?

 クローンをさらにクローンして孫クローンを作ったり、すでにクローンのいるクローン元から別のクローン(兄弟?)を作成することもできます。ただ、オブジェクト間にどんなクローン関係があるのか把握しにくい(少なくとも見た目ではわからない)ので、下手にクローンをたくさん作ってしまうと何がどうなってるのか迷子になってしまいそうです。

 オリジナルを選択メニューを操作(あるいはシフト+「d」)すると、一瞬だけ、クローンからクローン元に伸びる点線が表示されたりするのですが、クローン関係を確認するために利用できるとは思えません。明らかにクローンを使ってるなと分かるような、例えばまったく同じ図形を幾何学的に並べたような絵を描きたい場合には便利なのかもしれません。

クローンのその他の特徴

  • オブジェクトグループのクローンを生成できる。
  • クローンをコピーすると、コピー後のオブジェクトも同じクローン元オブジェクトのクローンになる。
  • 「ぼかし」と「不透明度」は、クローン元から継承し、かつ、それに上乗せしてクローン側で変更することもできる。