C4D.Python: CineversityのPythonエフェクタを再現

勉強のために、CineversityのNAB 2015 Rewind – Colin Sebestyen: Python Coding for Motion Designの40分ごろのPythonエフェクタを再現した。といってもプレゼンターもコピーして使ってくれと言ってくれていたので、基本そのままコピーしました。なお、Pythonエフェクタのモードは完全コントロールで、ユーザデータも4つ作成しています。

このPythonエフェクタは、各クローンがstepsizeで指定した距離分、XYZ+-の各方向に限定して1フレずつランダムに動くようになっています。width/height/depthの値は、クローンが動く範囲になります。



コード

新たに自分でクラスWalkerを作って、独自の関数Stepを作成していますが、面白いのがランダムに動く仕組みが、サイコロを使って決めるような方法だという点です。整数のランダム数を生成するrandint()関するを使って0~5(XYZ*2(+とーの2方向))その出た数字でどの方向に移動するかを決めていることです。

実際動くようになりましたが、動かしてみるといろいろ問題点もありました。どうもクローン数を変更するとうまく動かないことがあります。一度カウントした値をどうも覚えてしまうようです。モードをパラメータコントロールに切り替えてから再度完全コントロールに戻すと更新されました。どこかで初期化するコードを入れる必要がありそうです。

このCineversityのプレゼンは非常に面白いのでお勧めです。ベクトルやフォースの解説もしてくれます。自然な動きをアルゴリズム化する方法を紹介しています。特に1時間1分ごろからスクラッチでPythonエフェクタを解説付きで作成してくれるので、勉強になると思います。

こちらのアルゴリズムについては、Nature of Codeという本で紹介されているそうです。日本語版もボーンデジタルさんから出ているそうです。