ステアリングアニメーションがあるのなら、足のアニメーションもできるかもしれない・・・・ということで覚書です。
私の場合は、ドライバのアニメーション作成は、driver_rigを活用させていただいています。
#以前の覚書に書いたのでそちらをご参照ください。
steer.ksanimとdriver_base_pos.knhでドライバポジションを変更(blender) - takeyohのおぼえがき (hatenablog.com)
で、このrigは、
DRIVER_RIG_HAND_L、DRIVER_RIG_HAND_R、DRIVER_RIG_Shin_L、DRIVER_RIG_Shin_R
の4つのボーンに対して、ボーンコンストレイントとしてIK(インバースキネマティクス)というのが設定されています。
このあたりの基礎知識はきっと世の中で紹介されていると思うのでバッサリ割愛!
動かすことを優先して書きます。
デフォルトでは、右足(DRIVER_RIG_Shin_R)にgas pedal(アクセル)、左足(DRIVER_RIG_Shin_L)にclutch pedal(クラッチ)が割り当てられています。
新しくオブジェクトを作成してそれに割り当てても良いですが、せっかくgas pedalとclutch pedalがあるので、それを流用しました。
今回のサンプルは三輪車ですが、通常サイズのドライバでは大きすぎて、足がうまく配置できません。(大人が三輪車に乗ることを想像すれば、だいたいわかりますね。)
なので、まずはドライバのサイズを小さく子供サイズにしました。
ドライバのサイズ変更方法です。
1)DRIVER_DRIVERを選択後ポーズモードにし、ポーズ直下にある”DRIVER_RIG_Center”を選択。
2)スケールを選択して、体のサイズを調整。
以上です。簡単ですね。(^^v
この状態で、足(前に投げ出してますが・・・)と手(ハンドルを握らせてます。)の位置を合わせ、ハンドルに合わせて手のアニメーションを設定しました。
で、以前の通り、steer.ksanimとdriver_base_pos.knhを作ります。
これをcar modに配置すれば、体のサイズ、ドライバポジション、ステアリングアニメーションは反映されます。
で、本題のペダルこぎです。
上記のblenderファイルを保存、コピーしてペダルアニメ作成用ファイルを別途用意します。そして、先ほどのハンドルアニメーションを削除して、アニメーション設定がゼロの状態にします。
次に、gas pedalとclutch pedalのオブジェクトをペダルの位置に動かして、足の位置を合わせます。ここが結構思い通りにならないですが、地道に調整して頑張ります。(笑
それがこんな感じです。
2つのオブジェクトの位置をペダルに合わせるのではなく、足自体がペダルにかかるようにオブジェクトを移動・回転させます。(上の絵だと右足のgas pedalはペダルからだいぶ離れてますよね。)
この状態でアニメーションのフレームを1フレーム目に合わせ、gas pedalとclutch pedalの両オブジェクトの位置と回転を記憶します。
次に、片足ずつ、ペダルをこぐアニメーションを設定していきます。
今回はちょっと手抜きをして、4パターンのアニメーションを設定して、それを回すことにしました。(本当はもうちょっと細かく設定してあげた方がよいと思いますが、今回は足が高速回転するので、細かく設定しても見えないです・・・)
今回はアニメーションを21フレームで作っています。(ステアリングと違って21フレーム固定ではないですが、ファイルをコピーしたため、21フレームになっているだけです)
1フレーム目(と21フレーム目)
6フレーム目
11フレーム目
16フレーム目
これで、右足のアニメーションは完成です。同じやり方で、左足をclutch pedalオブジェクトを使ってアニメーション設定します。
動かすとこんな感じ。
設定ができたら、ペダルをこぐアニメーションをエクスポートします。
1)”DRIVER_DRIVER”を選択
2)ファイルメニュー→エクスポート→Assetto Corsa Animationを選択
(このカスタムエクスポートフィルタの導入方法も上の過去覚書に書きました)
3)使用は「選択したオブジェクト」を選択。3つのチェックボックスのうち、真ん中だけチェックします。あとエクスポートするファイル名(今回は"pedal.ksanim")を指定します。こんなかんじ。
で、あとは作成したksanimファイルをcar modのanimationsフォルダの中にコピーし、アニメーションを動かす設定をext_config.iniに書きます。
今回の例では、スピードやタイミングに関係なく、ただひたすら全力でこぎ続けるだけなので、高速でループ再生させています。
ext_config.iniへの追記
[ANIMATION_0]
BIND_TO_LIGHT=1
FILE=pedal.ksanim
TIME=0.1
LOOP_WHILE_ACTIVE=1
0.1秒で一周、それをLOOP_WHILE_ACTIVEでループさせています。BIND_TO_LIGHTはライトをオン(1)にすると、このアニメーションが動くという設定になります。
先ほどsteer.ksanimを作成したとき、足を前に投げ出したポーズにしてましたよね?
なので、
ライトをオフにする→アニメーションが止まる→足の位置は前に投げ出した場所になる。
ライトをオンにする→アニメーションが動く→全力でペダルをこぐアニメーションが動く
ということになりました。
その結果はこちらです。
同じ方法を使えば、自転車をこいだり、キックボードでキックしたりできそうです。
さらに頑張れば自力で全力疾走も可能(?)かもしれません。#大変そうなので私はやりません。