2002-02-17 Flash5―ActionScriptで脈動するハートの巻
シラネーヨ・ビデオクリップ「Shirane-4 Clips」の具現化を目指して
シラネーヨのビデオクリップの話ですが,密かに基礎研究を進めています。VJ(Visual Jockey)のライブに出向いて分析したわけではないのだが,「迫ってくるもの」,「水平方向に流れるもの」,「漂うもの」,「回るもの」,「マクロなもの」,「ミクロなもの」,「破裂するもの」,「格子」,「ブラウン運動する点光源」を組み合わせると,それらしいものができる気がしてきました(相変わらずいい加減な分析)。もっともこれらのネタを無数に用意しないといけないわけです。
先週,とりあえず「格子モノ」に挑戦してみました。ActionScript(Flashに装備されているインタプリタ言語)のお勉強を兼ねてハートのムービークリップを格子状に並べて脈動させてみました。「[Flash5] ウネウネするハート」がそれです。このFlashムービーの処理は重いです。30フレーム/秒で作ってあるからなおさらです。そもそもこの素材は単体で鑑賞するのではなくて,ほかの動画と合成して使います。WWWで配信して思ったとおり再生できなくても仕方がありません。心拍数120くらいに見えないときは,ウィンドウの大きさを加減してください。
最初,スクリプトでムービークリップをどうやって生成・動作させるのかよく分らなかったのだが,どうにかそれらしきものができました。以下はスクリプトの一部です。
var offX = 25; var offY = 25; var id = 0; var depth = 0; for (var y = 0; y<8; y++) { // 垂直方向の格子点の数 for (var x = 0; x<8; x++) { // 水平方向の格子点の数 var newName = "heart"+id; var obj; _root.attachMovie("heart", newName, depth); obj = eval(newName); // ムービークリップのインスタンスを獲得 obj._x = 50*x +offX; obj._y = 50*y +offY; obj._width = 45; obj._height = 45; obj.run = function () { // フレームが一つ進むたびに呼ばれる無名関数 this._x += 2 * Math.sin(this.theta); this._y += 2 * Math.sin(this.theta); this.theta += 2 * Math.PI / 10; // 誤差が蓄積されてしまうのだが実質,問題なし } obj.theta = 2 * Math.PI * y / 8; id++; depth++; } }
どうでもよいことが,Flash5のスクリプトエディタは使い勝手が悪すぎます。私はノーマルモードとエキスパートモードを幾度となく切り替えて使っているのだが,そのたびにソースが整形されてしまうんです。好きな空白の入れ方ってものがあるのに,勝手に変えられてしまうので困ってしまいます。
物理実験Javaアプレット
ビデオクリップたるもの画面上を動き回る物体が気持ちよく動いていなければいけません。それには私たちが自然だと感じる現象を演出すればよさそうです。しかしながら,例えば「水中から浮上する気泡」,「漂うシャボン玉」,「爆発」を表現するにはどうしたらよいのでしょうか。現象を数学的なモデルで表しコンピュータで再現すればできそうですよね。私はさきほど検索エンジンで物理実験のWWWを探してみたのですが,ほぼ目的に合致する素敵なサイトを発見したので紹介します。「JAVAアプレット物理教材」がそれです。このサイトからリンクされている「クオーク?で遊ぼう」や「量子力学的散乱アプレット」は操作が簡単で見た目も分りやすいです。
もっとも物理実験Javaアプレットのソースを分析して,ActionScriptに移植しなければいけないんですけどね。
VJの催しを鑑賞したい
私,VJの催しものとやらをテレビでしか観たことがありません。十数年来,繁華街に隣接した地域に住んでいながら,その手の施設に足を運んだことは一度もなかったのです。しかーしこの頃。俄然として興味が沸いてきました。もう衣装を揃えてしまったので(なぞ),春からぼちぼちイベントに出向いてみようと思います。