「 折り図 」一覧

inkscapeの半透明オブジェクト問題の検証

inkscapeで作られたデータは、SVG形式のままでは問題が発生する率が非常に高いため、基本的にPDF経由でIllustratorに読み込みます。この際に、半透明化の機能を使ったオブジェクトが消えてしまう場合があります。

まずはこの問題に対する有志による検証です。他にも発生しやすい問題がまとめられているので、inkscapeで折り図を描く(かつ投稿などをする)のであれば必読です。

https://sites.google.com/site/origamidiagramsstudygroup/guideline/inkscape

inkscapeでは、オブジェクトを半透明にする方法として、RGBA(赤緑青+透明度)のAの値を変更する方法と、不透明度の項目の値を変更する方法があります。このうち、不透明度を使った半透明オブジェクトがPDF読み込みの際に非表示の状態になってしまいます。ちなみにRGBAの方法であれば問題がなさそうですので、もし必要であればこちらを使うべきでしょう。

読み込んだデータを詳しく見てみると、不透明度を使ったオブジェクトは、色のついたオブジェクトに半透明のマスクをかけたような状態になっているようです。このマスク処理が読み込みの際に正確に反映されず、非表示もしくは完全に透明なマスクとして処理されているというのが原因だと考えられます。対してRGBAの方法を使ったデータの場合、オブジェクト自体に半透明の設定がされている状態になります。データの構造がシンプルな分、問題も発生しにくいのでしょう。

RGBA(アルファチャンネル)を使った半透明データをAIで読み込んだ場合の不透明度の状況。

ちなみに、強引な対処方法としては、正確に読み込めないオブジェクトを含むPDFを一旦別のアプリケーション(MacOS標準のプレビュー等)で開き保存し直すと、PDF自体が別エンジンで書き直されるのか読み込み可能な状態になります。ただしデータの構造等はひどい状態になり編集等に大きな支障が出る、また他の問題が発生している可能性もあるので、あくまで最後の手段とすべきでしょう。

そしてここからが新情報。今回の検証のため最新バージョンのinkscape(MacOS版1.2.1)で確認してみたところ、書き出したPDFが不透明度・RGBA共に半透明を維持した状態で読み込めることが分かりました。

PDFの情報を見比べてみると、書き出しに使われているcairoライブラリのバージョンが上がっていました。また、読み込んだデータを見てみると、オブジェクト+半透明マスクという構造自体は変わらないものの、この二つを含むグループに対して不透明度の設定がされていました。恐らく書き出されたPDFデータの構造などが改善されて、読み込みの精度が上がっているようです。

最新版inkscapeで書き出した不透明度を使ったデータをAIで読み込んだ場合。クリッピングで階層が増えていて、グループに対して透明度の設定がされている。

ということで雑にまとめると、

  • inkscapeのバージョンによって発生する問題は変わる。基本的に改善されているのでなるべく最新版を使うとよい。
  • 改善はされたものの、グループ状態の変化等で半透明化が解除されてしまう可能性もあるので、引き続きRGBA側の機能を使う方を奨励。

となります。

最後になりますが大前提として。異なるソフトウェア間でのデータの完全な再現は非常に難しく、発生した問題を発見し一つずつ検証・解決する必要があります。たとえ同じソフトウェアでも、バージョンやWin-Mac間の差でレイアウト等が再現されない場合もあります。精度の高いデータの変換・読み込みには、データを用意する側とそれを読み込む側の、双方の理解と準備・対策が必要になるのです。


塗りのある直線

  • 直線には塗りを設定しない方がよい
  • 画面に表示されなくても、面積ゼロの塗りオブジェクトが存在する
  • 環境によっては表示される場合もあり、不都合となる可能性もある

以下、詳しく。

ドローソフトでは、線などのオブジェクトに「線の色」と「塗りの色」を設定することができます。ほぼ全てのオブジェクトに対して色の設定自体は可能なので、必要のない部分にも塗りの色を設定する事が出来ます。

但し、例えば単純な直線のような、面積のないオブジェクトへ塗りを設定するのは意味がないので、相当特殊な理由がない限り避けるべきでしょう。

具体例として、谷折り線に塗りを設定した場合を見てみます。

まず、FreeHand MXでは、直線の塗りは描画されません。

折り図を描いていても、塗りがあること自体に気がつかないかもしれません。

さて、同じデータをIllustratorで開くとこうなります。

点線に設定された塗りが、細い線として描画されます。線が2重になっているようで紛らわしいですね。

さらに、PDFとしてAcrobatで開くと、AIと同様に線状に描画されます。前述のFHや、最近はInkscape製のデータで結構見かけます。

なお、同じPDFでも、MacOS標準のプレビューでは描画されません。

この例とは逆に、折り筋線のつもりで塗りのみのある直線をつかってしまうと、画面では見えるのに印刷では消えてしまう線になってしまう可能性があります。

表示が安定しない、無駄なデータを持つメリットはありません。面積のないオブジェクトには、塗りを設定しないように気をつけるとよいでしょう。


アリの折り図 『折紙探偵団マガジン163号』

本日発行の『折紙探偵団マガジン163号』に、アリの折り図が掲載されます。

既に購読等を申し込まれている方には、もうすぐお届けされるかと思います。お楽しみに。

まだ更新されていない方、もしくは興味のある方。購読申し込み等については、日本折紙学会のウェブサイトをご覧下さい。サイトからPaypalでの申し込みも可能です。

http://www.origami.gr.jp/JOAS/subscribe.html


線を短くするスクリプト

選択されたポイントがパスの起点か終点の場合のみ、2pt分短くするスクリプト。紙のフチから折り筋線を少し離す時に使えます。こういう作業を一括処理できるのが、スクリプトの良いところ。

以下仕様と注意点など。

  • 処理としては、オブジェクトの起点と終点のポイントを選択されているか判定して、それぞれ2番目のポイントの方向へ移動させています。
  • 最初は選択されたポイントを判定していけば出来るのでは?と考えたのだけれど、判定方法に悩んだ結果、結局上記の順番になっています。
  • 実際のコードについては、素人目で見てもかなり酷い。とりあえずポイント移動の座標計算で起点・終点で同じ事をしているので、切り離して関数化した方がよさそう。
  • ベジェ曲線には未対応。ハンドルが消えるので注意。
  • 短すぎる際の処理についても未対応なので、多分反対側に飛び出す。

cutline.zip


数字を加算するスクリプト

選択されたテキストを数値として取得し、1を加算・減算して返すだけのスクリプト。

要するに図番号用で、図が一つ増えたり減ったりした時、その後の数字をずらすのに使えます。

例によってエラー処理などなにもしていません。parseIntのみで強引に整数化しているので、例えば「15a」の「a」は消えてしまいます。また、数値以外で始まるテキストが含まれていると、NaNを返します。

ORZnumber


同じ種類の鎖線を選択するスクリプト

同じ種類の鎖線を選択するだけのスクリプト。特定の鎖線、たとえば山折り線だけを選択したいときなどに使えます。

見て分かるとおり、エラー処理などは全くしていないので、使用ついては自己責任でお願いします。

スクリプトファイル:SelectSameDashes

RunSclipt = confirm (“選択されたオブジェクトと同じ鎖線を、選択状態にします。\nスクリプトを実行しますか”);

if (RunSclipt == true){

     ORZsel = activeDocument.selection;

     ORZlinedashes = “”+ORZsel[0].strokeDashes;

     ORZobj = activeDocument.pathItems;

     for (i=0; i<ORZobj.length; i++){

          if( ORZobj[ i ].strokeDashes == ORZlinedashes ){

               ORZobj[ i ].selected = true;

          }

     }

}


Adobe Illustratorでスクリプトを動かす

Illustratorでは、JavaScriptなどで書いたスクリプトを動かすことができます。これによって、メニューやアクションでは出来ないようなことを、簡単に行う事が出来るようになります。

幸いプログラムに関しては、昔BASICやHyperCardで遊んでいたこともあり、簡単なものであれば書いたり改造もできます。

ということで、実際に使ってみるととても便利で、作業によってはスクリプト無しは考えられないというくらい手放せなくなりました。特に判定が必要な自動化については、アクションの機能だけでは実装が難しいため、スクリプトが使えるかどうかで出来る事がまったく変わってきます。

Illustratorで折り図を描いていて、かつ簡単なプログラムが出来る人は、導入を検討してみてはいかがでしょうか?

ツールや資料など。

「ScriptKeyAi」

http://tama-san.com/scriptkey/

ショートカットからスクリプトを起動するサポートソフトウェア。とても便利。特に何種類かのスクリプトを何度も実行するような場合には必須。アイコンもかわいいですね。

Illustrator自動化基本編

参考書。スクリプト例文集。著者はMZ-700ユーザーにはおなじみの古籏一浩氏。サイトにも異常な量の情報があふれています。

http://www.openspc2.org/

余談ですが、古籏氏とMZ-700から生まれた「MZ-700に不可能はない」という言葉は、私にとっての座右の銘的な言葉の一つです。