ちょっとネットでカオス、連成振り子でググってみると、YouTubeで人気な参考の動画があった。しかもかなり見事にカオスな様子が再現されている。
ただ、なんか特別な物理エンジン使っているように読めたので、普通のUnityで実現できるか試してみた。
【参考】
・【物理エンジン】4重振り子で突然やって来るカオス現象
やったこと
(1)設計と具体化
(2)大量に作ること
(3)OculusGoで動かしてみる
(1)設計と具体化
このところ振り子は作っていたので以下の方針でやった。
①とにかく4重振り子を作ってみる
ここが一番苦労した。。
つなげる部分のつなげ方が当初わからず、画像見てくっつける作業
しかし、これだと角度を変えると思った以上に離れていることしばしば
ということで最初の棒を作ったら、その下に棒をつける。。。つまり以下のように実施した。
上の状態から、最初の棒をDuplicateしてもう一本棒を作る
次に、作った棒を最初の棒の下に移動する(画面でなくHierarchyで)
すると座標が相対座標になって位置決めし易くなるから、ローテーション0度で縦に並べてつながる位置に配置する。
そして、一度配下からCameraの配下に移動して長さを変えると、下のような状況になってさえいれば自動的に最初の棒の下にきっちりつながる。
これは棒の長さをいろいろ変えてもつながるようになる。
ということで、以下のように4連結して4重振り子にする。
長さと重さはまずは適当に決める。
②角度をつける
この辺りが今回の作業で一番気を使うところ。調整が思うようにできない。
実際、きちんと動くためには以下二点気を付けないといけない。
①振り子の連結点をきちんと指定する
②振り子が回る時他の振り子にぶつかる可能性があるので、半径分ずらした
③適当にゆらして様子を見る
4つの振り子の調整をここでやる。
今回は、
振り子の重さ = 5e7:2e6:1e5:1
振り子の長さ = 7:5:4:2.5
とした。重さはちょっと大きすぎないかだけど、思惑は以下二つ
①振り子が安定して振れて、かつすぐには止まらないように
②末端の振り子でカオスな現象を見たいため小さくする
あたりです。参考のものも一段目の振り子があまり乱れないので、もっと大きいと思われる。
④たくさん作って動かしてみる
これは、
①4つの振り子をまとめて指定して、一括してDuplicateする
②等間隔になるように移動位置をまとめて指定する(一括をまとめたままZを入力)
③4つの振り子がぶつからないように4つの振り子のZ位置をここにずらして指定
以上を繰り返して30個作った。
(3)OculusGoで動かしてみる
Unityできちんと動くことを確認していつものようにOculusGoで動かしてみよう。
ということで、参考のように綺麗に動かすにはまだまだ調整が必要だけど、まあカオスな4重振り子のカオスな振動は見えました。
ここでは、角度を少しづつずらすとか面倒なことはしていません。
単純に、計算誤差が発生するので自然に振動が乱れてきます。
ということで、以下のような動画が得られました。
【Unity】4重振り子のカオスな運動をやってみた♬
※画像をクリックするとYouTube動画につながります
まとめ
・カオスな4重振り子の運動をUnityで実現できた
・初期値は特に考慮せず、カオス状態になる
・OculusGoでVRできた
・パラメータを変更すればもっといろいろ試せそうである
・角度をその場で変更して観察したい