今回は Grasshopper を使用して、作成したデータを以下の様にアニメーションにしていきたいと思います。この記事では私が暇つぶしに Rhinoceros で作成した、ププリンでアニメーションを作成していますが、皆さんは球体とか適当なオブジェクトでやってみてください。こちらのチュートリアルは動画化しております、動画の方がよい方は以下のリンクからどうぞ!
概要
上画像がコードの全体像となっております。各ブロックごとに説明していこうと思います。
移動させるオブジェクトを作成
- まずはアニメーションを作りたいジオメトリを作成します。私は Rhinoceros でププリンを作成しましたが、みなさんは適当に球とかで実装してみてください。
移動させる軌跡を作成
- 移動させるための軌跡を作成します。今回は 3 パターン【Z 方向に延びる直線】・【半円】・【任意の曲線】をモデル化しました。ここで作成した曲線をもとに移動させていきます。
- 3 種類の移動パターンを切り替えられるように、Stream Filter コンポーネントでフィルターを掛けておきます。Value list コンポーネントも接続しておきます。これで Value List で指定した曲線が抽出されるようになりました。
移動ベクトル作成 ①
- Data Recorder コンポーネントを用意し、適当な値を Panel コンポーネントなどで接続します。Panel コンポーネントの中身は空でもいいし何か値を入れても構いません。
- Trigger コンポーネントを DataRecorder コンポーネントにつなぎます。Trigger コンポーネント上で右クリックを押し、Interval を選びます。今回は 10ms を選択しております。
- Data Recorder コンポーネントの赤い丸ボタンを押すと、入力端子に接続した値が 10ms ごとに記録されていきます。(※出力端子に Panel コンポーネントを接続して確認してみてください。)
- List Length コンポーネントを接続すれば、10ms ごとに List Length の値が 1 ずつ増えていきます。
- Division コンポーネントで List Length の値を割ります。ここで割る数字を大きくすれば、よりアニメーションがゆっくり描写されます。
- 先ほど作成した軌跡を行ったり来たりさせるために、Sine 波の周期を使用します。Division コンポーネントから得られる数値を Sine コンポーネントに接続することで、-1 ~ 1 までの値に変換します。
- Absolute コンポーネントで絶対値にしておきます。
移動ベクトル作成 ②
- Evaluate Curve コンポーネントに最初に作成した軌跡を接続し Reparametraize します。t 値に先ほど作成した Absolute コンポーネントから得られる 0 ~ 1 までの値を接続します。これで軌跡上を行ったり来たりする点を作成することができました。
- End Points コンポーネントで軌跡の始点を取得します。
- Vector2Pt コンポーネントで軌跡の始点と軌跡上を移動する点を結ぶベクトルを作成します。
ジオメトリを移動させる
- Move コンポーネントで移動させたいジオメトリを接続し、作成したベクトルで移動させます。これでアニメーションのプレビューが完成しました。
プレビュー完成
適当に色付けしてプレビュー完成です。
Anemone を使用したケース
- こちら Anemone でも同じようなことが実装できます。Loop Start と Loop End を上画像の様につなぎ、Loop 回数を指定します。今回は 1000 回としています。
- Button コンポーネントを接続し押すと繰り返し処理が実行されます。この時出力端子 C からは Count が取得できますので、その値を上画像の様に接続すれば、同様なことが実装できます。ただし、ループ回数に達したら処理が止まります。(※Anemone はこちらからインストールすることができます。)
アニメーションを作成したい場合
- 実際にアニメーションを作成したい場合は、Number Slider コンポーネントを使用します。上画像の様に接続し、右クリックで Animation Control を開きます。
- 保存先・Viewport・サイズ・Frame Count などを設定し Ok を押せば以下の様に FrameCount 分の画像ファイルが出力されます。
- 後はこれらの画像を動画編集ソフトや Photoshop などで結合してアニメーション完成です。
以上になります。さほど難しくはないので是非ご参考にしてください。