Processing

teamLabボーダレスの展示をPythonとProcessingで再現する(1)

前からやってみたかったプロジェクト。
青海にあるチームラボBorderlessの展示の中に、小人が歩き回りピンクの牛が跳ね回る謎めいた展示がある。アニメーションの勉強がてらあれを再現してみる。

基本的にはPythonでやりたい。データサイエンス(笑)で培ったものをここにも還元していきたい。
そしてこの類のアニメーションにはProcessingが向いていそうなので調べていると、Python ModeなるPythonで触れるモードがあったのでこれで実装することに。

やるべきこととしてはProcessingのサンプルの中にある[Topics]-[Animation]-[AnimatedSprite]が近い。
Animationクラスを作って、中にdisplayなどの機能を関数化している。サンプルを見てもらえばわかるけど、あれだけの機能がこのコンパクトな中身に収まっているのはすごい。自分でもできてしまうような気がしてきてしまう。

大まかな流れはこんな感じ。

1 Python+Processingに慣れる

これは最初の30分で終わった。
基本的なオブジェクトの発生やアニメーション、時間(HMS)の取得、マウス・キーボードからの入力への反応、オブジェクトの出現位置のランダマイズなどを一通りやった。流石にデータサイエンスよりは簡単なので楽に終わった。
これ以降はまだやっていないが想定として。

2 主体のクラスを作る

AnimatedSpriteでは

animation1 = Animation("PT_Shifty_", 38)

でAnimationクラスを呼び出しており、PT_Shifty_は連番で0000から0037まであるgifファイルだ。これを毎フレームで読み込みとリフレッシュを繰り返すことでオブジェクト自体の位置を動かしながら、なおかつオブジェクト自体も形を変化させているような設計。

ただ、ここではわざわざ引数としてcount=38(gifアニメが38枚あること)を教えているけど、もっと動的にos.pathあたりで普通にやれそうなもんだけど…

3 クラスに歩く、跳ねるなどの関数を実装

ということはデフォルトでは歩く機能を走らせっぱなしにしておいて、クリックした時だけそれを止めて跳ねる関数を走らせ、跳ねる関数が走っている時だけ読み込むgifを変化させれば跳ねている間だけ動作が変わっているように見せることができるはず。

4 対応するgifの作成

先にやるべきなような気がしてならないが。

歩いている時と跳ねている時で主体の振る舞いを歩いている動作、ジャンプしている動作に変わるようにする。
PT_Shifty_0000.gifの形態に習うなら、PT_Shift_walk_0000〜0009.gifとPT_Shifty_jump_0000〜0005.gifに動的に変更する形にするために、対応するgif画像を作成する。

5 1体だけで実装

おそらくフィールド上に1体だけ実装するのはそう難しくないと思う。

6 複数体を実装

ここはもしかしたらできないかもしれないし、場合によっては背景のない複数のアニメーションを作成してそれを上から重ねるみたいなことをする必要があるかもしれない。

適当に時間のあるときにやってみようと思う。まずは計画だけ。
draw()関数の中身はframeRate(n)の値に従って常に繰り返し実行され続けるのがちょっとややこしいような気がする。
あとは一旦生成させてしまったクラスを後からコントロールすることができるか、かなあ。