技術

Bulletで人体を歩かせる


(iOSシミュレータによる実行結果を録画しました。実行&録画したマシンの性能がよくないのでちょっと動画がカクカクしてます。)

前回と比べたら飛躍的な進歩に見えます。

まず、最初の直立を難なくこなしてますね〜。
しかも不自然ですが一応歩いてます。
(モーションがおおげさなのは、元々走らせるつもりで作ったからです。)

仕組みとしては、btGeneric6DofConstraintを使いキャラクタの動きを上下に制限しつつ、脚の動くスピードに連動して前進させるようにしてます。
ただ、そのままだと前後左右にバランスを崩して倒れてしまうので、胴体の傾きに応じてそれを補正するようなトルクを与えてます。

モーションは当然ながら手付けではなく、各関節のモーターのトルクをリアルタイムで計算して適用した結果となってます。
実は、画面の左右端を上下にスライドすることによってその移動量が左右の手足の動きに連動するように作ったんですが、シミュレーターだとマルチタッチが不可能なのでその辺りのスライドの移動量を自動的に生成するようにしています。

しかし安定させるために結構ガチガチの制約をかけてるので、前回の言葉の定義を使うなら、確かに直接的にゲーム物理は使ってないですが、リアル物理の中にゲーム物理を構築して使ってる感じですね。
でもあくまでもリアル物理の中でやってるので、それなりに段差とのインタラクションがあったりして面白いです。

途中膝で歩いたり元に戻ったりしてますが、当然そんな機能を実装したわけではなく、物理エンジンによって自動的にそうなってます。

まぁ最後は地面と接触したらラグドール化するってコードは書きましたけどね。

コメントを残す

メールアドレスが公開されることはありません。



※画像をクリックして別の画像を表示

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください