
Blenderで映像素材を合成してみよう。 3D空間編
以前、Blenderのコンポジット機能を使って素材を合成する方法を書いたが、Blenderでは、3D空間の中に映像を合成することができる。
今回は、その方法について紹介していこう。
紹介するにあたり、つい数週間ほど前にBlender-osmで作ったオフィス街のモデルを使うことにした。
作り方に関しては、こちらの動画を参考にさせていただいた。
本来はもう少し遠景からの風景を作るためのものではあるが、素材合成の舞台にはぴったりだと思ったわけだ。

早速、こちらのオフィス街に爆発の炎と煙を入れていこう。
方法を簡潔に言えば、映像素材がテクスチャとして投影された平面のオブジェクトを置けばいいのだが、映像素材のUV展開は苦手な方も多いだろうと思うので、誰でもできる、一番手っ取り早い方法を使おう。
まずはツールバーの「編集」から「プリファレンス」、その中の「アドオン」にある「Import-Export: Images as Planes」にチェックが入っているかどうかを確認し、チェックを入れたら保存する。

そのままプリファレンスを閉じて、オブジェクト(Shift+A)の「画像」、「Images as Planes」をクリックし、映像素材を選択しよう。

これで、画像そのものの大きさを変えることなく、映像付きの平面オブジェクトを用意することができる。(こちらでは、作った街のモデルが大きすぎたので、映像そのものがいい感じに見えるぐらいまで拡大している。)
今回読み込んだ映像素材は、こちらのサイトから手に入れたフリー素材を主に使用している。
アルファチャンネルによって透過されているので、シェーダーノードで「画像テクスチャ」と「プリンシブルBSDF」のアルファ同士を繋ぎ、サイドメニューのマテリアル設定で、「ブレンドモード」を「アルファブレンド」にすれば、ひとまずは合成完了である。
自然な炎の照り返しを表現したいときは、下記のように「放射」と「シェーダー加算」を追加して繋ぎ、放射の強さを調節しよう。

ここでは、炎から煙が出る段階でアニメーションを追加し、より自然な感じを出すことができた。
(2021年11月2日 追記)
上記ではプリンシブルBSDFに直接繋げる形でノードを組んでいたが、放射と「透過」シェーダー、そして、アルファと透過に「カラーランプ」を繋ぐことで、同様の効果が得られることがわかった。

プリンシブルBSDFでは「スペキュラー」の数値を0にして反射が起きないようにする必要があったのだが、このように繋げば、その心配はないだろう。
是非試してみて欲しい。
ここでさらにもう一つ、アルファチャンネル化した別の爆炎の素材を先ほどの平面の前に置き、このようにノードを繋いでみた。

画像テクスチャに放射と透過を加算で繋ぐことで炎以外を透明にし、「グラデーションテクスチャ」に「マッピング」とカラーランプを繋げたノードを「シェーダーミックス」でまた繋げる。
こうすることで、画面上部の縁で炎が完全に途切れているのを、ある程度誤魔化すことができた。
ただ、映像には秒数があり、再生が終わると最後の画像のまま止まってしまう。
これでは先程の炎同様、違和感が目立つので、さらにもう一つシェーダーミックスと透過を加え、係数にアニメーションをつけることにした。

このような試行錯誤の末、レンダリングした映像がこちらである。
いかがだっただろうか。
映像素材のCGモデルを3D空間上に直接入れ込むという方法なので、ある程度カメラのオブジェクトにアニメーションを入れて、カメラワークをつけることもできる。
カメラワークをつけてみたぞ。
— フジノタカシ (@fgnotakashi) October 23, 2021
この合成映像の作り方は、下の引用リツイートにある記事にあるので、作り方を知りたい方は是非!#b3d #blender #Blender3D https://t.co/x31MmjCJ5q pic.twitter.com/1EoLATmVIA
さらに、物理演算で爆発を作るよりも手軽にでき、パソコンにかかる負担が軽いのが特徴だと言える。
とはいえ、180度回り込むとペラペラの平面であることがわかってしまうので、そこをどう誤魔化すのかが課題だろう。
皆さんも是非、試してみて欲しい。
告知
現在BOOTHにて、自作のCGモデルを販売しております。
気になる商品がありましたら、是非ともご購入ください。