どうも、71回生のenptukezuriと言います。ここしばらくはアマ研に亡命しているのでNPCAではあまり活動していません。それならなんで部誌なんか書くんだって思う方がいるかもしれませんが、よく見てください、なんとこの部誌には、ほかに71回生の執筆者はいないんですね。高2にもなって誰も記事を書かないってのはさすがにね、まあそういうことです。
さて、今回のタイトルは「Blenderのシミュレーション機能を使う」ということなんですが、内容は主に煙シミュレーションについて、レベルは入門書程度となっています。そんなわけで、Blenderについてよく知らないという方でも理解できると思います。それでは、Blender初心者の、Blender初心者による、Blender初心者のためのBlenderシミュレーション機能の記事、始めていきたいと思います。
ご存知の方も多いと思いますが、Blenderはオープンソースの3DCG制作ツールです。無料でありながら市販のソフトにも負けない機能性を持つと言われています。説明はこのくらいにして、とりあえず過去作を見せてみたいと思います。
図6.1: 恐竜です、多分。
まあ初心者丸出しですがお許しください。Blenderはこのようなモデリングだけでなく、アニメーション制作などにも使えます。ちなみに今回使うBlenderのバージョンは2.78cです。
すでにBlenderをインストール済みの方は読み飛ばしていただいて構いません。Blenderのダウンロードサイト(https://www.blender.org/download/)からお使いのPCに応じたBlenderのインストーラーをダウンロードして、あとはその指示に従えばインストールできます。
図6.2: blenderのダウンロードサイト
今回は煙シミュレーションについて扱います。手動で作ると途方もなく時間がかかってしまいそうな煙も、煙シミュレーションなら一発です。とりあえずどんな事ができるか見てみましょう。
図6.3: 煙シミュレーションの見本
この画像では煙だけでなく炎も付けています。それではさっそく実際の使い方を見ていきます。
Blenderで煙シミュレーションを使う上で最も簡単な方法がクイック煙です。まずBlenderを起動します。最初に立方体のオブジェクトが選択されているはずです。その上で、図6.4のように、Object > Quick Effects > Quick Smokeと選択すれば、図6.5のようになります。
図6.4: クイック煙の手順1
図6.5: クイック煙の手順2
先ほどの立方体が、辺だけになり、外側に新たに直方体が生成されています。そこで下側Timelineの真ん中あたりにある右向きの三角印のボタンをクリックして、再生してみます。すると、内側の立方体から煙が出ているのが分かります。これで一応は煙シミュレーションが使えたことになります。
クイック煙で自動でやってくれるいくつかの設定を手動でする方法を見ていきましょう。まず、先ほどのウィンドウを閉じて、新しくBlenderを起動します。すでに立方体Shift+Aまたは、3Dビューの下側にある「追加」から、追加メニューを開いて、 メッシュ > 立方体として新に立方体を生成します。さらに、オブジェクトモードとなっているところを、編集モードに変更します。下のようにトランスフォームマニピュレーターを拡大縮小に設定します。
図6.6: フローの設定
中央の丸を適当にドラッグして拡大します。そして、再びオブジェクトモードに戻します。最初の立方体を選択して、左側プロパティタブの物理演算を開いて、煙>フローと選択します。
図6.7: フローの設定
次に、拡大した立方体を選択して、物理演算を開いて、スモーク>ドメインと選択します。この立方体が
図6.8: ドメインの設定
先ほどと同じように、再生してみると、
図6.9: 煙シミュレーションの再生
のようになります。先ほどとは違って内側の立方体が辺だけにはなっていませんが、今回のテーマとは関係がないので割愛します。フローは、煙を発生させたり、消滅させたりするオブジェクト(ここでは煙の発生)で、ドメインとはシミュレーションを行う範囲を表すオブジェクトです。ドメインの外側ではシミュレーションは行われません。フローやドメインはメッシュオブジェクトであればどのようなものでも設定可能です。図6.10は、スザンヌをフローに、UV球をドメインに設定した例ですが、ドメインは立方体にするのが一般的です。ここではコリジョンについては触れませんでしたが、あとで扱いたいと思います。
図6.10: 立方体以外を設定した場合
オブジェクトの中で、特定の頂点の周辺から煙を発生させるように設定してみます。まず頂点グループを作っていきます。オブジェクトモードで内側の立方体を選択して、編集モードにします。そして、プロパティエディタからデータ(逆三角形っぽいボタン)を選択、頂点グループタブを開いて、右側のプラスボタンから新しい頂点グループを追加します。3Dビューで煙の発生源に設定したい頂点を選択して、頂点グループタブ下側の割り当てボタンを押します。これで頂点グループに頂点の割り当てが完了しました。
図6.11: 頂点グループの作成
再びオブジェクトモードに戻して、内側の立方体を選択した状態で、物理演算を選択します。下側フローの詳細設定のタブを開いて、頂点グループに先ほど追加した頂点グループを割り当てます。その状態でもう一度再生してみます。
図6.12: 頂点グループを設定した煙シミュレーション
こんな風に頂点グループに設定された頂点から煙を発生させることができました。
テクスチャを基にして煙の生成範囲を設定してみます。画像ではわかりやすいように平面から発生させています。まず、適当なテクスチャを作ります。プロパティエディタの「テクスチャ」から「新規」をクリックして新しいテクスチャを作ります。タイプから、適当なタイプを選択します。ここではとりあえず「変調ノイズ」にしておきます。フローに設定されているオブジェクトを選択して、プロパティエディタの「物理演算」の中の「煙のフローの詳細設定」タブを開きます。そして、「テクスチャを使用」のチェックボックスにチェックを入れます。その下に先ほど生成したテクスチャを設定します。この状態で再生した状態を上から見たのがこちらです。テクスチャが反映されているのが分かります。
図6.13: ノイズテクスチャを利用した煙シミュレーション
煙の設定に一部を説明します。
ここで煙とか炎とか流出口とか設定出来ます。図6.16では、左から煙、煙+炎、炎に設定した立方体を、左上に流出口に設定した平面を配置しています。炎に設定しても、炎からも煙が出ます。流出口は、接触した煙や炎を消滅させます。
図6.14: フロータイプの比較
解放されている部分に接触した煙は消滅します。
これを設定すると、ドメインの中で煙の存在範囲に応じた範囲でシミュレーションされます。無駄な計算が減るので軽量になります。
煙の模様を細かく出すことができます
図6.15: 高解像度の煙
これまでは煙はオブジェクトから直接発生していましたが、パーティクルを発生源にすることも可能です。パーティクルは簡単に言うと粒子です。新しくBlenderを起動して、最初の立方体が表示されている状態にします。プロパティエディタの「パーティクル」から下にある新規をクリックします。
するとパーティクルシステムが新しく作成されます。再生してみると、図6.16のように立方体からパーティクルが発生して降っていきます。
図6.16: パーティクルシステム
煙を生成するうえでは、パーティクルは上に行ってくれるとありがたいので、「フィールドの重み」タブから、「エフェクターのグループ」の「重力」をクリックしてたとえば-1のように負の数を打ち込みます。あまりに絶対値の大きい数を設定するとすごい勢いで飛んでいくのでわかりにくいかと思います。Shift+←とするか、現在のフレームを表す緑色の線をドラッグしてタイムラインを開始フレームまで戻し手から、再度再生します。すると図6.17のようにパーティクルが上に行きます。
図6.17: パーティクルシステム
それではこのパーティクルから煙を発生させてみましょう。ここで立方体にクイック煙をかけます。「煙」タブを開いて、フローソースの設定をメッシュからパーティクルシステムに変更します。その下のパーティクルシステムの項目に、先ほど作成したパーティクルシステムを設定します。すると、図6.18のように、煙がパーティクルから発生します。
図6.18: パーティクルから発生した煙
これでは煙が立ち込めすぎて嫌なので、ドメインに設定されているオブジェクトを選択して、「煙」タブから消滅のチェックボックスにチェックを入れます。ここではその下の時間を3ぐらいに設定しておくといい感じになりそうです。これでパーティクルから発生した煙が3フレームで消滅するようになりました。それから再びフローに設定されている立方体を選択して、「パーティクル」から「放射」タブの寿命を20に設定しておきます。これで発生したパーティクルが20フレームで消滅するようになりました。
図6.19: 設定を変更
===コリジョン
メッシュオブジェクトを選択した状態で、ドメイン、フローの横にあるコリジョンを選択すると、オブジェクトにコリジョンを設定することができます。図6.20はスザンヌにコリジョンを設定して下から煙を当てた状態です。煙がスザンヌにさえぎられているのが分かります。
図6.20: コリジョンを設定したスザンヌ
ここからは煙にマテリアルを設定していきます。
クイックスモークで生成した炎+煙をレンダリングした様子が図6.21です。
図6.21: そのまま
通常使うマテリアルとは異なり、マテリアルタイプはボリューム、テクスチャタイプはボクセルデータとなっています。設定を見ていきます。
ここではライティングの方法について設定できます。
カラーランプを使って炎のグラデーションを設定します。まずデフォルトの炎の様子がこちらです。
図6.22: そのまま
プロパティエディタからテクスチャを開いて、「色」タブを開きます。
図6.23: カラーランプ設定前
はじめこのようになっています。ここからグリッドと色を調整します。
図6.24: そのまま
図6.25: カラーランプ設定後
例えばこのようになります。
図6.26: カラーランプ設定後
再生してみると、透き通った炎ができました。
blenderレンダーはこのくらいにして、Cyclesレンダーを見てみます。初期状態から、レンダーをCyclesレンダーに設定して、立方体にクイック煙を掛けて、煙のタイプを煙+炎にします。どこか適当なところで画面を分割して、ノードエディタを開きます。
図6.27: 初期状態
記事のためにこのような配置にしていますが、やりやすいようにやってくれれば構いません。このマテリアルは、シミュレーションの結果から煙と炎を作って足し合わせるようになっています。これだけで基本のマテリアルはできているのですが、今回はBlenderレンダーと同じように薄い炎を作ってみたいと思います。
ノードエディタで「追加」>「コンバータ」>「数式」として数式のノードを作成し、「追加」になっているところを「乗算」に変更します。この乗算ノードをすでにある属性ノードと乗算ノードで挟む形で接続します。そしてカラーランプのアルファのソケットをどちらかの乗算ノードの余ったソケットにつなぎます。
図6.28: 乗算のノードを追加
この時点ではまだ変化はありません。それでは先ほどと同じようにカラーランプをいじってみます。
図6.29: 炎を薄くする
ついでに煙の密度がつながっている乗算の値も5から1に落としてやれば、こんな風に透き通った炎ができました。背景はプロパティエディタからワールドの設定を変更して背景を黒くしています。今回はこの辺で完成ということにしてレンダリングを行います。プロパティエディタのレンダーボタンからレンダータブのレンダーを押してレンダリングします。しばらく待つとUV/画像エディターに結果が出力されるので、F3を押して、あとはメモ帳などでもやるように普通に保存します。
図6.30: 結果
ちなみにこの後もう少し適当にマテリアルをいじっていると、こんな風になりました。
図6.31: 青くしてみた
いかがだったでしょうか。この様に煙シミュレーションを使えば簡単に煙や炎を作ることができます。以上で煙シミュレーションの機能をすべてではありませんが使える程度には紹介できたと思っています。それではお読みいただきありがとうございました。