水面にモノを浮かべると言っても今回は物理シミュレーションではなく、海洋モディファイアーによる水面の動きに自動的に追従するようにしてみます。
要は水面上のオブジェクトに対し、マニュアルではなく自動でアニメーションを付けることが目的です。
前回作ったループする水面を元に作業して行きます。
1. 全体のフレーム数を前回の24から、この例では240に増やします。
2〜5.『海洋』モディファイアーのアニメーションキーフレームを下記のように設定します。
フレーム | 0 | 240 |
---|---|---|
時間 | 5.00 | 10.00 |
スケール | 3.000 | 0.000 |
フレーム | 0 | 240 |
---|---|---|
時間 | 0.00 | 5.00 |
スケール | 0.000 | 3.000 |
6. キーフレームを変更したら「補間モード」を「リニア」にします。
『海洋』モディファイアーのその他の設定は任意です。2つの『海洋』モディファイアーで「時間」と「スケール」以外の数値が全て一致していないと滑らかにループしません。
もしループがぎこちない場合は2つの『海洋』モディファイアーの設定が一致しているか確認してみてください。
逆にループさせる必要がない場合は『海洋』モディファイアーは一つで大丈夫です。
「追加」↓「メッシュ」→「グリッド」、
または Shift+A で新規メッシュから「グリッド」を追加。
- タブキー等で編集モードにします。
- オブジェクトコンストレイントから、
- 全てが選択されている状態で新規「頂点グループ」を追加します。
任意の名前に変更。今回の例では「Gridグループ」という名称にしています。 - 「割り当て」ボタンを押します。
重要ポイント
このとき「割り当て」ボタンを押すのを忘れないでください。
期待通りにならない場合、この「割り当て」を忘れている可能性が高いです。
「割り当て」がちゃんと設定されたかどうか確かめるには、選択解除しておいて「選択」ボタンを押してみれば判ります。
グリッドが全て洗濯されればOKです。
オブジェクトモードに戻り、
- 「モディファイアー」タブから、このグリッドに
- 「シュリンクラップ」モディファイアーを追加します。
- ターゲットに水面オブジェクト(この例ではCube)を指定します。
水面に動きをシンクロさせるオブジェクトを用意します。
船とか漂流物などが考えられますね。
この例ではアヒルちゃんを使用しています。
原点の位置より下が水面下になります。
- プロパティウィンドウのオブジェクトコンストレイントから、
- 「トランスフォームコピー*」を追加
- ターゲットを「グリッド」、
頂点グループを「Gridグループ」にそれぞれ指定。 - 「ターゲットのせん断を除去」にチェックします。
重要ポイント
*「位置コピー」だと文字通り位置しかコピーされないため、水面の状況に応じた傾きが反映されません。
「トランスフォームコピー」なら傾き等も含めて反映させることができます。
ただ、ターゲットオブジェクトを変形させたくはないので「ターゲットのせん断を除去」にチェックしておきます。
これで設定完了です。
アニメーションさせると水面に自動的に追従するようになります。
水面にアヒルちゃんを浮かべて自動で波の動きに合わせてループさせるテスト🌊🐤#Blender #b3d #blender3d #コンストレイント pic.twitter.com/vvAtRj4TcW
— ky01da (@KY0) April 15, 2023
もしアニメーションさせてもオブジェクトが動かない、つまり追従しない場合は……、
ええい、もう言い切ってしまおう!
上記のグリッドで頂点グループの割り当てボタンを押し忘れています。
自分もこれを忘れており初め動かずに悩みました。
また、オブジェクトが意図せず拡大されてしまう場合等は、「ミックス」の設定を「置き換え」から「オリジナルの前(フル)」等に変えてみてください。
同じ悩みで検索している誰かのお役に立てれば幸いです。