- モーション用のジョイント割り当て
- ホイールローダのアニメーションレンダリング
前回、マテリアル割り当てまで完了しました。
今回はアームを連動させて、アニメーションレンダリングまで行います。
ホイールローダの最終回となります。
車輪部に回転ジョイントを入れる
車輪部に回転ジョイントを入れます。前後の2か所に入れることにしました。
前輪の回転ジョイントは以下のように指定。
後輪の回転ジョイントは以下のように指定。
ブラウザでは以下のように回転ジョイントを配置しています。
ブラウザで回転ジョイントを選択し形状情報ウィンドウの「回転ジョイント属性」の回転スライダを変化させることで、
車輪が回転するのを確認します。
車輪を使ったホイールローダの前進/後進は簡単なため、今回は行いません。
アームに動きを与える
アームは、大きく「アームを持ち上げる動き」と「バケットの向きを変える動き」の2つで構成することにしました。
前回マテリアルを割り当てる際に、3つの回転ジョイントを割り当てていました。
これをそのまま利用することにします。
アームの動きはこれで付けることができますが、連動しているわけではありません。
油圧シリンダーとの同期も行う必要があります。
そのため、モーションのストーリーを以下のように与えることにしました。
アームのモーション開始時の姿勢
はじめはアームを地面に落としている姿勢とし、ここからアームを持ち上げていくとしました。
まだこの段階では油圧シリンダーのモーションのためのジョイント指定などは行っていません。
アームを構成する3つの回転ジョイントのジョイント値を変更しただけです。
次に、アームの初期姿勢に合わせて油圧シリンダーにジョイントを割り当てていきます。
油圧シリンダー周りの部品を整理
油圧シリンダー周りで追加した部品は、アームの根元の回転ジョイント「回転-アーム」の子として配置しました。
これにより「回転-アーム」ジョイントの回転値が変化したときに、それぞれ子としてついてくることになります。
油圧シリンダー周りで追加した部品で、以下の紫色の部分をそれぞれの回転ジョイントに割り振っていきます。
以下の緑色の箇所はアームの動きにも左右されないため、「回転-アーム」ジョイントの外に出しました。
以下の画像の赤い箇所はバケットの回転と連動、紫色の箇所は中央の回転する部品と連動します。
そのため、それぞれの回転ジョイントの子となるようにブラウザ上で配置を変えました。
残りを整理しました。
以下はモーション用のジョイントは使いません。
アームを持ち上げる2本の油圧シリンダーです。
バケットを動かす筐体側から伸びる油圧シリンダーです。
バケットを動かす中央の部品から伸びる形状です。
油圧シリンダー周りのジョイント指定
油圧シリンダーは「ショベルカーのモーション指定 (旋回、アーム部)」の時と同じ流れでジョイントを割り当てます。
まず「直線移動ジョイント」で伸縮できるようにし、その親に「回転ジョイント」を与えました。
これはアームを押し上げる油圧シリンダーになり、合計2つあります。
回転ジョイントは、モーション時のずれズレの調整で使用されます。
この2つの油圧シリンダーはアームの子としてではなく筐体側からの制御になるため、
「回転-アーム」のアームの根元の回転ジョイントから外に出しています。
バケットを間接的に回転させる中央の油圧シリンダーは以下のようにジョイント構成しました。
中央からバケットにつながる接続部品のジョイント指定
中央からバケットにつながる接続部品は、回転ジョイントの中に拡大縮小ジョイントを入れて動きを調整することにしました。
部品の伸縮はこの機構では物理的にありえないのですが、見えにくい場所にある部品のため動きを省略しました。
この形状をバケット部に接続しているように見えるように、回転と拡大縮小ジョイントで位置合わせすることになります。
また、ブラウザで中央の回転する部品の子として移動させました。
ルートのボールジョイントを指定
ホイールローダをすべて内包するようにボールジョイントを移動の中心として与えました。
このボールジョイントを「ホイールローダー」という名前にしています。
モーションのキーフレームは、このボールジョイントごとに割り当てていきます。
以上でジョイントの配置が終わりました。
次にモーションウィンドウで動きを与えていきます。
アームを持ち上げる動きを与える
モーションウィンドウを表示し、「シーケンス」チェックボックスをオンにします。
「ホイールローダー」のボールジョイントを選択し、0フレーム目にキーフレームを登録しました。
アームを持ち上げる
※ この操作は、ジョイントモードで行うようにしてください。
モーションウィンドウで30フレーム目に移動し、ジョイントモードでアームの回転ジョイントを回転させ持ち上げました。
この操作でアームを持ち上げる油圧シリンダーがずれているため、回転と直線移動ジョイントを使って位置を調整します。
回転ジョイントで向きを合わせて、直線移動ジョイントで油圧シリンダーの長さを調整しました。
ルートのボールジョイントを選択肢、30フレーム目でキーフレーム登録しました。
モーションプレビューすると以下のようになりました。
アームの持ち上がりと、アームを支える油圧シリンダーが連動しているのを確認できます。
ただ、アームを押し上げているようには見えにくいため、
油圧シリンダーの押し出しの位置と向きは調整したほうがいいかもしれませんね。
そのまま進めます。
バケットを動かす
※ この操作は、ジョイントモードで行うようにしてください。
次にバケットを動かします。
50フレーム目でバケットを回転させました。
この段階では筐体側からの操作で連動はしていないため、中央の油圧シリンダーで押してバケット側を引っ張る、という動きを与えるようにします。
まず、中央の部品を回転させました。
この回転で中央の油圧シリンダーがずれるため、油圧シリンダーが中央の部品に接続されるように調整。
バケットとの接続部品の回転/拡大縮小ジョイントを調整。
ルートのボールジョイントを選択し、モーションウィンドウでキーフレーム登録します。
30-50フレームをモーション再生しました。
アニメーションレンダリング
以上でアニメーションレンダリングを行います。
モーションウィンドウのモーション設定で「フレーム数」を50としました。
マテリアルやレンダリング設定は前回のチュートリアルで完了しているため、
そのままアニメーションレンダリングします。
この時注意点があります。
ディスプレイスメントマップはポリゴンメッシュに変換
ディスプレイスメントマップを使用しているタイヤは、あらかじめポリゴンメッシュに変換しておいてください。
ブラウザでタイヤの自由曲面形状を選択、ツールパラメータより「ポリゴンメッシュに変換」を選択します。
ポリゴンメッシュに変換ダイアログボックスの「ディスプレイスマッピングの固定」チェックボックスをオンにしてOKボタンを押すと、
タイヤはポリゴンメッシュに変換されます。
また、表面材質ウィンドウでディスプレイスメントマップのマッピングレイヤが削除されているか確認しておきます。
これを行わないと、アニメーションレンダリングの1フレームごとに
内部的にディスプレイスメントマップからポリゴンメッシュ変換が行われることになるため、非常にレンダリング時間がかかってしまいます。
ディスプレイスメントマップのポリゴンメッシュ変換処理を行う前と後は、別ファイルで保存しておいてもいいかもしれません。
アニメーションレンダリング
改めてアニメーションレンダリングを行うと以下のようになりました。
これでホイールローダのモデリングからアニメーションレンダリングまで完了しました。
操縦席の内部がモデリングされていなかったり
実物の重機の動きに沿っていない部分もあるため、より正確に詰めていくのもよいかもしれません。
今までのモデリング工程と同じ流れで進めていくことができると思います。
次回は別のテーマを解説していく予定です。