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

Inkscapeのコピペ操作と複製操作の違い

 このページでは、Inkscapeを使ってオブジェクトの分身を作る2種類の操作「コピー&ペースト」と「複製」との違いについてメモしていきたいと思います。

   (参考:オブジェクトの分身を作るには

 「コピー&ペースト」と「複製」はオブジェクトのそっくりな分身を作るという見た目の結果は同じですが、見た目ではわからない部分で違いがあります。

 その違いのせいで、作った分身をその後編集する段になって同じ操作をしても結果が異なるようになり、混乱する原因になっていました。

 どういうことかというと、「コピー&ペースト」で生成した分身と、「複製」で生成した分身は、見た目はそっくりですが、コピーされているデータの中身が違うことがあるのです。

 分身の精製元のオブジェクトが塗りつぶしパターンフィルタという2種類のいずれかの「リソース」を参照することで表示されているオブジェクトの場合、「コピー&ペースト」では、ペースト対象のオブジェクト自体のデータと「リソース」のデータが両方コピーされるようですが、一方、「複製」では、複製対象のオブジェクトのデータ自身はコピーされるけれど参照している「リソース」のほうはコピーされず、複製元と複製先のオブジェクトの両方から同じ「リソース」が参照されます。

 したがって、「コピー&ペースト」で生成した分身の場合、塗りつぶしパターンやフィルタのパラメータを分身前と分身後のオブジェクトでバラバラに変更することができますが、「複製」で生成した分身の場合は一方のオブジェクトで変更するとその変更結果はもう一方のオブジェクトの見た目にも反映されます。

 例えば「オーガニック」というフィルタを適用したオブジェクトをコピー&ペーストして、ペースト後のオブジェクトのフィルタのパラメータをフィルタエディタで変更すると、次のようにコピー元のオブジェクトのフィルタには影響を与えずにコピー後のオブジェクトのフィルタだけパラメータを変更することができます。

 一方、同じオブジェクトを「複製」して、複製後のオブジェクトのフィルタのパラメータをフィルタエディタで変更すると、次のように複製元のオブジェクトのフィルタもその変更が反映されます。

 複製前と複製後のオブジェクトは同じフィルタ(リソース)を参照しているので、一方のオブジェクトを選択してパラメータを変更したとしてもそのフィルタはもう一方のオブジェクトからも参照されているので、こういう動作になるわけです。

 なお、「リソース」には他にもグラデーションシンボルなどもありますが、これらは「コピー&ペースト」と「複製」とで違いはなく、個々のオブジェクトごとにデータがコピーされているようです。それを区別しなければならないのがとてもややこしいです。

「ぼかし」の修正時の奇妙な動作

 ここまでのことを押さえた上で、オブジェクトに「ぼかし」を適用し、さらにその分身を作ったときの動作について調べてみました。

 Inkscapeではオブジェクトの「ぼかし」はフィルタを使って実現されています。

 ということは「ぼかし」を入れたオブジェクトをコピー&ペーストしたときと複製したときとでは違いがあるということになります。

 次のように「ぼかし」を入れたオブジェクトを複製して、どちらか一方だけのぼかし具合をフィルタエディタで変更しようとしても、両方ともぼかし具合が変化してしまいます。

 でもここまでは想定内の動きですが、「ぼかし」がフィルタで実現されていることを知らないととても奇妙な動きにみえるので注意したいところです。

 ところでぼかし具合を変更しようとする場合、普通はフィルタエディタを使うということはせずにフィル/ストロークダイアログの「ぼかし」バーで調整します。

 「ぼかし」バーで調整すると間接的にフィルタのパラメータを調整することになります。

 ところが分身先のオブジェクトを選択しておいて「ぼかし」バーの変更したい位置をクリックすると、1回目のクリックのときに分身先のオブジェクトの「ぼかし」は変化せず分身元のオブジェクトの「ぼかし」が変化してしまいます。さらにクリック2回目からは分身先のオブジェクトの「ぼかし」だけが変化します。クリックするたびに分身元も分身先も「ぼかし」が変化すべきだと思うので、これはバグなのかと思われます。(バグだと報告されている根拠は見つからなかったですが)

 こちらの動作も、対象のオブジェクトが複製によって作成された分身であることに気付かないととても奇妙な動作にみえるので注意したいところです。