Blenderで巨大バルーンの設置シミュレーション

人のサイズを超えるようなバルーンをアート作品として作ると、良くある悩み「設置イメージが湧きづらい」を解決するためにBlenderのclothシミュレーションでモデルを作るのですが、その方法をメモがてらまとめました。

ちなみに、写真は美術家の奥中さん(AIOIA)の制作途中の作品で今回のシミュレーションの元ネタです。

Cloth シミュレーション

Blender2.8以降で、Clothモディフィアに圧力の設定が入りました。今回はこの圧力機能を使って、巨大バルーンのシミュレーションをする設定方法を解説します。

オブジェクトの準備

地面と膨らませるバルーンを用意します。今回のバルーンは円状のシートを2枚貼り合わせたものですが、圧力シミュレーションは体積ゼロをうまく扱えません。なので、僅かに空気がはいったモデルを近似として用意します。

今回は作品の意図として、シワを寄せたいので平面2枚で作成しています。例えばビーチボールのように最初から球形になることを想定シートを断裁・加工する場合は、球状単純な球でOKです。

地面の上に載る形になるように高さの調整をするのを忘れないで下さい。

メッシュの細分化(必要に応じて)

細かいシワをシミュレーションしたいときは、メッシュを細かくしておく必要があります。「編集モード」画面で、「面選択」モードにして、全メッシュを選んで右クリックして「細分化」を実行します。面数が4倍になります。

地面へのコリジョン設定

そのままにすると、地面を突き抜けてたれてしまうので、地面にコリジョンモディフィアを設定します。Clothはコリジョンが設定された物体を突き抜けないようになります。隣接建物が有る場合などは必要に応じて設定します。

バルーンへのCloth設定

Clothの設定はモディフィアの設定の中ではなくて、物理演算タブにあるので、モディフィアの欄で設定する事はありません。

物理演算タブに設定が沢山有ります。フィルム状のシミュレーションに必要な部分のみを抜粋して説明していきます。

  • 品質のステップ数: 
    計算をどこまで精密に行うかの設定です。演算がぶっ飛んだ時はこの値をとりあえず大きくしてしのぎます。
  • 頂点の質量:
    頂点ごとの質量を設定します。目算で適当に決めます。
    頂点数を知りたい場合:blenderウィンドウ下部で右クリックすると「シーン統計」というメニューがあるのでそれを有効にすると、頂点数などの情報が右下に表示されるようになります。
  • 剛性:フィルムをやる場合は引張と圧縮を大きくして、剪断(斜めのシワの近似)と曲げを0にします。
  • 圧力、ターゲット体積: 2通りのシミュレーションがあるので後述
  • 圧力スケール: 大気圧を設定します。100kPaですね。

バルーンを固定する

巨大バルーンは通常、杭と錘をつかって、固定します。同様に地面に固定します。ボトムビューモードで「ウェイトペイントモード」にします。

ウェイトを1に設定して以下のように色を塗ります。

ウェイトを塗ると自動的に、「グループ」という名前で頂点グループができるので適当に「固定グループ」など分かりやすい名前に変更します

ここで作った頂点グループを、物理シミュレーションの「シェイプ」の「固定グループ」に設定します。

圧力の設定

最後に圧力の設定です。圧力は主に2つの設定方法があります。1つは最終的な形状をシミュレーションするための。「定圧設定」扇風機で空気を送り続けている時の設定です。 もう一つは中途半端な空気の量の時の「体積設定」です。巨大バルーンは膨らませてる途中が風に煽られやすく危険です。その危険予知活動に使います。

定圧設定

定圧設定は簡単です。「カスタム体積」を有効にして、「圧力」想定する扇風機の静圧気圧を入れます。(単位は気圧なので例えば扇風機の静圧性能が100Paなら0.001Pa)になります。なお、圧力スケールを1に設定しているときはkPa単位なので注意、その場合は0.1Paになります。ちなみに市販の扇風機は30Pa程度です。

実際には、経験と照らし合わせて圧力を微調整します。AIOIAでつかう農ポリ(積水フィルルム 花野華)での経験で言えば、扇風機の出力ではまさにこんなもんって感じです。

体積設定

体積設定の場合は「圧力」を0に設定して、カスタム体積の体積の所に入れる空気の体積を設定します。このとき品質のステップを非常に高い値にしないと無茶苦茶な計算結果になります。(この例では100)

さらに、品質のステップを100等の大きな値にしても、爆発でも起きたの?ってぐらいにバルーンが暴れます。

理由は簡単で、0フレーム目の体積の数十倍の体積を設定するというのは高圧ガスを風船に仕込むのと同じです。そんな爆発的な速度で膨らむ風船を正確にシミュレーションするのは難しいです。

なので以下のように40フレーム目までは「定圧設定」、41フレーム目からは「体積設定」という風なアニメーション設定をします。

40フレーム目で急に空気がぬけてるのが見てとれると思います。初期体積から見ると数十倍の体積でも、膨らんだ体積からみれば1/2程度と圧力変動が小さく見えるというのが計算上のコツです。

風の影響を入れる

あとは風の影響を入れれば、通常やりたいシミュレーションは完成です。

風に関しては物理単位がついてないので、経験にあうように風の強さを入れて行きます。以下のデモでは強さ100にして風向をグルグルと3回転回弱回しています。
正確なシミュレーションは期待できないので、作品の見た目よりも風の影響で半径何mのものをなぎ倒すかという確認に使います。中途半端に空気が入ったバルーンが一番やっかいです。以下のバルーンは膨らませるとおよそ直径9mですが、こんな感じで動いてる時にバルーンの中にはいると80kgの人間でも無力に吹き飛ばされます。近寄ってはいけません。

データダウンロード

今回使ったデータはこのリンク先からダウンロード出来ます。上の解説まちがってるよーということがあったらTwitter の@akira_youまでそっと教えて貰えると嬉しいです。

参考:圧力設定具体的意味

圧力設定の意味を知りたい人向けのメモです。

基本公式:
差圧=ターゲット体積/現在体積 -1 + 圧力

この差圧がシートの張力と釣り合う。ここでの「圧力」は「ターゲット体積比」から求まる正規化されたもの(=1気圧表記)なので、 実際の圧力への変換は「圧力スケール」をかけることで行われる。 例えば、体積を半分にすると差圧が1が発生する。この圧力は通常大気圧と等しい。なのでスケールとしては大気圧をkPa単位で設定する。
なおターゲット体積が指定されてないときは初期体積が使われ、ターゲット体積が0のときは体積効果を無視して圧力のみが生きる。
流体の密度は「水圧」相当の挙動の算出に用いる。 下のほうがふくれて、上のほうが凹むといった効果を出すために使うので、日常では水や砂ぐらいしか適用相手いない。