ものすごく久しぶりのBlender関連の記事になります。
今回はタイトルにあるようにBlender2.8を使って水面(海)を作って、そこにオブジェクトを浮かせる方法の備忘録です。
では始めます。
1:Blenderで海の動きを作る
Blenderを起動させてデフォルトキューブを削除した後、「Shift+Aキー」を押して出てきた中から「Mesh」→「Plane」を選択してPlaneを追加します。
追加したPlaneを選択した状態で「Modifier」アイコンのタブを選択し「Add Modifier」のプルダウンをクリックします。
出てきたリストの中にある「Ocean」を選択します。
モディファイアの各設定項目について、以下の赤枠で囲ってある部分のように入力します。(※Resolutionは解像度でこの値を大きくするときめ細かい波を再現できますが、処理はかなり重くなります)
値の設定が済んだら、1フレーム目が選択されていることを確認してから「Time」の項目上にマウスカーソルを持ってきた状態で「i」キーを押してキーフレームの登録をします。
登録するとTimeの項目が黄色くなり、1フレーム目にひし形のマークが追加されます。
250フレーム目まで移動させ、Timeの値を5.10などの値に変更してから同じように「i」キーを押してキーフレーム登録をします。
キーフレームの登録が終わったら「Editor Type」のプルダウンから「Graph Editor」を選択します。
グラフエディタの画面に切り替わるので、下の画像の赤枠の部分をクリックして選択した後、ドラッグで移動させて直線になるように調節します。
調節して以下のように大体直線になるようにします。
プルダウンから再び「Timeline」を選択して戻します。
「Play Animation」ボタンをクリックしてアニメーションを再生してみます。
実際にアニメーションを再生すると以下のようになります。
PCスペックの関係でFPSは出ていませんが、波打っているような動きになっているのがわかると思います。
これで海の動きは完成です。
2:海の見栄えをよくする
海の動きはできたので、海の見栄えをよくするためにMaterialの設定をしていきます。
Planeを選択した状態で画面のタブから「Shading」を選択します。
Shadingの画面に切り替わるので、以下の赤枠にある「New」ボタンをクリックします。
すると以下のように「Principled BSDF」というノードと「Material Output」というノードが追加されます。
「Principled BSDF」ノードのBase Colorを青っぽい色に変更し、その他赤枠の部分の値を変更します。
「Principled BSDF」ノードの変更が終わったら「Shift + Aキー」を押して出てきたメニューから「Input」→「Attribute」を選択します。
「Attribute」ノードが追加されるので、NameのところにOceanモディファイアで設定した名前と同じものを入力します。
「Shift + Aキー」を押して「Shader」→「Emission」を選択します。
ノードが追加されるので「Attribute」ノードのColorと「Emission」ノードのColorをドラッグでつなぎます。
「Shift + Aキー」を押して「Shader」→「Add Shader」を選択します。
ノードが追加されるので、ドラッグして各ノードを以下のように繋げます。
「Layout」タブに戻り、「Viewport Shading」のところから「Rendered」のアイコンをクリックすると、レンダリング結果の画面が表示されます。
これで海のMaterialの設定が終わりました。
この状態で再度アニメーションさせてみると以下のようになります。
ちょっと荒々しい感じの海になったかと思います。
これで海部分ができたので、オブジェクト名を「ocean」に変更しておきます。
3:ものを浮かべるためのオブジェクトを準備する
海部分ができたので今度はものを浮かべるための準備をしていきます。
「Shift + Aキー」で「Mesh」→「Plane」を選択します。
追加された「Plane」を選択した状態で左上のプルダウンから「Edit Mode」を選択する。
「Edit Mode」に切り替わるので「Edge」→「Subdivide」を選択して面を分割します。
頂点が増えて「Subdivide」の項目が出てくるのでそこをクリックします。
「Number of Cuts」の項目を4に設定します。
分割後「Edit Mode」で全頂点を選択したままの状態で「Modifier」アイコンの「Add Modifier」をクリックします。
リストの中にある「Shrinkwrap」を選択します。
「Target」のところに海のオブジェクトをである「ocean」を設定します。
次に「Context」アイコンを選択して「+」ボタンをクリックしてグループを追加します。その状態で「Assign」ボタンを押して頂点をグループに登録します。
これで海面の動きに合わせてPlaneが動くようになりました。
4:ものを浮かべる
浮かべるためのPlaneの準備ができたので、次は実際に浮かべたいものの設定をしていきます。
「Edit Mode」になっているので「Object Mode」に戻ります。
「Shift + Aキー」で「Mesh」→「Monkey」を選択してSuzanneを追加します。
追加したSuzanneを選択した状態で「Object Constrains」アイコンの「Add Object Constraint」をクリックします。
リストの中にある「Copy Location」と「Copy Rotation」の2つを選択して追加します。
「Copy Location」、「Copy Rotation」両方において、Targetに浮かべるためのオブジェクトである「Plane」、Vertex GroupにPlaneのグループである「Group」を設定します。
ここまでできた状態でアニメーションを再生すると、以下のように波の動きに合わせてPlaneが動き、そのPlaneの座標に合わせてSuzanneが上下に動きます。
5:浮かべたものを動かす
4まででPlaneとSuzanneが連動するように設定できているので、Planeの座標や回転をキーフレームとして登録して移動させれば以下のように動かすことができます。
1フレーム目の時にLocationとRotationを「i」キーでキーフレーム登録します。
同様に250フレーム目の時に値を変更したLocationとRotationを「i」キーでキーフレーム登録します。
アニメーションの再生を行うと以下のようにSuzanneが移動と回転を行います。
6:Planeをレンダリング時に見えなくする
これで動き全体は完成ですが、Planeは見えてほしくないのでレンダリング時は見えないようにします。
「Plane」を選択した状態で「Object」アイコンの「Visibillity」の項目にある「Show in Renders」のチェックを外します。
これでレンダリング時にPlaneのオブジェクトが見えなくなります。
7:その他もろもろを設定して完成
あとは照明やカメラ、SuzanneのMaterialの設定などをして出力した完成動画が以下になります。
ブログ用 pic.twitter.com/pGknvoi6MA
— シン・ほいっぷ@進化する風雲児 (@sin_deviding) July 5, 2019
以上がBlender2.8で水面(海)を作ってものを浮かせる方法です。
割と簡単に波などを作れることがわかったので、いろいろ遊んでいきたいです。
・参考資料