数理計算なアニメーション

image090310_01

CGの映像表現では流体シミュレーションやらリジットボディ・ダイナミックスなど物理シミュレーションが実用的に使用されるシーンが多くなっています。リアルタイム・グラフィックスではさすがにプリレンダリングほど複雑な表現はまだまだこれからといった感じです。シミュレーションまでは無理としても、簡単な物理計算式とちょっとしたタイミングの工夫だけでも面白い表現ができます。Touchではバネ計算や微分、積分といった処理がオペレータになっているので、私のような、根っからの文系の人間でも、物理計算を活用することができます。

image090310_02

サンプルのコンポーネントでは、まず最初にSlope CHOPで、入力値の勾配量(1次微分というらしいです)を計算します。勾配量は入力値に変化がなくなると、0になります。短時間ですばやく変化すれば、大きな値になります。コンポーネントの入力ポートのDirectionXとDirectionZにはマウスやジョイスティックなどのデバイスを接続すると動きが面白くなります。これらの入力デバイスを接続して瞬間的に数値を変化させることで、さまざまな勾配量を得ることができます。感覚的には画面のオブジェクトをつつくような感じです。

image090310_03

Slope CHOPの計算結果はパルス状のチャンネルです。Spring CHOPではこのチャンネル値を基に、バネの挙動のようなチャンネルを計算します。spring、mass、Dampingの各パラメータの組み合わせによって、結果が大きく変わります。今回は、3つめの入力ポート、Spring SWで2種類の異なるパラメータの組み合わせを切り替えられるようにしました。0 or 1のトグルです。バネの挙動が残っているときでも、切り替えると瞬時に挙動が変わります。
最後にデバイスを入力したあと、少しだけタイミングをずらすためにdelay CHOPを追加しています。これはリアクションの感覚的なタイミングの調整です。このように計算された数値がオブジェクトのrot値に割り当てられています。これだけの単純なネットワークでも物理的な効果を感じさせるアニメーションを作ることができます。rot値だけでなく、移動などにも応用することができると思います。

Download Touch File