ついにblenderに手を出すときが来てしまいました。
今回はblenderでの簡単な流体シミュレーションとBlenderGISの紹介をしたいと思います。
blender初心者なので多めにいただければ幸いです。
今回作った完成品がこちら。
ちなみにUnityで以前流体シミュレーションをした記事もありますので、ぜひこちらも!
blenderとは
blenderは3DCGアニメーションを作成するための統合環境アプリケーションです。フリーソフトで誰でも触れるのにも関わらずいろんなことができます。
BlenderGISの紹介
BlenderGISはblenderに追加するアドオンのひとつで、 Google MapやOpenTopography、OSMデータから画像や地形、建物などを簡単にモデリングしてくれるものです。こちらの記事を参考にしました。
こちらでアドオンをダウンロード(ページのCade>Download zip)できます。
インストール方法は、”編集>プリファレンス>アドオン>インストール”でダウンロードしたzipファイルをそのまま読み込みます。その後”3D View:BlenderGIS”にチェックが入っていればOKです。
するとオブジェクトモードの右にGISが追加されています。
まずはこの”GIS>Web geodata>Basemap”をクリックします。
すると世界地図が表示されます。ここではモデル化する範囲を選択します。今回は霞が関付近をモデル化しますので、霞が関が入るようにズームしEボタンを押します。
すると地図がトリミングされます。
今度はこの範囲に地形標高データを追加します。”GIS>Web geodata>Get elevation”をクリックし”30m”を選択します。これはおそらくメッシュサイズを表していると思います。 地図の視点をスクロールボタンクリックで回転して見ると地図が凹凸していることがわかると思います。
最後にこの地形に建物を追加しましょう。”GIS>Web geodata>Get OSM”をクリック、 “building”を選択し”Elevation from object”にチェックをいれてOKをクリックします。
これは数分時間がかかります。ちなみにBuildings extrusionの下の3項目は
Default Height:建物に高さが定義されていないときのデフォルトの高さ
Random height threshold:デフォルトの高さをランダムにするときのしきい値
Level height:建物高さがある場合の高さの倍率
と思われます。
そしてできあがったのがこちら、
うおおおおおおおおおおなんかかっけー!!
動画はこんな感じです!ちなみにスクロールボタンクリックで回転、Shift+スクロールボタンクリックで平行移動、スクロールで拡大の操作をしています。
流体シミュレーション
オブジェクトの設置
それではこの霞が関を水攻めしたいと思います!(他意はありません)
流体シミュレーションには特にアドインは必要ありません。もともとのBlenderの機能に流体シミュレーションが搭載されています。わくわくがとまりませんね!
blenderの流体シミュレーションについては、こちらの動画やこちらの動画やこちらの動画がわかりやすくてとても参考になります。
まず霞が関モデルを小さくします。一度このまま計算したのですが、モデルが大きすぎるのかうまく計算できませんでした。
小さくするにはモデルを選択して、”S”ボタンから変更します。
大きなサイズから小さなサイズにする際には範囲の開始を終了を変更しないと途中で画面から消えてしまうなどの問題が発生します。そのために、”N”ボタンからビュータブを選択して、範囲の開始と終了を変更します。今回は下図のように設定しました。またビューのロックを設定し直さないとスクロールボタンのクリックの際の回転が思ったとおりに動いてくれないことがあります。そのため、固定の3Dカーソルを注視にチェックを入れます。
それでは流体シミュレーションの設定に移ります。blenderの流体計算のイメージはこんな感じ(液体の場合)。ドメインが計算範囲でこの中で液体を発生させたり、障害物を設定したりして計算をします。今回の場合、ドメイン、エフェクター(ビルor地形)、ジオメトリ(水攻めする液体)を使います。
そこでまずは流体計算をする範囲(ドメイン)を設定します。”Shift+A>メッシュ>立方体”で新規で立方体オブジェクトを追加します。そして霞が関を切り取るくらいの大きさにサイズを変更(Sボタン)します。
この中に液体をセットしたいのですが、このままでは見にくいです。そこでZボタン>ワイヤーフレームでオブジェクトをワイヤー表示にします。これで中身が見えるようになりました。
次にジオメトリ(与える液体)を作成します。まず先程作成した立方体をコピー&ペーストします。すると同じ大きさの立方体が複製されます。これをSボタンで少しサイズ変更して小さくします。さらにS+ZボタンでZ軸に対するサイズ変更を行い平べったい直方体にします。その後G+Zで+Z軸方向へ直方体の位置を移動させます。できたのがこんな感じ。
最後にエフェクターとして使う予定の地形+建物ですが、少し高さをはっきりさせたいのでオブジェクトを選択してからS+Zでサイズ変更します。
流体シミュレーションの設定
オブジェクトの準備が整いましたので流体シミュレーションの設定をしていきます。細かい設定の詳細についてはこちらのサイトが参考になります。
まずエフェクターの設定です。まず建物のオブジェクトを選択し、右下のウィンドウから物理演算プロパティを選択します。流体を選択します。そして以下の通り選択します。
タイプ:エフェクター
エフェクタータイプ:コリジョン
表面の厚さ:1.0
終わったら地形オブジェクトにも同様の設定をします。表面の厚さを設定したのは、薄くすると液体が下へすり抜ける減少が著しかったからです。
続いて、ジオメトリの設定です。作成した直方体を選択し、右下のウィンドウから物理演算プロパティを選択します。流体を選択します。そして以下の通り選択します。
タイプ:フロー
フロータイプ:液体
フローの挙動:ジオメトリ
最後にドメインの設定です。立方体を選択し、右下のウィンドウから物理演算プロパティを選択します。流体を選択します。そして以下の通り選択します。 まずは仮計算のため、ほとんどデフォルトです。終了フレームは計算時間を短くするために短くしました。設定後に”すべてベイク“で計算します。
ドメインタイプ:液体
キャッシュ>タイプ:全て
計算時間はこの程度であれば数十秒~数分程度でした。計算後ウィンドウにパーティクルが生成されているのがわかります。
Space or 下の再生ボタン▶をクリックしアニメーションを一度再生してみます。
おおおおおー!なんか流れてます!
ちなみにエフェクターの厚さを0.0にしたときのアニメーションはこんな感じ、すり抜けちゃってます。
これでなんとなく計算がうまくいっていることがわかりましたので、本計算を行います。
ドメインの流体の設定で、まず、”すべてベイク”の部分が”解放“になっているので、これをクリックして解放します。以下のようにします。より詳細計算のために解像度を上げました。また、メッシュにチェックをすることでパーティクルの表現だけでなく液体の表面が表示されるようになります。以上を変更して”すべてベイク“をクリックします。
分割の解像度:128
メッシュにチェック☑
計算時間は20分ほどでした。できたアニメーションがこんな感じ。
うおおおおおおおお!ちょっとおもらししていますが許容範囲としましょう。それにしても重いのでカックカクですね。レンダリングして動画にするまではこれで我慢します(なにかいい方法あるのかな?)。
見た目の変更
それでは液体の見た目をいじっていきます。ここはセンスが関係するところなので、あまり参考にしないほうがいいかもしれません。
見た目をいじるのでワイヤーフレームからマテリアルプレビューモードに変更します。
そしてドメインの立方体を選択し、右クリックからスムーズシェードを選択します。これで少しなめらかになると思います。
立方体のマテリアルポロパティから新規を選択し、以下のように変更します(参考サイト)。
ベースカラー:水色っぽい色(白色のままでもいいと思います。)
粗さ:0.0
IOR:1.333
伝播:0.8
アルファ:0.3
設定>ブレンドモード:アルファブレンド
このときジオメトリの方の直方体はもう使わないので、消しても良いと思います。
これで液体の見た目は完了です。再生するとこんな感じ。
あとはカメラの位置と照明の位置を好きなように変更します。
カメラの位置と照明の設定はこんな感じ。
ライト:サン
強さ:10.0
スペキュラー:5.0
あとはレンダリングするだけです。まず右下の出力プロパティでファイルフォーマットを動画の好きなフォーマットに設定します。今回は”FFmpeg動画“にしました。その後左上の”レンダー>アニメーションをレンダリング”でレンダリングが始まります。これも20分くらいかかりました。
できた動画がこれ!
やったぜええ!
まとめ
blenderでblenderGISと流体シミュレーションで遊んでみました。
初心者の私でもできるくらい流体シミュレーションは簡単でした。またアドインのblenderGISも非常に使い勝手がよく作りたい街の3Dモデルをこんなに簡単に!と驚きました。
Unityでも流体シミュレーションを行いましたが、blenderの方は3DCGアニメーションのソフトであるからか、計算が早いのはさることながら見た目をかなりきれいに表現できるのではないかと感じました。
流体シミュレーションの幅がもっとひろがりますね!
参考サイト
- https://styly.cc/ja/tips/jp-blender-gis-2/
- https://github.com/domlysz/BlenderGIS
- https://www.youtube.com/watch?v=JsHJ1v1gErU
- https://www.youtube.com/watch?v=PnrVEIMcU00
- https://horohorori.com/blender-note/physics-simulations/about-fluid-simulation-domain/
- https://www.tomog-storage.com/entry/Blender-Beginner-HowToBaseOfWaterSimulation
- https://www.youtube.com/watch?v=j-7y37e0sHA
コメント
[…] 流体シミュレーションで霞が関を水攻め! | 底辺動物の雑記ブログ […]