今回は、「動き」のモデリングがテーマです。
球体が跳ね返るアニメーションは何回か作ってきました。例えば以下の様な記事です。
「計算で物体を動かす」
「ビー玉がスロープを跳ね落ちる」
「跳ねるビー玉+効果音」
どれも、堅い球体がコンコンと床面に衝突して跳ね返る物でした。
今回は、未知の生物が飛び跳ねながら移動しているかのような動作を楕円面で表現して、アニメーションにしてみようと思います。
床面でぴょんと跳ねる時、人間ならば、一旦ひざや体を曲げてエネルギをため込んでから一気に伸ばすことでジャンプします。
ぴょんぴょん飛び跳ねるイメージにするためには、エネルギをため込むフェーズと、それを一気に開放するフェーズが必要だと考えました。
これを球体の縦方向の長さだけを伸ばしたり縮めたりして表現しようと思います。縦方向の長さだけ、伸びたり縮んだりするので、「球」ではなくて楕円面になります。
たったこれだけの事なのだけど、アニメーションさせてみると、未知の生物が飛び跳ねているように見えてきます。(ひいき目?)
少なくとも、堅い球体がコンコンと跳ねていた、今までのアニメーションとは全く違った様子を見せます。
跳ねる物体が描く軌跡は下図の様な放物線となります。
上図の様な、始点(0,0)から、頂点(L/2,H)まで上がって、着地(L,0)までの三点を含む放物線の式を求めます。
つまり、放物線の一般式、
y=a×x2+b×x+c
より、未知数a,b,cを求めます。
3元3連立方程式だけど、座標(0,0)を通るお陰でc=0は自明なので、実質的には、ただの2元2連立方程式です。こんなの手で(自力で)簡単に解けるのですが、頭が弱って来た年寄りはMathematicaにやらせました。
最初に定義した関数f[ ]が、先に示した放物線の一般式でyを移項した物です。次のSolve[ ]組み込み関数で3元3連立方程式を解かせています。a,b,cが求められました。
やはりc=0でしたが、cはy軸方向への平行移動なので、放物線を球体(楕円面)の半径に相当する分だけ持ち上げるのに使っています。
Mathematicaと言う強力なツールについては、以下記事に詳細説明がありますので、ご参考にしてみてください。
「#8-5 Mathematicaを使ってみよう」
最後にリンクする動画の後半では、球体が床面に到達した時に、着地+跳ねる効果音を追加してあります。
跳ねる時の音は、「コン」と言う堅い音でも、「パン」と言う破裂音でもなく、「ペチッ」と言う様な粘着性の音をイメージしました。その様な音源を作成するため、幅5cmほどのプラスティック製30cm定規で、自分の腿や二の腕、お腹などをペチペチと叩きながら録音した音を加工しました(1^^;)っ。
加工した音源を、拙作sPeachの「ファイルメニュー ⇒ WAVミキシング」機能で、アニメーションのタイミングに合わせてミキシングして使っています。
sPeachのミキシング機能については、以下の記事で解説しています。
「WAVファイルのミキシング」
「跳ねるビー玉+効果音」
実は、まだちょっと、イメージした音とは異なっているのですが、これが限界でした。イメージ通りの音を作るのも、これまた大変な作業みたいです。
完成したデータをリンクしておきます。
1) | Xi-TRACEデータ | hopping_ball.xitr |
1)でレイトレーシングを実行します。
完成した動画を以下にリンクしておきます。
少なくとも、何かしら有機的な素材の球体を想像させます。