前言撤回日記

Post PostScript

100520monroe01.jpg
100520monroe02.jpg
前回に引き続きタイトルにPostって言葉の入ったPostです、とか書くともう意味不明。

最近はAdobe製グラフィックソフトも十分スクリプタブルになってきて、JavaScript、AppleScript、VBScriptでかなりのところまで操作できるようになった。

こうなるとPostScriptなんてウジウジやってられないのであり、年に一度、年末にしか使わないスキルなど単なる持ち腐れである。

JavaScriptはWebの仕事で馴染みがあるし、なにより開発環境やデバッグ環境、実行環境としても断然やりやすい。Scriptographerなんてオモシロそうなプラグインもある。

というワケでこれからはPostScriptさんには裏方として働いていただきますので今後ともよろしくお願いいたしますと思ったりした。

まだJavaScriptで数万単位のオブジェクト扱ったこととかはないのだけれども。

postcard 2010

100519postcard.jpg
あけまして5月です。もうじき半年が経とうとしています。バカか。

昨年末は押せ押せムードで時間が足らず、今年の年賀状は若干手抜きになった。
手抜きというか、ここ数年は毎回手書きPostScriptによるタイポグラフィが基本テーマだったのだけれども、今回はPostScriptはぜんぜん書いてなくて、パスの長さを調べるのにJavaScriptを使っただけ。

本来ならばここから可読の境界を探る的な段階を踏むべきなのに、あいにく時間切れでそこまでもいかなかった。しかもオフセット印刷の入稿期限はすでに過ぎていて、オンデマンド印刷しかできず。
それにしても、まだ勤め人だった10年くらい前に試したことがあるオンデマンド印刷、当時と比べてやはり技術は進歩しているのだなあ、という実感がある。

コレを受け取った友人から、毎度年賀状がおもろいけど池田亮司とか好き?と言われたが、寡聞にして存じませんでした。
the official ryoji ikeda web site

おお、なるほど、ちょっと好きかも。
まあ、好きって言うことであれば国内だけ見ても杉崎真之助さんとか大杉学さんとか好きな作風の人いっぱいいます。

SHINNOSKE INC. WORK
702 NANAMARUNI DESIGN WORKS

Peter De Jong Attractor with AS3.0

090411peterdejong.jpg
ジワジワと描画されます。停止・再描画は画面クリック。


なんかあいかわらず書くこともないので今さら感あふれるエントリーでお茶を濁す。

昨年、FlashをCS4の販売直前にCS3にアップデートした。我ながらアホかと思うものの目算が外れただけで何の考えもなしにそうしたワケではない。他人様にはどーでもいい話であるが。

で、実際にはアップデート前からさして不満はなかったのだけれども、ActionScript3.0もそろそろやっとかないとキャッチアップできなくなる、という危機感から購入してみたという。Flexなどやってられん。

その後しばらく時間を投資して多少は慣れてきたので、以前にActionScript2.0で作ってココに載せたPeter De Jongアトラクタをプロットする作例を3.0で書き直したモノを載っけておきます。

今回はコードと.Flaファイルもさらしものに。

サンプル(.zip)ファイル


var p:Point = new Point();
var mtrx:Matrix = new Matrix();
var _x:Number, _y:Number, dx:Number, dy:Number, a:Number, b:Number, c:Number, d:Number;
_x = _y = 1;
dx = dy = 0;
var stageW:uint = stage.stageWidth;
var stageH:uint = stage.stageHeight;
var step:uint = 10000;//一度に描くドットの数
var flag:Boolean = true;
var eraser:Rectangle = new Rectangle(0, 0, stageW, stageH);//消しゴム
var bgColor:uint = 0x00000000;
var bmd:BitmapData = new BitmapData(stageW, stageH, false, bgColor);
var bm:Bitmap = new Bitmap(bmd);

addChild(bm);

//インク
var point_mc:Shape = new Shape();
point_mc.graphics.beginFill(0xFFFFFF, 0.1);
point_mc.graphics.drawRect(0, 0, 1, 1);

//BitmapData上のピクセルにインクを置く
function plot(m):void {
var m = m;
bmd.draw(point_mc, m);
}
//BitmapDataをクリア
function clearBitmapData() {
bmd.fillRect(eraser, bgColor);
}

//初期値をランダムでセット
//(これだとカオスが発生するとは限らないが……)
function init():void {
clearBitmapData();
a = (Math.floor(Math.random()*100))*0.1-2.5;
b = (Math.floor(Math.random()*100))*0.1-2.5;
c = (Math.floor(Math.random()*100))*0.1-2.5;
d = (Math.floor(Math.random()*100))*0.1-2.5;
}

//Peter De Jong アトラクタを書く
function makePeterDeJong(e:Event):void {
for (var i:uint = 0; i< = step; i++) {
_x = Math.sin(a * dy) - Math.cos(b * dx);
_y = Math.sin(c * dx) - Math.cos(d * dy);
dx = _x;
dy = _y;
mtrx.tx = (stageW/4) * _x + stageW/2;
mtrx.ty = (stageH/4) * _y + stageH/2;
plot(mtrx);
}
}

//マウスクリックで描画開始・停止
function action(e:MouseEvent):void {
if(flag){
flag = false;
init();
addEventListener(Event.ENTER_FRAME, makePeterDeJong);
} else {
flag = true;
removeEventListener(Event.ENTER_FRAME, makePeterDeJong);
}
}

//描画
action(null);
flag = false;

stage.addEventListener(MouseEvent.CLICK, action);


前のバージョンではプロットの際にいちいちlineTo()していたのでオブジェクトがどんどん増加していた。
そのため処理が遅くなって負荷も向上したため数万プロットで処理を停止するようにしていたが、今回はBitmapData上に描いているのでいつまで実行させてもパフォーマンス落ちないはず。

個人的にはステージサイズを大きくしてプロットしたあと画面をキャプチャし、そこからPhotoshopブラシを作るとかして遊んでます。

TwitterLog++

以前「Hello World」的な物を試してみてからこっち、全然ブックマークレットというモノを作った事がなかったので、休みに乗じてなんか作ってみっか、と自分用のブックマークレットをいくつか作成。
あんまり世間的に需要のありそうなモノはないのだけれども、一個さらしておきます。

Twitterではhomeのログをリンクからさかのぼれるのは10ページまでなのだが、実際にはURLのケツにくっついている数字を11、12、と変えていくとそれ以降のページも見ることができる。
いちいちURL欄の末尾の数字を選択して、書き換えてリターン、というのも煩わしいので、それをブックマークから行えるようにした。

TwitterLog++

上のテキストのリンクを右クリックでお気に入りに登録しておき、Twitterで自分のHomeにログイン。
お気に入りからこれを選択すると11ページ目のログに行く。以降、お気に入りからこれを選択するたびに12、13、とログをたどって表示します。

一応MacのFireFox、IE、WinのIE6で試した限りでは動くっぽいけどSafariはダメだった。

追記(2008.7.31)
けっこう前からですが、Twitterの仕様が変更されて、自分のログですら10ページ以上たどれなくなりました。最低ですね。
これではミニブログとしてもまるで機能しないのでいずれ改善されることを願いますが、とりあえず現状ではこのブックマークレットは使用できません。あーあ。

TIME AS GRADATION

071210timeasgradation.jpg
TIME AS GRADATION


時計作った。
時に応じて刻々と表情を変化させるグラデーションが、自分ではあまりやらないような色の組み合わせを見せてくれるのではないかという、PC頼みの偶発ビジュアルコンテンツ。

時、分、秒をそれぞれ角度に変換して色相環上を周回する。

この辺、うまい数式とかありそうなものだが、全然わからないのでif分岐の力業であります(泣)。

The Fuse Kit




先日のエントリーでもちょっと触れたFuse Kit、あらためてすごい多機能かつパワフルなクラスライブラリであります。

上にあるようなムービー程度のモノは完全にワンフレーム・ワンレイヤーで作れてしまう。
トゥイーンによるオブジェクトの移動のみならず、ぼかしや色変換、グローなどのフィルタエフェクトもすべてスクリプトで容易に制御できる。

色々な記法が用意されているが、ちょっとしたスプラッシュムービーやバナーを作る向きにはFuseクラス(シークエンス機能)を使うのがオススメ。
ターゲットになるmcとトゥイーンのパラメータをセットでどんどん登録しておいて、Fuse.start()すると登録した順にトゥイーンを再生してくれる。

便利すぎてプリセットのmxパッケージには戻れません。
もう自前のモーションライブラリなんか全然いらねってカンジ。
上のムービーのflaファイルはココに。まだ使い始めて日が浅いので色々変な事してると思うけど。

こちらのサイトがちょうわかりやすくて大変参考になりました。感謝。
にゃあプロジェクト – ウェブログ – FuseKitを試すのだ! (1)

もちろんこの素敵ライブラリを作っている人にもThank you for your great workっす。

HDR2

070110hdr2.jpg
今度はもう少し自然に。

いやあ、勝手にドラマチックな写真になっておもしろいなあ。

070110hdr_source.jpg
元の写真は大体こんなカンジ。
手持ち撮影なのでズレを直すのがメンドくさい。
ブラケット撮影って段階調整できたっけか……。

HDR

070110hdr.jpg
Photomatixを使ってHDR画像を作り、JPEG出力してみた。
もっと自然に仕上げてもいいのだが、せっかくなので思い切って大げさな処理に。
このウソくせえトーンがたまらない。

Terragen™ 2

070107terragen.jpg
景観3DCG作成フリーソフトウェア
Terragen™ 2

いくつか機能制限はあるものの、本格的な景観3D画像が作成できるフリーウェア。
今まで見たこの手のソフトの中では商用をふくめてもかなり高性能な方に入るだろう。マッピングが流れたりするような判りやすいCG臭さはまったくなく、サンプルを見るとあまりに自然すぎて、実は全部ロケでした、とか言われても信じてしまいそう。

Terragen 2 Images(イメージギャラリー)

何か自分でも作ってみるかと思い、とりあえずマニュアルのチュートリアルに沿って色々やってみたのが上の画像。ショボくてすんません。OS X版は現状はまだバグも残っていてなかなか思い通りには動いてくれなかった。

しかし今後に大きく期待できそうなソフトウェアであります。

via. 3D景観CG作成フリーソフト「Terragen 2 Technology Preview」登場 – GIGAZINE

pstopdf

Postscriptを手書きする時にインタプリタが必要な場合、もちろんAdobe Illstratorなどを持っているならそれを使えばいいし、MacGhostViewなどのシェアウェアを使用してもいいのだが、せっかくOS XはQuartzエンジンを使ってPostScriptをインタプリティングしてくれるのでこれを利用するのもおもしろいと思う。

まずプレビュー.appにpsファイルを放り込むとpdfに変換して描画してくれる。
ただ、なぜかオブジェクトが一定数を超えるとエラーになってしまうようだ。
これではepsファイルを10万個読み込んで描画する、などという時に困る(ふつうやらねえよ)。

そこでもう一つの手段としてターミナルでOS Xの独自コマンドpstopdfを実行するという手がある。

まずpsファイルを用意する。例えば適当なテキストエディタで新規ファイルを開き

%!
%%BoundingBox: 0 0 595 842
40 dict begin

/drawrect {
newpath
0 0 moveto
0 100 lineto
100 100 lineto
100 0 lineto
closepath
fill
} def

50 {
3 {
rand 100 mod 100 div
} repeat
0 setcmykcolor
drawrect
10 10 translate
} repeat

end
showpage


とか書いて「hoge.ps」などという名前で保存する。
そのあとターミナルで

$ pstopdf


としてからhoge.psをターミナルウィンドウに放り込みリターン。
すると同じフォルダの中に「hoge.pdf」という名前でpdfファイルが生成されるハズ。
なのでこれをsafariやプレビュー、あるいはAdobeReaderなどで開くと描画された状態を確認することができる。

簡単なエラーメッセージも吐くので、デバッグ環境が貧弱なPostscriptプログラミングには多少は役に立つのではなかろーか(ちなみにPostscriptインタプリタはdict biginを繰り返し使いすぎるとオーバーフローでスタックする事を最近知った)。

で、作例は単なる色違いの四角形を50個描いているだけだから面白みも何もないけれども、使い方次第でかなり楽しめます。

Copyright © 2004 elbro.net