いろはメモ -Blender-

3Dソフトの使い方メモ。Blenderなど。

00物理演算の一つ、「流体(Fluid)シミュレーション」。
液体の動きをシミュレーションしてくれる。

水・はちみつ・油のプリセットが用意されていて
簡単な手順でリアルな液体が表現できる。

そんなお手軽物理演算を使って、グラスにお水を注いでみるまでの覚え書き。


流体シミュレーションの注意

  • 大量にメモリを消費する。解像度を高くするほど膨大になりPCに負担がかかる。下手するとクラッシュ。
  • モディファイア(細分化曲面など)が使われていると、メモリへの負担は爆発的に増大する。
  • シミュレーションは大量の一時ファイル(.bobj.gz)が作成され、自動的には消去されない。流体シミュ専用ディレクトリを作ること。
  • .bobj.gzファイルを削除することで、シミュレーションを削除することになる。
  • 流体オブジェクトは、必ずドメインオブジェクトの中に配置すること。
  • 流体オブジェクトにするメッシュは、法線が外側を向いていなければならない。(つまりは、面が裏返しだと駄目)。
  • 流体や障害物に指定するオブジェクト同士を重ねてはならない。
  • Blender2.73で日本語入力がサポートされたが、半角英数以外のディレクトリにファイルを保存すると、物理演算が機能しない


流体のタイプ

 コントロール(Control) : 流体の形状を変形させるようコントロール。
 パーティクル(Particle) : 飛沫。しずく・浮かぶ泡・トレーサー(霧みたいなもの)の3タイプがある。
 流入口(Inflow) : 液体が出てくる。給水栓。
 流出口(Outflow) : 液体が吸収されてなくなる。排水口。流入口とセットで使うとよいみたい。
 障害物(Obstacle) : 障害物。表面の滑り方(粘つき)を、滑る・滑らない・部分的に滑るの3タイプから選ぶ。
 液体(Fluid) : そこにあるだけの液体。流入口のように生成はされない。
 ドメイン(Domain) : 液体シミュレーションの領域。必ず必要。

Blenderのバージョンによって、日本語訳がちょっと違う。
流入口→発生源、などになっている。


シミュレーションの手順

流体にするオブジェクト(流入口)
水を注ぐ器のオブジェクト(障害物)
流体シミュレーション領域(ドメイン)の、3つのオブジェクトで構成される。

流体の作成

メッシュから「UV球」を作成し、流したい位置に移動させる。
この大きさで水が出てくるので、サイズも調整しておく。

01

UV球(Sphere)を「Water」にリネームした。


UV球を選択状態で
プロパティエディタ > 物理演算 タブから [流体]ボタンをクリック。

02


流体の“タイプ”「流入口」にする。

03

“ボリュームの初期化”「両方」に、“流入速度”にも数値を入れる。

【ボリュームの初期化】
 ボリューム:オブジェクトの内部を液体にする。閉じたメッシュのみ有効。
 外殻:メッシュの表面が薄い液体。開いたメッシュでも有効。
 両方:オブジェクト+外殻。よくわからないときは、とりあえずこれで。

【流入速度】
 水が発生する方向と速度。単位はメートル/秒
 数値が高いほど勢いよく放水される。
 Z方向を+の数値にすると上空に噴射する。下に落としたいときは-で。


障害物の作成

グラスを障害物に指定する。

グラスのオブジェクトを選択状態で
プロパティエディタ > 物理演算 タブから [流体]ボタンをクリックし、
流体のタイプを「障害物」にする。

05

“ボリュームの初期化”は「外殻」「両方」にする。
“スリップタイプ”は「部分的なスリップ」「自由スリップ」にする。
スリップタイプは、水の障害物への滑り方。
「自由スリップ」にするとつるつる滑っていく。
「部分的なスリップ」は「自由スリップ」と「全く滑らない」の中間くらい。


流体ドメインの作成

ドメインは流体シミュレーションが行われる範囲で、土台みたいなもの。
流体は必ずこの中に配置しなければならない。
ドメインに指定するオブジェクトの形状はなんでもよいが、常に箱型として扱われるので「立方体」が最適である。

立方体の作成

3Dビューのシェーディングを「ワイヤーフレーム」表示にして、
「立方体」プリミティブを作成、流体オブジェクトたちを囲むようにリサイズする。

06

立方体(Cube)は「Domain」とリネームした。
プロパティエディタ > 物理演算 タブから [流体]ボタンをクリック。


流体のタイプを「ドメイン」にする。

08

自動生成されるシミュレーション結果を保存するフォルダを作成して指定する。
エクスプローラから手動削除をしばしば行うので、
.Blendファイルと同じディレクトリだと分かりやすい。(デフォルトでファイルと同じディレクトリ)

「解像度」では、流体のメッシュの細かさを指定する。
数値をあげるほど細かく、滑らかに液体が表現されるが、メモリの負担と計算時間は膨大にかかる。

「時間」では、秒単位でシミュレーションの開始と終了時間を限定できる。
開始時間を遅らせると、フレーム1ですでに水が流れている途中の状態から始まる。


シミュレーションの開始 〈ベイク〉

シミュレーションはタイムラインのフレームごとに行われる。
デフォルトの250では長すぎるので25にした。
ドメインにしたオブジェクトの[流体]パネルの「ベイク」ボタンを押すと、シミュレーションが開始される。

11

情報メニューのヘッダにあるプログレスバーで、進行状況が確認できる。
途中でやめたくなったら、隣の×ボタンで中止できる。


計算が終了した後は、タイムラインの[アニメーション再生]ボタンを押す。
水がじゃんじゃん流れていくのが確認できる。

12


パーティクル(飛沫)を作る

ドメインにした流体オブジェクトの
[流体パーティクル]パネルにある「生成」に0以上の数値を入れると、水しぶきが発生する。

13

生成に数値を入れたら、
[流体境界]パネルのサーフェイス: 「細分化」には、必ず「2」以上の数値を入れること。

この設定でシミュレーションすると…

14

飛沫が発生する。


メッシュの解像度を上げて、最終的なベイクを行う。
一時保存フォルダに作られた.bobj.gzファイル群を手動削除しておく。

滑らかなお水にするには解像度500くらい必要みたいだけれども、
計算の終るのが待てないので250にした。
プレビューはいらないので1に。

15

この設定でベイクすると…


17

こうなる…。(わかりやすいように色を付けた)。
激し過ぎて、なんだか振りまくった炭酸飲料のようである。


モディファイアの適用

タイムラインのフレームから、お気に入りのフレームを選ぶ。

プロパティエディタ > モディファイア タブ から
Fluidsimの「適用」ボタンを押す。

20

流体のメッシュを「編集モード」で編集できるようになる。
流体シミュレーションの設定はすべてクリアされるので慎重に…。

参考にさせていただいたチュートリアル動画では、
オブジェクトを複製してから「適用」させていたけれど、それを行うと高確率でBlenderが落ちる。
動画でも落ちていた…。
軽いメッシュなら大丈夫かも。


流体メッシュの編集

「編集モード」にて、ドメインにぶつかって弾かれた飛沫を削除する。
矩形・投げなわ・円選択などを使って選択。

22

頂点を半端に残してしまわないよう、
選択後にリンクCtrl+Lキー)で、つながったメッシュを選択すること。


Xキー(Deleteキー) > 頂点 で削除していく。

23


グラスの面に接する表面の凸凹を、「スカルプトモード」のスムーズブラシで滑らかに整える。

24

飛沫が邪魔してうまくスカルプトできなかった…。


レンダリング

「Cyclesレンダー」でレンダリングしてみる。
設定するマテリアルは、流入口ではなくドメインのオブジェクトの方なので注意。

untitled

…とても荒々しい。滝か。


設定を見直してやり直してみる。

流入口の流入速度を控えめにした。

25


解像度を落として、パーティクルもやめて…

26

ベイク。

スカルプトでちょいちょい直して…

レンダリング。

untitled2

落ち着いた。


気が付いたこと

流体のメッシュに対して容器にするグラスが薄いと、容器から流体がはみ出す。
  • 打開策(1)
    • 解像度を上げてメッシュを細かくする。
  • 打開策(2)
    • 容器とは別に、ダミーの分厚いオブジェクトを用意する。
  • 打開策(3)
    • シミレーション後に編集モードで、はみ出した流体を縮小する。
    


参考リンク    

CyclesRenderBlenderには、手軽にフォトリアリスティックレンダリングができる「Cyclesレンダー」エンジンが標準搭載されている。
予めマテリアルのプリセットが複数用意されているので、Blender標準のレンダリングより簡単で、尚且つレンダリング速度も速い。

そんな素晴らしい「Cyclesレンダー」の初心者メモ。


Cyclesレンダーの準備

[情報]メニューのヘッダにある
レンダリングに使用するエンジンを「Cyclesレンダー」にする。

01


グラスだけレンダしては宙に浮いた状態になるので、ついでに床も設置した。

02



ライトの設置

Cyclesでは、Blender標準のライトは使用できない。
オブジェクトをライトに指定することで「ライト」になる。

平面プリミティブを作成して、グラスを照らすような位置に移動させる。

03


分かりやすいように、オブジェクト名を「Lump」にリネームした。ん…?

04

…スペルを間違えた~!
正しくは「Lamp」である…。恥ずかしいなぁ…。


プロパティエディタ > マテリアル から 新規マテリアルを作成。

05


Cycles用のマテリアルが作成される。

[サーフェイス]パネルのサーフェイス: 「ディフューズBSDF」とあるところをクリック…

06


一覧から「放射」を選ぶ。

07

これでオブジェクトがランプになる。
「強さ」は照明の強度。1では弱いので3くらいにしておく。


3Dビューのシェーディングを「レンダー」に切り替えると
リアルタイムでレンダリング結果がプレビューできる。

08

ランプもレンダされてあまりかっこよくないので、ランプを非表示にする。

プロパティエディタ > オブジェクト から
レイの可視性 : カメラ のチェックを外す。

08-2


カメラにランプが写らなくなる。

09

「オブジェクト非表示」では単純に、ランプが非表示になって暗くなるので注意。


マテリアルの設定

ガラスの質感を設定する。

プロパティエディタ > マテリアル の サーフェイスから
「ノードを使用」 をクリック。

10


サーフェイスの一覧から「グラスBSDF」を選ぶ。

12

もうこれだけでグラスに。
なんて簡単なの…。


ワインの質感も設定する。

13

「IOR」というのは、Index Of Refraction(屈折率)の略、みたい。
ガラス→1.450、水→1.330、というように、
物質によって屈折率は決まっている、みたい。

“index of refraction list”
“屈折率 一覧”
などの語句でGoogle先生にお伺いを立てると、便利な一覧表が見つかる。


これだけでもなかなかリアルだけれども、
背景が無の空間なので、グラスへの映り込みがなくてちょっと不自然。

14

もうひと手間加えてみる。
手間というほど手間ではないけども。


環境テクスチャ

Blenderの「環境テクスチャ」は、“環境マップ”とか“Environment Map”とか呼ぶ画像を指す。
環境マップは、画像から背景と明るさを利用するので、無の空間でもお手軽にリアルさを表現できる。

プロパティエディタ > ワールド[サーフェイス]パネル から
「ノードを使用」 をクリック。

15


「カラー」のところをクリックして…

16


一覧から「環境テクスチャ」を選ぶ。

17

「開く」から、環境テクスチャに使う画像をロードする。

環境マップは、“free hdr download” などの語句でお伺いすると見つかる。
当方はこちらのものが使いやすくて、しばしば利用させていただいている。


環境マップの効果で背景ができて、ちょっとリアルに近づいた。気がする。

18


レンダリング

3Dビューのプレビューはあくまでもテストレンダ。
サンプル数を上げて最終的な本番レンダを行う。    

プロパティエディタ > レンダー から レンダリングの設定をする。
[サンプリング]のサンプリングプリセットから「Final」を選択。

19

サンプルの数値を上げると、レンダ時間はかかるがノイズが軽減される。
サンプルを上げずにノイズを軽減するテクニックも、いろいろあるみたい。


[レンダー]ボタン か F12キーでレンダリング開始。

Final

PC環境や出力サイズによって異なるけれど、960×540でGPU演算だと一分くらいでレンダリングが完了する。

ScrewShadeやメタセコの回転体に相当する機能は、Blenderではどこか…。
「スクリュー」モディファイアと、「スピン」ツールが該当するみたい。
さっそくトライ。


カーブの作成

回転のもとになる断面図を作る。
Shadeライクなスプラインモデリングをするため
「カーブ」なるツールでラインを作成してみる。

ツールシェルフの [作成]タブ : [プリミティブを追加]パネル :カーブ から
[カーブ]ボタンをクリック。
3Dビューにヒョロッとした線が作られる。これが「ベジェ曲線」と呼ばれるものらしい。

01


「編集モード」で視点を正面ビュー(テンキー5)にして、グラスの断面図を片側だけ描いていく。
曲線は、Ctrl+LMB左クリックで延長できる。

02


ツールシェルフの [カーブツール]パネル : ハンドルVキー) から、ハンドルのタイプを切り替えられる。

03

制御点をクリックしてから、各ボタンを押す。

自動 : 自動で曲線を滑らかにしてくれる。 ベクトル : ハンドルが折れて鋭角になる。
整列 : ハンドルが直線になる。 フリー : 両端のハンドルを独立して動かせる。


制御点を二つ選んで[細分化]ボタンを押すと、制御点を追加できる。

04


一通り描き終わったら、
ミラーモディファイアを追加してバランスを確認。

05

ミラーモディファイアは確認が済んだら削除しておく。
プロパティパネルの[カーブを表示]パネルから、
「ハンドル」のチェックを外すと、ハンドルが非表示なって見やすくなる。
ノーマルも同様。


カーブをメッシュに変換

カーブのままでは回転できないようなので、メッシュに変換する。

「オブジェクトモード」に切り替えて、
[カーブ]メニュー > 変換 > カーブ/メタ/サーフェイス/テキストからメッシュ Alt+C
を実行する。

06

カーブが辺と頂点のみのメッシュに変換される。

変換されたメッシュは、頂点がとても多い。
不要な頂点は削除しておく。頂点を選択して、Xキー > 頂点を溶解

07


「スクリュー」モディファイアで回転体を作成する場合

プロパティエディタ > モディファイア から 「スクリュー」を追加する。

08


即座に回転体が作成される。

09


ステップ数の数値を増やすと、分割数が増えて滑らかになる。

10


「スクリュー」モディファイアを使用したグラスが完成。

Modifire

モディファイアの利点は、
回転結果を確認しながら、断面図の再調整ができることかな。

今回はフラットな回転でスクリューを使ったけれど
「スクリュー」というだけあって、
ネジやら蚊取り線香やらソフトクリームやら、渦巻き系で威力を発揮するみたい。


「スピン」で回転体を作成する場合

「編集モード」にして、トップビュー(テンキー7)に視点を切り替える。
3Dポイントは真ん中の位置におく(Shift+C)。
メッシュを全選択したら、
ツールシェルフ > メッシュツールパネル : 追加 から [スピン]ボタンを押す。

11


回転体が作成される。

12

角度は360°にする。
ステップ数を増やすと、分割数が増えて滑らかになる。


「スピン」ツールを使用したグラスが完成。

Spin

スピンの利点は、メッシュの一部分だけを回転させられること、かな。
モディファイアだと、全体にかかっちゃうもの。


レンダリング(F12キー)してみる。

untitled

形状も質感もいまいちだけども…(ガラスも分厚すぎたか…)
なにか注いでみたくなっちゃう。
次は物理演算?かな。