OneonetのPyBE

Python,Blender,Excelのいろいろ

Blender x Python アルキメデスの螺旋でドミノを並べるスクリプト

アルキメデスの螺旋(Archimedes' spiral)と呼ばれる方程式 r=a\theta によって表される曲線(うずまき)があります。線同士の間隔が等しいのが特徴です。この方程式を利用して渦巻でドミノを並べてみました。

グラフにプロットするだけなら計算式そのままで良いのですが、ドミノということでポイントが2つあります。1つは、等間隔となる必要があり、1つドミノ(キューブメッシュ)を配置したら一定距離になるまで次のドミノを配置しないこと。直前のドミノのx1,y1と配置しようとする新ドミノの位置x2,y2の距離を測り、距離が一定値以上となったら配置するようにしています。ドミノの高さ以下の距離であれば大丈夫です。 プロットする位置は計算で導き出せるようなのですが、何をしてもうまくいかなかったので、細かくループを回してその都度距離を測定する方法にしました。2点目はドミノの角度です。グラフにするだけなら角度という概念は出てきませんが、ドミノが前のドミノと次のドミノの中間の角度になる必要がありますので、プロットするタイミングでZ軸の角度を調整します。

動画を見て頂けるとわかるのですが、ドミノを並べる個数とその間隔、うずまきの密集具合も指定することができ、どの場合でもドミノがキレイに倒れます。

f:id:oneonet:20220316162743p:plain
2000個までやってみました。スクリプトの実行完了に10分ぐらいかかります。パラメタを少し変えるだけで、渦の密度を変化させられるのも面白いですね。

是非気持ちよく倒れていくドミノの様子を動画でご覧になってください。
oneonet-blog.blogspot.com