表参道のDTP Booster 013で話す準備ネタ

illustrator01.jpg

えっと、AdobeさんのCS5発売記念ギャラリーが表参道で毎日ってくらいに開催されていますが、僕もそこで話をさせていただくという事になっております。(えっ!ほんと!?)
というかもうすぐなので、来ていただける方に、事前に見ておいて欲しいと思ってエントリーします。
イベント名は「DTP Booster 013(Omotesando/100602)」です、大阪でも東京と同じくらい行われているDTP系のセミナーイベントです。
で、話をさせてもらう内容ですが、Illustrator CS5とExtendScriptToolkit CS5を使って、スクリプトで模様を描いてみようという、ちょっとマニアックなお話だと思います。
JavaScriptを使います。
はい、といっても、HTMLなどをいじるというものではなく、「手作業では面倒だったり大変だったり」という事をスクリプトでやるということです。
もちろんブラウザを操作したりするJavaScriptではなく、Illustrator用に用意されたオブジェクトなどが登場します。
特に使ってみたいのが反復を処理するfor()文とか乱数を出すMathオブジェクトなどです。
手作業では結構不向きですよね?
では、単純な所からいってみます。
Illustratorには複数の書類を同時に立ち上げる事が出来るのはみなさんとっくにわかってますよね?
なので、「今からどのページに描くよ」って指示してあげないといけないんです。
プログラムの事がわかる人は「配列」って知ってますよね?
Illustratorで立ち上がる複数の書類はアレ、「配列」で管理されてます。
スクリーンショット(2010-05-28 18.23.20).png
このdocumentsってやつ(おなじみのdocumentというオブジェクトではありません、「s」が付いてます)のインデックス番号ってやつですね、これが[0]となっています。
2枚の書類が立ち上がっている場合は[1]で2枚目です。
さて、これが出来たら今から簡単な図形を描いていきます。
もちろん、「このページに描きます」って指定するために、変数pageを用意しました。
ドットシンタックスでつなげていきます。

スクリーンショット(2010-05-28 18.29.26).png
なんだかとんでもない所で飛んじゃいました。
これがこうなる理由については当日お話しさせていただきます。
というわけで、シンプルな図形を描く時にはページに対してpathItems.star()を使いました。
他にもellipse, polygon, rectangle, roundedRectangleといった、基本的な図形を描く機能が用意されています。
それぞれの図形をpathItems.ellipseで楕円形、pathItems.roundedRectangleで角丸長方形などが描けます。

じゃあ、こんどは星なら星の形ですね、普通にスターツールをツールパネルから使う場合、以下のような事が決められます。

  • 第一半径
  • 第二半径
  • 点の数

じゃあこの3つ、数値で入力してJavaScriptで描く場合どうするかっていうと、以下のようになります。

さて、数値を乱数で入れたいところですが、5つのパラメータすべてに乱数を書くのは大変、なので、乱数を返してあげる関数を自分でつくります。

これでrand(乱数の上限数)という感じで呼ぶと乱数が返ってきます。
で、乱数を入れ直すとこんな感じです。

これで毎回実行するたびに違う場所に違う形の星が描かれるはずです。
ではfor文を使って実行しましょう。
たった2行追加するだけで1000個も星が描けます。

ほし〜〜
で、これはこれで面白いかも、でも実際には色も塗らないとね、と言う事で、イラストレータなので当然CMYKモードとRGBモードがあります。

やっぱりDTPだけにCMYKでいきましょう。
star自体に色を塗る指定はありません。 

事前に「今からこの色で塗るよ」って用意しといて塗るんです。

 ためしに「金赤」の星を描くとなると、まず「カラーオブジェクト」を作りますが、これは、セミナー本番中にて、、、。