
blenderを使って合成写真を作りたい場合、合成する写真に合わせてパースを設定する必要がある。
現代は便利なもので撮影された写真のデータにはメタデータというものがあり、それを参照すれば焦点距離やF値を確認することができる。
取得した焦点距離、F値に合わせてblender上のカメラを設定してやれば何とかなるような気もするが気がするだけで意外と設定が難しい。
今回はfspyというアプリと専用のblenderアドオンを使って静止画と3Dモデルの合成にトライしてみる
■fspyの導入について
fspyを使って写真合成するには、fspyのアプリケーションインストール、blenderにfspyデータをインポートするアドオンの導入それぞれが必要となる
〇fspyのダウンロードページ https://fspy.io/
〇blenderのアドオンページ https://github.com/stuffmatic/fSpy-Blender/releases/tag/v1.0.3
■fspyの使い方

fspyは上のような感じ。アプリを立ち上げて合成したい写真をドラックアンドドロップする。
写真を取り込んだらパースに合わせてX軸やY軸の線をドラッグして配置していく。
左のメニューから軸の方向や消失点の数を調節したり、ボックスや格子平面を出してパースが合ってるかチェックすることができる。
うまく配置ができたらファイルを保存する。
■blenderへのカメラ配置
blenderを起動してファイルのインポートメニューからfspyのデータを取り込むと、下絵付きのカメラが追加される。
ビューをカメラ視点に合わせてオブジェクトを配置していく


■3Dオブジェクトの影
合成する写真にオブジェクトの作る影が反映すればより実感のある合成写真になる

写真に写っているビルや地面に合わせて平面、立方体を追加していく。とりあえずざっくりの形でOK

レンダリングエンジンはCyclesを選択
レンダリングメニューからフィルムの透過にチェックする
追加したオブジェクトを選択しオブジェクトメニューからシャドウキャッチャーにチェックを入れる
これで3Dオブジェクトが作る影のみが反映されるようになる
■写真合成
fspyデータでblender上に追加された写真は下絵なのでそのままレンダリングしても結果には反映されない。
コンポジットノードを使って写真合成する
下のようにアルファオーバーノードを使って合成する
今回はレンダリング時間短縮のため写真の実サイズよりレンダーサイズが小さい
スケールのノードを使ってレンダーサイズに写真の大きさを合わせてやる

■完成

カラーバランスや露出をさらに調整していったん完成としたもの。もっと自然な感じで合成できるようになりたいな…
おわり