ScriptUIで絵を描く。
ExtendScriptのScriptUIオブジェクトモデルビューアを調べていると、
ScriptUIGraphicsクラスにractPathやnewPath、moveToなどの
メソッドが用意されていることを知ったので、
ちょっと試してみた。
そして、こんな感じになりました。
ダウンロード
けっこうグラフィカルでしょ?
CS4だと期待どおり動くんだけど、
CS3だとマウスオーバー/マウスアウト時のイベントが期待どおり動いてないようです。
もちろん、小さな四角のみのモザイクで描画しているので
画像ファイルはいっさいふくまれておりません。
そして遅いです。
これをうまく使えば、
小さいツールアイコンの画像なら、画像を複数添付しなくても、
書き方によってはスクリプトファイル1つだけの配布ですみそうです。
サンプル集以上の価値、付録も凄い。
Adobe Illustrator CS3 + JavaScript 自動化サンプル集というのがデジコンカートとして販売されております。
内容は中級者〜上級者向けみたいですね。
これがあれば、ほぼ、逆引きでやりたいことが出来るんじゃないだうか。
目次を見ながら、自分の出来ること、出来無いことをチェック。
ネットで調べ試行錯誤して時間をかけて悩んだ部分もこれがあれば直ぐ解決できていたんだろうなぁ〜。
というわけで、購入。
付録から読み始めたんだけど、付録だけでお腹いっぱいになっちゃいいました。
お手軽ミニ四駆コースのレシピ。
息子の誕生日プレゼントは以前から欲しがっていた、
ヘリコプターのラジコンを買った。
いろいろ種類があって悩んだんだけど、
やっぱり最初は無難な
ミニビー (ガンメタリック)
という選択に。
ところが、5分飛んで30分充電というサイクルと、
思うように操作できるのは上下運動ということで。
2日目には、飽きてしまった。(おもしろいと思うんだけどなー、やはりまだ早かったか?)
しかし、そこは予想の範疇。ぬかりなく安売りワゴンの中にあった、めぼしいミニ四駆も買っておきました。
只、ミニ四駆も床の上を走らすだけでは面白くありません。まっすぐ走っていったきり戻ってきれはくれません。w
当然、ミニ四駆用のコースが欲しくなる。(子どもじゃなくて自分が)
でもね。誕生日プレゼントを買ったばかりで次々と玩具は買えません。(教育的に…もちろん財布事情もありますが…)
そこで、なるべくお手軽にコースを作る方法はないかと、ホームセンターを一周してめぼしいものを物色。
8mmぐらいの厚手の紙紐とグールガンとダンボールでお手軽ミニ四駆コースの完成。
所要時間1時間。
1レーンだとさびしいので、今度は2レーンに挑戦してみよう。凝り出すといろんなことがしたくなってくる。(子どもそっちぬきで…)
検索すると凄いのがけっこうあります。
ジャンプとか宙返りとか、おもしろそーだ。
トーンカーブとチャンネルミキサー
つたない英語で質問したら、速攻で解答が来た。
解答のJavaScriptは目的のものズバリで文句のつけようがないのだが。
PhotoshoのJavaScriptはほとんど書いたことがないので、何をやっているのかサッパリなのだ。
ということで、感覚を掴むために自分でも書いてみることに。
オブジェクトモデルを眺めているだけでは気付かなかったのだけど、
PhotoshopのJavaScriptの真骨頂はScriptListenerにありということで、
ScriptListenerを試してみました。
ScriptListenerを入れて再起動すると。
デスクトップのScriptingListenerJS.logに作業内容(JavaScript)が
ガシガシ書き込まれていきます。
素の状態のlog(JavaScript)を只コピペしても使えるんだけど、
ここは練習がてら、ちょっと汎用性をもたせたスクリプトをlogを参考にして書いてみた。
JavaScriptからトーンカーブとチャンネルミキサーを実行。
(function(){ #target 'photoshop'; #include 'ps_imageAdjustments.jsx'; //チャンネルミックステスト var ChnM = imageAdjustments({ type : 'ChnM' , Enumerated : ["presetKind","presetKindType","presetKindCustom"] , data : [ ["Cyn " , 50,0,0,0], ["Mgnt", 50,0,0,0], ["Ylw " , 0,100,0,0], ["Blck" , 100,0,0,0] ] }); $.writeln(ChnM); //トーンカーブテスト var Crvs = imageAdjustments({ type : 'Crvs' , Enumerated : ["presetKind","presetKindType","presetKindCustom"] , data : [ ['Cyn ',[[0,114],[100,50],[255,200]]] , ['Mgnt',[[0,114],[100,50],[255,100]]], ['Ylw ',[[0,114],[100,20],[255,200]]], ['Blck',[[0,114],[100,200],[255,200]]] ] }); $.writeln(Crvs) })();
なんとなく、感覚がつかめたような気がする。
ただ、やはりlogから正規化していく作業はメンドクサイなー。
これ読んどこかな
カラー図解 DTP&印刷スーパーしくみ事典 2010年度版 (Works books)
- 作者: ワークスコーポレーション書籍編集部
- 出版社/メーカー: ワークスコーポレーション
- 発売日: 2010/02/20
- メディア: 単行本
- 購入: 1人 クリック: 68回
- この商品を含むブログ (7件) を見る
DTPエキスパートの試験とか取ってないので、ホントに知識が曖昧なんですよね。
- 作者: 西岡祐弥,佐々木一,長野雅広,ミック,森田創,鶴岡直也,西林孝,高林哲,羽生章洋,小飼弾,角田直行,はまちや2,矢倉眞隆,白石俊平,羽田野太巳,古橋貞之,宮川達彦,伊藤直也,武者晶紀,川口耕介,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2010/02/24
- メディア: 大型本
- 購入: 10人 クリック: 308回
- この商品を含むブログ (25件) を見る
まとめてマスク。
インデザインだとドラッグアンドドロップするだけで狙ったボックスの中に配置してくれるのに。
それと比べるとイラストレーターのマスクは数があると途端に手間のかかる作業になってしまう。
そんな時はやっぱり…
スクリプトで解決するのでした。
上の画像のようなボックスに画像を当てはめていく作業があったとして、
とりあえずドラッグアンドドロップで画像を配置します。
入れたいパスに対応するように適当にならべる
そしてスクリプトを実行すると
狙ったボックスに対応するように画像をマスクします。
おお、ラクチン。
//2010-02-13 とりあえず #include 'c.js'; #include 'hvg.js'; #target 'illustrator'; (function(){ function my_error (message){ alert(message); return false; } //選択中のパス var P = c('selection').filter('pathItems'); if(P.length == 0)return my_error('パスが選択されていません。'); //選択中のリンク画像 var I = c('selection').filter('placedItems'); if(I.length == 0)return my_error('リンク画像が選択されていません。'); //数が同じでないなら終了 if(P.length !== I.length)return my_error('パスと画像の数が違います。同じ数にしてください。'); //位置情報から順番を決める P = hvg(P); I = hvg(I); //繰り返し処理 P.each(function(CP){ var CI = I.next(); var NG = app.activeDocument.groupItems.add(); CI.resize(CP.width/CI.width*100,CP.width/CI.width*100); CI.left = CP.left; CI.top = CP.top; CI.move(NG,ElementPlacement.PLACEATEND); CP.move(NG,ElementPlacement.PLACEATBEGINNING); NG.clipped = true; }); })();
「使用したカラーを追加」した後に
イラストレーターの「使用したカラーを追加」を実行すると、運が悪いと使用したカラーを追加、「仕様」上の注意のような現象に遭遇します。怖い怖い。みなさん気をつけましょう。
実際には、いろんな場面で指摘されている現象に遭遇した経験があるわけですが、発生のメカニズムがいまいちつかめず、なかなか再現できません。
という怖い話はここまでにして。
「使用したカラーを追加」でK100%を「グローバルカラーとして」追加する方法ということをわざわざしたかというと。
ライブカラーの、いまいち痒い所に手が届かない感じをなんとかしたかったからです。
こういう時はスクリプトで…ということになるのですが、
残念ながらイラストレーターのJavaScriptからは、
アピアランスやグラデーションメッシュ、シンボル等をゴニョゴニョとすることができません。
半ばあきらめていたのですが、ふと「使用したカラーを追加」で「スウォッチに使用している色をすべて登録すればスクリプトでゴニョゴニョできるのでは?」と思いついたのでした。
というわけで、「使用したカラーを追加」を使用した後にスクリプトでドキュメント上のカラーをいじることができるようになったのでした。
ちなみに上の画像で使っているスクリプトはこれ「イラストレーターでカラーミキサー。色混の移植版です。