akiraaniの日記: MMD物理エンジン(アイデアのメモ)
MMDでMMDエンジン(不正なIKボーンの挙動を利用するやつ)を使わずに物理演算機能だけで安定した回転運動を取り出す機構のアイデアを思いついたのでメモ
うなぎの天のぼりによる横回転運動の取り出しでもうちょっといい方法を思いついた。
・用意するオブジェクト
回転親球剛体
回転追従球剛体
板剛体(始動用坂)
はみ出し防止剛体
・原理
回転親球剛体の回転を回転追従剛体に-X倍で付与し、回転追従剛体は摩擦で回転親球剛体を回す。摩擦で回った回転が回転追従剛体にフィードバックされるので、うなぎの天のぼり理論が回転運動に対して適用できるはず。
-X倍しているので、摩擦が100%回転運動に変換されると、回転スピードがどんどん上がっていく計算になるが、実際には一定速度以上になると回転親球剛体の回転減衰と摩擦がつりあうところで回転速度が安定するはず。
始動時、回転親球剛体は回転する必要があるため、少し坂を転がってから追従球剛体に接触するようにする。
また、-X倍を整数倍にしない(1.8倍くらい?)ことで回転速度に微妙な揺らぎを与えることが出来る。→MMDエンジンに対するアドバンテージになるかも。
ついでに、あえて、揺らぎを与える目的で考えてみる。
大きな反発係数を利用した打ち上げ機構で斜めに吹っ飛ばして、坂道を転げ落ちるようにしておく。その上で、坂の角度やら摩擦係数に多少の起伏をつけてやることで一定周期で回転に揺らぎを与えることが出来る。
例えば、回転減衰を与えた上で摩擦有の坂を転がっていくと一定速度まで回転数が上がる。その後、摩擦がないエリアに行くと回転減衰で回転速度は落ちていく。
追記:うなぎの天のぼり回転エンジン、軸固定のためにセンターボーン追従剛体と軸回転方向を制限したジョイントで接続した剛体を間に挟むことで、安定した回転を取り出すことには成功した……が、動画出力すると途中で回転が止まってしまう。おそらく、原因は動画出力時は処理落ちで動きが止まってしまうフレームが発生し、その瞬間に全部の動きが止まってしまうためと思われる。解決方法は今のところ思いつかないので、等速運動を取り出したければおとなしくMMDエンジンを使うしかない。
ゆらぎ回転の方は案外あっさり動いた。摩擦係数とか移動・回転減衰を調整すれば回転数も変わるし、非衝突グループを増やせば複数のランダム性のある回転を取り出すことが出来た。一応モデルも公開。
さらに追記:
いろいろぐぐったら、物理演算エンジン作ってる先駆者がいた。さっくりモデルダウンロードしてみたけど、どうやら剛体重ねあわせでプルプルエンジンを作り、IKで回転方向を制御するという手法の模様。
IKの挙動と設定方法を勉強したら、もうちょっと柔軟に色々出来るようになりそうだなぁ。
MMD物理エンジン(アイデアのメモ) More ログイン