cellab: avril 2008アーカイブ

過日、紹介したCELLABのムービーだが、AVI形式なので、ファイルがダウンロードされ表示が始まるまでに時間がかかる。しかも、WindowsMedia等の外部プログラムで見ることになるのも些か面白くない。そこで、フラッシュのストリーミングビデオに変換してみたのがこれ。ピクセル単位の精細度と、色の鮮やかさでは負けるが、ブログ内に埋め込めるのが利点だと思う。

 

方法は少々複雑だが、心覚えのために以下に手順の概略を記しておく。

1)CELLABを用いてAVI形式の動画ファイルを作成する。これは「File」?「Make Movie」で簡単にできる。

2)作成したムービーファイルは、15f/secなので、通常だと表示が速すぎて状態遷移が良く判らない。このため、VirtualDubを用いてフレームレートを3f/sec程度に落とす。「Video」?「Frame Rate」で適当な値に設定すると同時に「Video」?「Direct stream copy」を選択。

3)これでゆっくりとした表示のAVIファイルが生成されるので、これをAny DVD Converterを用いてflvファイルに変換する。このソフトには無料体験版があり、変換対象の動画再生時間は3分に制限されるが、このような用途には、十分である。「出力形式」を「Flash 動画{*flv)」に指定するとともに、プロパティウィンドウで、ビデオサイズを元のAVIファイルのそれと合わせること。

4)生成した「*.flv」ファイルをAny FLV Playerで読み込む。「Publish」?「Publish Options」でPlayer file nameとFlv video URLを指定し、SizeのリストボックスからCustomizeを選択してWidthとHeightを元のAVIファイルのそれに設定しOKボタンを押す。

5)出力先に指定したフォルダに、「*.flv」ファイルと「player.swf」ファイル、および「flvplayer.html」ファイルが生成しているので、「*.flv」ファイルと「player.swf」を4)で指定したURLにアップロードし、「flvplayer.html」にアクセスする。動画のプレビュー画面と、埋め込み用のHTMLスクリプトが表示されるはずなので、これをブログ等の埋め込み場所に貼り込む。

以上で、完了である。5)の段階で動画プレビューが表示されない場合は、4)でURLが正しく設定されていないか、4)で設定した場所に「*.flv」ファイルと「player.swf」がアップロードされていないかのどちらかである可能性が高い。5)で貼り込んだHTMLファイルの内容を手動て修正する。


Cellab

| | コメント(0)
Islam5.jpg久しぶりに、セルオートマトンシミュレータの「CELLAB」でムービーを作ってみた。有名なのは、ジョン・コンウェイのライフゲームだが、ルールを変えればいくらでも面白い挙動を示すものを発見することができる。今日は、自作のルールを適用して、ちょっと面白い幾何学模様を生成するセルオートマトンで遊んでみた。

上に示す画像がそれだが、幾何学模様の面白さを示すためには、無圧縮の画像でないとダメなので、AVIファイル形式となっている。WindowsMedia形式では、圧縮に伴う画像の劣化があり、緻密な変化の面白さが判らないのだ。ダウンロードには少し時間がかかるかもしれないが、なかなか面白いので乞うご期待である。

20年ほど前は、このような計算負荷の重いシミュレーションがPC上で可能になるとは、夢にも思っていなかった。当時は、セルオートマトンに特化したPC用のISAボードが、MITで開発されており、私も大枚をはたいてアメリカから個人輸入して使ったものだ。セルオートマトンに特化したボードなので、速度は、当時の汎用スパコンのCRAY-2並みと言われていた。このハードウェア処理によるシミュレーションのパラメータを設定するのに用いられていたのがFORTHという言語だった。私がこの言語に接したのは、その時が初めてであったが、実に奇妙な、そして融通無碍な言語であった。

それはさておき、その後、PCのCPU処理速度が向上するにつれて、ハードウェアに頼らなくても汎用のCPU上でシミュレーションが可能となった。そのためのソフトウェアも市販されるようになり、何と、CADメーカとして有名なAutodesk社から「CA-LAB」というのが発売されていた。まだWindowsが出現する前のことなので、IBM互換PCのPC-DOS上で、これを動かして遊んだものである。

そして、現在、Windows化されたCA-LABが、前述のCellabである。CA-LABは、セルオートマトンのルールをCやPascalを用いて自分で定義することができたが、Cellabも同じ手法でルールを定義できる。上記の画像に用いられているルールは、私がCで書いたものであり、その内容は以下の通りだ。


#include "jcrule.h"

int jcrule(oldstate,     nw,  n      , ne,
                              w,   self,     e,
                              sw,  s     ,  se
            )
int oldstate, nw, n, ne, w, self, e, sw, s, se;
{
    int count;
    static int firstime = 1;

    if (firstime) {
       firstime = 0;
           strcpy(patreq, "islam");
           strcpy(palreq, "islam");
    }

    count = (nw*2 + n*3 + ne*2 + w*3 + e*3 + sw*2 + s*3 + se*2)%8;


    if(((oldstate >> 2) & 0x01) == 0) {
        if(count == 0 || count == 2 || count == 4) {
            if(self == 1) {
                return 7;
            } else {
                return 5;
            }
        } else {
            if(self == 1){
                return 6;
            } else {
                return 4;
            }
        }
    }
    if(((oldstate >> 2) & 0x01) == 1) {
        if(count == 0 || count == 2 || count == 4){
            if(self == 1) {
                return 3;
                } else {
                return 1;
                }
            } else {
            if(self == 1) {
                return 2;
                } else {
                return 0;
                }
            }
        }
}

変数等の詳しい内容は、前述のCellabのサイトにマニュアルが掲載されているので、興味のある人は、参照すると良いが、何はともあれ、オートマトンのムービーを見てみることをお勧めする。こんな単純なルールからは、思いもよらない多様なパターンが展開されるのに驚くことだろう。因みに、幾何学的な文様を次々と生成するので、このルールを「Islam」と名付けた。決定論的でありながら、予測不可能であるというのが、セルオートマトンの面白さだと改めて思う。




最近のブログ記事

アーカイブ