動作環境
本記事の動作環境は以下の通りです。
項目 | 環境 |
---|---|
OS | Windows 10 |
Blender | 2.82 |
#アウトプットイメージ
以下のような雨を表現する。
参考:https://www.youtube.com/watch?v=35bbyAJodEQ&feature=youtu.be
#キーテクニック
- PBRテクスチャ:Physical Based Renderingの略でリアルな質感を表現するための技術。
- ダイナミックペイント → Image Sequence
- パーティクル(ヘアー) → テクスチャ(Image Sequence)
ワークフロー
- 以下のアドオンを有効にする
- Images as Planes
- Node Wrangler
- 道路用のPBRテクスチャを用意する
- Images as Planes を使用して道路を作成
- 道路テクスチャを使用して道路マテリアルを作成
- ICOsphereを使用して雨粒を作成
- グラスBSDFノードを使用して雨粒マテリアルを作成
- パーティクルを設定して雨を降らす
- ダイナミックペイントを使って連続画像を作成①_気泡のような水しぶき編
- ダイナミックペイントを使って連続画像を作成②_雨の跡編
- ダイナミックペイントを使って連続画像を作成③_雨粒の小さな水たまり編
- 道路マテリアルを編集して雨を表現
- 跳ね上がる水しぶきを作成_事前準備
- 跳ね上がる水しぶきを作成
以下のアドオンを有効にする
以下のアドオンを有効にする
【アドオン①】
アドオン:Images as Planes
概要:イメージを平面としてインポートするアドオン
リファレンス:https://docs.blender.org/manual/ja/2.82/addons/import_export/images_as_planes.html
【アドオン②】
アドオン:Node Wrangler
概要:ノードを使うときの便利ツール
リファレンス:https://docs.blender.org/manual/ja/2.82/addons/node/node_wrangler.html
道路テクスチャを用意する
PBRテクスチャとは、Physical Based Renderingの略でリアルな質感を表現するための技術。
以下のサイトから道路テクスチャ一式をダウンロードする。
cgbookcase.com:https://www.cgbookcase.com/textures/?category=Street&resolution=1&page=1&color=all&search=
使用テクスチャ:Two Lane Road Wet 02(4k)
今回はヒビが入っていて、濡れていれば他のでもOK。
同じ大きさの1セットをダウンロード。
クリック→画像を表示→右クリック→名前をつけて保存でダウンロード完了(多分。他の方法もあるかも)
Images as Planes を使用して道路を作成
以下の手順で道路を作成
- Image as Planeを使用して道路を追加
- 操作:shift + a > 画像 > Image as Plane
- ポイント:ダウンロードした道路テクスチャのうち、Base_Colorを使用する
- pitch(y軸回り)とyaw(z軸回り)に90°ずつ回転
- 操作:r→y→90、r→z→90
- 5倍の大きさに変更
- 操作:s→5
道路テクスチャを使用して道路マテリアルを作成
以下の手順でマテリアルを作成
- 粗さテクスチャを設定 ( 水たまりの反射の表現 )
- 操作①:既存の環境テクスチャをコピー
- 操作②:Roughnessを指定
- 操作③:環境テクスチャの色空間をNon-Colorに変更
- 操作④:プリンシプルBSDFの粗さに接続 ( 黒:0 白:1に変換される = 黒いほどツルツル )
- 法線テクスチャを設定(反射方向の細かい表現)
- 操作①:既存の環境テクスチャをコピー
- 操作②:Normalを指定
- 操作③:環境テクスチャの色空間をNon-Colorに変更
- 操作④:Shift + a > ベクトル > ノーマルマップを追加
- 操作⑤:環境テクスチャのカラー出力をノーマルマップのカラー入力に接続
- 操作⑥:ノーマルマップのノーマル出力をプリンシプルBSDFのノーマルに接続 ( 黒:0 白:1に変換される = 黒いほどツルツル )
- AOテクスチャを設定 ( アンビエントオクルージョン:リアルな影の表現 )
以下のサイトも参考。
PBRテクスチャーの使い方:https://www.cgbookcase.com/textures/how-to-use-pbr-textures-in-blender
アンビエントオクルージョンとは:http://ambientocclusion.hatenablog.com/entry/2013/10/15/223302
ICOsphereを使用して雨粒を作成
以下の方法で雨粒を作成
- ICOsphereを追加
- 操作:Shift + a > メッシュ > ICOsphere
- 編集モードでプロポーショナル編集を使用して縦長に編集
- ポイント:プロポーショナル編集のモードはシャープで編集
- スムーズシェードをかける
グラスBSDFノードを使用して雨粒マテリアルを作成
以下の方法で雨粒マテリアルを作成
パーティクルを設定して雨を降らす
以下の方法でパーティクルを設定する
- 道路オブジェクトをコピー
- 操作:オブジェクトモードで道路を選択 → Shift + d → z →適当な高さまで持ち上げる
- コピーしたオブジェクトにパーティクルを設定
- 操作:パーティクルプロパティタブ > + ボタン
- 以下の設定を反映
- レンダーに雨粒オブジェクトを設定
- 操作1:パーティクルプロパティタブ > レンダー > レンダリング方法 > オブジェクトに変更
- 操作2:パーティクルプロパティタブ > レンダー > オブジェクト > インスタンスオブジェクト に 雨粒オブジェクトを設定
- 速度を修正
- 操作:パーティクルプロパティタブ > 速度 > ノーマル を 0 か -1 に変更
- 放射を修正
- 操作①:数を20000に変更
- 操作②:終了を250以上に変更
- 操作③:寿命を36~37に変更
- レンダーに雨粒オブジェクトを設定
- 全物理演算をベイク
ダイナミックペイントを使って連続画像を作成①_気泡のような水しぶき編
以下の方法で連続画像を作成する
-
上の道路オブジェクトにダイナミックペイントを追加
-
下の道路オブジェクトにダイナミックペイントを追加
- タイプはキャンバス
- 操作:物理演算プロパティ > ダイナミックペイント > タイプ を キャンバスに設定
- フォーマットは連続画像
- 操作:物理演算プロパティ > 設定 > 連続画像を選択
- 解像度は1024
- 操作:物理演算プロパティ > 設定 > 解像度を1024
- 乾燥を無効化
- 操作:物理演算プロパティ > サーフェス > 乾燥のチェックを外す
- サブステップは2
- 操作:物理演算プロパティ > 設定 > サブステップを2
- エフェクトは収縮を有効にして、速度は0.6
- 操作①:物理演算プロパティ > エフェクト > 収縮 にチェックを入れる
- 操作②:物理演算プロパティ > エフェクト > 収縮 > 速度 を 0.6に設定
- 初期色を黒に変更
- 操作①:物理演算プロパティ > 初期色 > タイプをカラーに変更
- 操作②:物理演算プロパティ > 初期色 > カラーを黒に変更
- 出力先を指定
- 操作:物理演算プロパティ > 出力 > キャッシュパスを任意のフォルダに指定
- UVマップを指定
- 操作:物理演算プロパティ > 出力 > UVマップをUVマップに指定
- タイプはキャンバス
-
連続画像をベイク
以下のサイトも参考。
公式リファレンス:https://docs.blender.org/manual/ja/2.82/physics/dynamic_paint/canvas.html#surface
ダイナミックペイントを使って連続画像を作成②_雨の跡編
以下の方法で連続画像を作成する
- 下の道路オブジェクトにダイナミックペイントを変更
- エフェクトは収縮を無効にする
- 操作:物理演算プロパティ > エフェクト > 収縮 にチェックを外す
- エフェクトは広がりを有効にして速度は0.06
- 操作①:物理演算プロパティ > エフェクト > 広がり にチェックを入れる
- 操作②:物理演算プロパティ > エフェクト > 広がり > 速度 を 0.06に設定
- 乾燥を有効にして時間は150
- 操作①:物理演算プロパティ > サーフェス > 乾燥のチェックを入れる
- 操作②:物理演算プロパティ > サーフェス > 乾燥 > 時間 を 150に設定
- エフェクトは収縮を無効にする
- 連続画像をベイク
#ダイナミックペイントを使って連続画像を作成③_雨粒の小さな水たまり編
以下の方法で連続ファイルを作成する
- 下の道路オブジェクトにダイナミックペイントに新しいサーフェスの追加
- 操作①:物理演算プロパティ > 設定 サーフェスを追加
- 操作②:新しいサーフェスをダブルクリックしてリネーム
- 新しいサーフェスの設定を変更する
- フォーマットは連続画像
- 操作:物理演算プロパティ > 設定 > 連続画像を選択
- 解像度は1024
- 操作:物理演算プロパティ > 設定 > 解像度を1024
- サブステップは2
- 操作:物理演算プロパティ > 設定 > サブステップを2
- サーフェスタイプは波
- 操作:物理演算プロパティ > サーフェス > サーフェスタイプを波に変更
- 時間尺度は0.8
- 操作:物理演算プロパティ > サーフェス > 時間尺度を0.8
- 速度は0.3
- 操作:物理演算プロパティ > サーフェス > 速度を0.3
- スムーズは0.3
- 操作:物理演算プロパティ > サーフェス > スムーズを0.3
- ファイルフォーマットはOpenEXR
- 操作:物理演算プロパティ > 出力 > ファイルフォーマットをOpenEXR
- フォーマットは連続画像
- 連続画像をベイク
道路マテリアルを編集して雨を表現
エディタータイプのシェーダーエディターを表示して、以下の手順で道路マテリアルを編集して雨を表現する
- Image Sequenceの追加_気泡のような水しぶき編
- Image Sequenceノードを追加
- 操作:Shift + a > テクスチャ > Image Sequence で 気泡のような水しぶきの連続イメージを保管したフォルダ内の全てのファイルを選択(a で フォルダ内の一括選択ができる)
- 操作②:繰り返しと自動更新にチェック
- RGBミックスを追加してベースカラーにImage Sequenceを加算
- 操作①:Shift + a > カラー > RGBミックスを追加
- 操作②:乗算ノードとベースカラーノードの間に挿入
- 操作③:追加に変更
- 操作④:追加ノードの色2入力にImage Sequenceノード(気泡のような水しぶき)のカラー出力を接続
- カラーランプを追加して白領域を減らす
- 操作①:Shift + a > コンバータ > カラーランプ でカラーランプノードを追加
- 操作②:「+」をクリックしてカラーステップを追加
- 操作③:少し暗めの色を選択してステップを少し右に移動。白い領域を少し狭める
- 操作④:Image Sequenceノード(気泡のような水しぶき) と 追加ノードの間に挿入
- Image Sequenceノードを追加
- Image Sequenceの追加_雨の跡編
- Image Sequenceノードを追加
- 操作:Shift + a > テクスチャ > Image Sequence で 雨の跡の連続イメージを保管したフォルダ内の全てのファイルを選択(a で フォルダ内の一括選択ができる)
- 操作②:繰り返しと自動更新にチェック
- RGBミックスを追加して粗さにImage Sequenceを乗算
- 操作①:Shift + a > カラー > RGBミックスを追加
- 操作②:RoughnessノードとプリンシプルBSDFノードの粗さ入力の間に挿入
- 操作③:乗算に変更
- 操作④:乗算ノードの色2入力にImage Sequenceノード(雨の跡)のカラー出力を接続
- 白黒反転
- 操作①:Shift + a > カラー > 反転を追加
- 操作②:Image Sequenceノード(雨の跡)と乗算ノードの間に挿入
- RGBミックスを追加してベースカラーにImage Sequenceを乗算
- 操作①:Shift + a > カラー > RGBミックスを追加
- 操作②:ベースカラーに続く乗算ノードと追加ノードの間に挿入
- 操作③:乗算に変更
- 操作④:乗算ノードの色2入力にImage Sequenceノード(雨の跡)のカラー出力を接続
- 操作⑤:係数を少しだけ上げて黒を強調
- Image Sequenceノードを追加
- Image Sequenceの追加_雨粒の小さな水たまり編
跳ね上がる水しぶきを作成_事前準備
以下の方法で跳ね上がる何枚か水しぶきの画像を保存する。
-
流体シミュレーションで水しぶきを作成
- 操作①:Shift + a > メッシュ > 立方体 を追加
- 操作②:物理演算プロパティ > 流体 でタイプをドメイン、ドメインタイプを流体、に設定
- 操作③:Shift + a > メッシュ > ICO球を追加
- 操作④:物理演算プロパティ > 流体 でタイプをフロー、フロータイプを液体、初期速度のzを-10に設定
- 操作⑤:Shift + a > メッシュ > 立方体 をドメインの立方体の中に追加
- 操作⑥:物理演算プロパティ > 流体 でタイプをフロー、フロータイプを液体に設定
- 操作④:ドメインのマテリアルに雨マテリアルを設定
- 操作⑤:ドメインの立方体でデータとメシュをベイク
- 操作⑥:ドメインにスムースシェードをかける
-
レンダリング準備
- 適当なHDRI背景を設定
- 操作①:ここから好きな.hdr画像をダウンロード
- 操作②:シェーダーエディターをワールドに変更
- 操作③:Shift + a > 環境テクスチャ > で任意のhdr画像を設定
- 操作④:Shift + a > ベクトル > マッピングを追加し、環境テクスチャノードのベクトル入力に接続
- 操作⑤:Shift + a > 入力 > テクスチャ座標を追加し、生成出力をマッピングノードのベクトル入力に接続
- 背景を好きな角度や位置に変形
- 操作:マッピングノードの位置や回転、拡大縮小を変更する
- ポイント:好みの水の反射具合になればいよい
- レンダーエンジンをcyclesに変更
- 背景を透明化
- 操作:レンダープロパティ > フィルム > 透過 を有効にする
- ICO球をレンダーに映らないように変更
- 操作①:ICO球を選択
- 操作②:オブジェクトプロパティ > 可視性 > レンダーで表示 を無効化
- カメラ位置の設定
- 適当なHDRI背景を設定
-
レンダリング
跳ね上がる水しぶきを作成
以下の手順で跳ね上がる水しぶきを作成する
-
水しぶき平面を作成する
- Image as Planeを使用して水しぶきを追加
- 操作:shift + a > 画像 > Image as Planeで作成した水しぶきのイメージを選択
- 平面メッシュを縦長に加工 & 原点を水しぶきの発生点に設定
- 操作①:水しぶきの平面を選択し、編集モードに移行
- 操作②:全ての頂点を選択し、原点が底辺となるように Z 軸方向に移動
- 操作③:水しぶきが縦長になるように修正
- マテリアルを修正する
- 操作①:シェーダーエディターに移動する(ワールドにしている場合はオブジェクトに修正する)
- 操作②:プリンシプルBSDFの粗さを0までさげ、IORを1.33に変更する
- 操作③:Shift + a > シェーダー > シェーダーミックス を追加し、プリンシプルBSDFとマテリアル出力の間に挿入する
- 操作④:Shift + a > シェーダー > 透明BSDF を追加し、シェーダーミックスの第2シェーダー入力に接続する
- 操作⑤:シェーダーミックスノードの係数を0.22に設定する
- 操作⑥:Shift + a > カラー > 色相/彩度 を追加し、テクスチャノードとプリンシプルBSDFのベースカラーの間に挿入する
- 操作⑦:色相/彩度(HSV) ノード の値を1.9に変更する
- 水しぶきを複製する
- 操作①:作成した水しぶきの平面を選択し、Shift + d で複製する
- 操作②:データにリンクしているユーザー数の数字をクリックし、シングルユーザー化する
- 操作③:テクスチャノードのイメージを他のものに変更数
- 操作④:先に作成したものより小さくするなどしてアレンジを加える
- 水しぶきコレクションを作成する
- Image as Planeを使用して水しぶきを追加
-
道路に水しぶきが跳ねる設定をする
-
ヘアーパーティクルの設定をする
- 操作①:道路を選択し、パーティクルプロパティ > 「 + 」ボタンで新規作成
- 操作②:パーティクルタイプをヘアーに変更
- 操作③:詳細設定を有効にする
-
水しぶきを設定する
- 操作①:パーティクルプロパティ > レンダー > レンダリング方法をコレクションに変更する
- 操作②:パーティクルプロパティ > レンダー > コレクション > コレクションインスタンスに水しぶき平面のコレクションを設定する
- 操作③:パーティクルプロパティ > レンダー > 拡大縮小と拡大縮小のランダム化の値を変更して、水しぶきを小さくする
-
雨粒が道路にぶつかったときに水しぶきを発生させる
- 操作①:パーティクルプロパティ > テクスチャ > 新規 で テクスチャを新規作成
- 操作②:テクスチャプロパティ > 画像 > 開く で 気泡雨のような水しぶき編で作成したイメージをすべて読み込む
- 操作③:テクスチャプロパティ > 画像 > 繰り返し と 自動更新を有効にする
- 操作④:テクスチャプロパティ > マッピング > 座標 を UVに変更
- 操作⑤:テクスチャプロパティ > マッピング > マップ を UVMapに変更
- 操作⑥:テクスチャプロパティ > 影響 > General Timeを無効にする
- 操作⑦:テクスチャプロパティ > 影響 > 密度を有効にする
-
注意:タイムラインで再生しても水しぶきは更新されない。次の操作で更新を確認できる
- 操作:テクスチャプロパティ > 設定 > フレーム で 更新ボタンをクリック
-
水しぶきの数を増やす
- 操作:パーティクルプロパティ > 放射 > 数を雨のパーティクルに揃える
-
水しぶきたちに回転を与える
-
カメラを配置する
- 操作①:Shift + a > カメラ で新規にカメラを追加する
- 操作②:カメラアイコンをクリックしてカメラを有効にする
- 操作③:ある程度の視界を決めておく
- 操作④:Ctrl+Alt+0 で 決めた視界にカメラを配置
- 操作⑤:ビュー > ビュー > ビューのロック > カメラをビューにロック
- 操作⑥:いつもと同じように視点を移動させてカメラを固定する
-
カメラの設定を変更する
- 操作①:オブジェクトデータプロパティ > レンズ > 焦点距離 を 80mm に変更する
- 操作②:オブジェクトデータプロパティ > 被写界深度 を有効にする
- 操作③:オブジェクトデータプロパティ > 被写界深度 > 距離 を 1.8m に変更する
- 操作④:オブジェクトデータプロパティ > 被写界深度 > 絞り > 絞り羽 を 5 に変更する
-
背景の設定を変更する
- 操作:ワールドプロパティ > サーフェス > 強さ を 小さくする (お好みのムーディーさが演出できればok)
-
透明度を変更する
- 操作:レンダープロパティ > ライトパス > 透過 を 64 に変更
-
レンダリングの設定を変更する
- 操作①:レンダープロパティ > カラーマネージメント > ルック を High Contrast に変更
- 操作②:レンダープロパティ > モーションブラー を 有効にする(ブレを有効にする)
- 操作③:レンダープロパティ > モーションブラー > シャッター の値を 0.6 に変更
-
レンダリングして現状を確認
-
ノイズ除去をする
- 操作①:エディターをコンポジターに変更する
- 操作②:ノードを使用を有効化
- 操作③:Shift + a > フィルター > デノイズ をレンダーレイヤーノード と コンポジットノードの間に追加
- おまけ①:次の操作で背景で見える
- 操作①:サイドツールバー > ビュー > 背景を有効
- 操作②:Shift + a > 出力 > ビューアー を追加し、デノイズの画像出力と接続
- おまけ②:次の操作で画像をフォルダに出力する
- 操作①:Shift + a > 出力 > ファイル出力 を追加し、デノイズの画像出力を接続
- 操作②:ファイル出力ノードを選択した状態で、サイドツールバー > ノード 内の設定を適宜変更
- 操作③:アニメーションをレンダリングで画像がフォルダに出力される
-
アニメーションレンダリングをする
-
#あとがき
冒頭の参考動画をもとに作ってみたので、覚書として。
もともとは波紋を誇張表現したくて。
物理演算は、シェーディングの部品を作るのに便利なんだなと、学んだ。