Blender 実写合成 Part 3
hr.icon
1. ゴールと制作手法
日野キャンパス6号棟前の撮影映像にMonkeyを浮遊させる。
Part 1-2との大きな違いとして、カメラは移動せずにその場所で揺れているだけ。
Tripod設定で分析を行う。
EeveeとHDRIを利用。
Floor設定は無意味なため、カメラ方向を手動調整する必要がある。
Blenderkitのマテリアルを利用する。
https://youtu.be/eT_A8qCDkNk
参考・Tripod Motionに関する調査)
Tripod Motionは、カメラが動かず回転するだけの映像に使用できる。
このような映像は一般的なソルバーのアプローチ(generic solver approach)では追跡できず、情報不足のため空間上の実際の特徴点を決定することができない。
そこでこのソルバーでは、相対的なカメラの回転のみを解き、すべての特徴点について、特徴とカメラの間の距離を同じにして、特徴点を球に再投影します。
これは特殊なタイプのカメラソルバーで、通常のソルバーとは挙動が異なります。
つまり、より多くのトラックを使用することは、より正確な解を意味しない。この種のソルバーで一般的に使用されるのは、フレーム上に5-10トラックを持つことでしょう。(DeepL翻訳)
hr.icon
2. 準備
2.1 素材映像データのダウンロード
kibacoのお知らせ経由で配布する。
ファイル名:hinoD_20240916.mp4
https://gyazo.com/32b4d255260612a37d67cfb6267f3dd4
2.2 Blenderの起動
Blenderを起動して、Cubeは削除しておく。
https://gyazo.com/902ff270da418f18c80b5d74e3524f81
プロジェクトファイルを任意の場所に保存する。
https://gyazo.com/0d26e017047407be36b17cd00e4ef538
2.3 Motion Tracking Workscapeの表示
ワークスペースの一番右の「+」(Add Workspace)をクリックする。
メニューのVFX > Motion Trackingを追加する。
https://gyazo.com/9d4827418b211a0fa32a9b85a2eb1b65
Motion Tracking Workspaceが表示される。
https://gyazo.com/5b52b3604f0ae5680c406e19f73b9744
2.4 素材映像の読み込み
Movie Clip Editor(真ん中パネル)の中央のOpenをクリックして、hinoA_20240917.mp4を読み込む。
https://gyazo.com/96dcbe810f8bc021122484eac795727e
https://gyazo.com/3eec898bcfc79491a2caab0a9cf50945
以下の手順で準備する。
Toolbar > Track > Clip
OUT点:150(映像データ300フレームの半分)
Prefetchをクリック
Output Properties
FramerateとResolution XとYをサイドバーのFootage Settingsの情報と合わせる
hr.icon
3. Markerの追加とトラッキング(手動)
Tracking Settingは初期設定のまま行う。
IN点、OUT点の中央付近に時間インジケータを移動。
Cmd+左クリックでマーカー追加。
必要に応じてMarker Displayの情報表示を行う。
Forward TrackigとBackward Trackingを行う。
必要に応じてLockで確認。
Marker数:5〜10程度
あまり多くても意味がないようだ。
Tripod設定の場合、Solveは1点でもエラーにならないが、1点だとカメラ自体がぐるぐる回るので、2点以上ないと
下図は10点程度。
https://gyazo.com/fbe7a1742a3f945c825035dadd3abcbd
下図のように、後作業でOriginへの設定を想定したMarkerを追加しておく。
https://gyazo.com/c45bc3cb567b3ca649e1c054dafa79b1
hr.icon
4. Solve(カメラの動きの解析)
以下にチェックを入れて、Solve Camera Motionをクリックする。
Tripod
Focal Length
※Optical Center(Origin)は手動指定する。
https://gyazo.com/e20d4814a295192bb15be2769526b1e8
Tripod設定では解析結果がRotate要素だけになり、Location情報は無視される。
手持ちカメラは厳密には三脚とは異なりLocationも若干ずれてはいるが、そこまで厳密にはしない。
厳密にしたいなら三脚を使うか、手持ちだとしてもカメラの空中位置を保持して撮影したほうがよいだろう。
Solve errorを確認して、あまりに大きい場合はエラーの大きいMarkerを削除して再Solveしてみる。
https://gyazo.com/d63cc275c574b30e602123d97b53947d
問題なければSetup Tracking Sceneをクリックする。
右上パネルのViewportにCameraの動き(回転)が反映される。
https://gyazo.com/c38245ef97c2e92635848f84fc98dc46
下図のマーカーを選択して、Set Originをクリックする。
右上のViewportにOriginの位置が反映される。
https://gyazo.com/a08adcf39282421a788bd885dddecd5e
hr.icon
5. 解析結果をシーンへ反映
5.1 Cameraの解析結果(動き)の確認
Leyout Workspaceへ切り替える
Viewport Overaysで以下を表示する。
Motion Tracking
Camera Path
Marker Names
再生して、Cameraの位置は変わらず(Locationに変化なし)、Rotate(回転)のみで動いていることを確認する。
https://gyazo.com/5eea79fbc2f8d9da69c5eb2c9c561983
5.2 Cameraの方向を調整
Floor設定は使わず、手動で合わせる 試行錯誤と慣れが必要
Cubeを削除
Ground(Plane)を縮小
Viewportのグリッドを濃くする
Unitを増やす(グリッドが細かくなる、下図はUnit Scal: 3)
https://gyazo.com/80cfec4e51293ebf7e07587e61ea105b
Transport Pivot Pointを3D Cursorに変更。
カメラを選択。
以下を調整して手動で構図をあわせる。
傾きをあわせる
R、X
R、Y
向きをあわせる
R、Z
必要に応じてCameraのBackgroundのOpacityを下げたほうがグリッドが見やすくなる。
撮影映像はカメラにもよるが、レンズ周辺に歪みが発生するので、画角周囲では水平を取らずに中央付近で水性を合わせる。今回は階段下部に合わせると水平が取りやすい。
試行錯誤していくうちに、絞り込んでいく方向が見えてくる、はず
https://gyazo.com/636264a6e641832ff8d53efc36a661cb
Transport Pivot PointをMedian Pointに戻しておく。
Viewportグリッドの濃さをリセット
CameraのBackgroundのOpactyを1.0に変更
https://gyazo.com/a69a23f4b918d403779827930fc0d9ef
中安メモ)hino_BLD_w6.blend
hr.icon
6. シーン作成
6.1 Monkey
Mesh > Monkeyを追加して、G、Zで少し上に上げる。
https://gyazo.com/b752d94db5aabaa803438e8b00662a9c
MonkeyにSubdivision Surface Modifier(Levels Viewport: 2)を追加
Shade Smoothに変更。
https://gyazo.com/a4de13729084ea1bd95ccbd8e4315d01
6.2 自転アニメーション
自転アニメーションの「方法① キーフレームによる方法」でMonkeyに自転アニメーションを設定する。 https://gyazo.com/c191fefc9a8204e95952ab0f86d0cc99
中安メモ)hino_BLD_keyframeRotation_w10.blend
hr.icon
7. Eevee環境のHDRIとShadowの理解(解説のみ)
4.1まではEeveeではHDRI画像の光から影は生成されなかった。そのためLightを追加して影を作成していた。4.2以降では、EeveeでもHDRI画像から影を落とすことが可能になった。陰影や反射等が可能なRaytracing機能も追加されCyclesに迫るアップデートが行われた。4.2以降のEeveeはEevee 2.0 or Eevee Nextと呼ばれる。
https://www.youtube.com/watch?v=-btXg8QX3Lg
参考)
hr.icon
8. HDRIの設定
本演習ではCyclesレンダリングは行わない
8.1 準備
OUTを150に変更 ※長いので
Viewport Shading: Rendered(Render EngineはEevee)
OutlineのFilterでHoldoutとIndirect Onlyを表示させる
background CollectionのHoldoutをオフにする
既存のライトを削除する
Render Properties > Film > Transparentにチェックを入れる。
https://gyazo.com/128c147f87dd100a478fc807541f2564
Background Videoのコンスラストが変わる問題 Part 2演習で解説していない
Render Properties > Color Management > View TransformをAgXからStandardに変更する。
画像のルックは好みに合わせて調整してよい。この方法はあくまで素材映像データのままレンダリングしたい場合の方法。
https://gyazo.com/2bb1fe1ce1e5cd71695350d5129fa708
Compositeの2つ目のAlpha OverノードのFacはゼロにする Part 2演習で解説していない
https://gyazo.com/79017cd744b9dbfaaffa2ea8e7cea072
8.2 HDRIのダウンロード
今回は以下から、hangar_interior_4k.exrをダウンロードする。
https://scrapbox.io/files/66ea722547093d001dbdf52f.webp
8.3 Worldノード
Shader EditorでWorldに切り替える。
https://gyazo.com/41d2742466d3848d3b2a758c1ee500a3
以下のノードを組み、ダウンロードしたhangar_interior_4k.exrを読み込む。
Texture Coordinate
Mapping
Environmente Texture
Color SpaceやAlphaの設定しだいでも見え方が大きく変わる
Background(既存と合わせて2つ)
Light Path
Mix Shader
https://gyazo.com/bd42b2b7944b010a69b5cecfc765c605
この時点では白飛びしているが問題ない。
https://gyazo.com/665398a3be15e6919fec408d6ac0e83c
(中安メモ)hino_BLD_keyframeRotation_w12.blend
Render Properties > Film > TransparentをOFFして、HDRI画像とMokeyの陰影の効果を確認する。
Viewportを回転しでもHDRI画像は確認できる。
必要に応じてGroundのサイズを大きくする。
このとき、World Properties > Settings > Sun > Thresholdを10から2程度に変更すると影が濃くなるのでわかりやすい。
Mappingノードで回転して、影の方向を調整する。
下図ではおよそ以下にして、6号棟階段上から光が入っている感じにする。
Rotation X: 330
Rotation Y: 42
Roration Z: 260
https://gyazo.com/586a334d3f47c3e625881bdc913089c2
(中安メモ)hino_BLD_keyframeRotation_w13.blend
視点をCamera Viewに戻す。
Render Properties > Film > TransparentをONに戻す。
Groundのサイズが大きすぎる場合は下図程度にする。
https://gyazo.com/fcf47bb4ea25dbe59d9af632d03d41b5
(中安メモ)hino_BLD_keyframeRotation_w14.blend
hr.icon
9. Groundの透過
9.1 マテリアルのノード作成
Groundオブジェクトを選択
Shader EditorのShader TypeをObjectに切り替える。
Shader Editorのメニュー中央のNEWでマテリアルを作成する。
邪魔であればViewport OverlaysのMotion Trackingあたりは非表示にする。
https://gyazo.com/eff2a51a8bc91931a8e3c06e6523e16e
Principled BSDFは削除
以下のノードを作成して、下図のように接続する。
Diffuse BSDF、2つ
Transparent BSDF
Shader to RGB
Mix Shader
https://gyazo.com/a294cd7a36b4d208c0b27897d94216f2
Material Properties > Settings > Render Method > Dithered→Blendedに変更する。
https://gyazo.com/829623933c0c2319adf63892cf334bec
現時点では以下の緑部分のみ変更する。後でLightを調整後に再度調整必要。
1つ目のDiffuse BSDF 影の濃さ(Lightの強さも影響する、ここではHDRIのみ)
Hue: 0.0
Sat: 0.0
Val: 0.4
2つ目のDiffuse BSDF 影の濃さ、色に影響
Hue: 0.0
Sat: 0.0
Val: 0.0
Transparent BSDF 透明度?(Lightの強さも影響する、ここではHDRIのみ)
Hue: 0.0
Sat: 0.0
Val: 1.0
https://gyazo.com/c666030fbabe57648a0796b7080cb9a6
(中安メモ)hino_BLD_keyframeRotation_w15.blend
hr.icon
10. 微調整
10.1 方針
あとは、Monkeyの「陰 - Shade」の濃さとGroundの「影 - Shadow」の濃さをどうしたいか?ということ。
Monkey自体の存在感を出すには若干明るめの方がよいか?それとも暗いほうがよいか?
Compositeでやる方もあるけど、できるかぎりEeveeプレビューで調整してみる
10.2 準備としての設定
Render Properties > Raytracingにチェック
World Properties > Settings > Shadowにチェック(初期設定)
10.3 各種調整
World Properties > Settings > Sun > Threshold: 10(任意) 陰の濃さ あげると影が薄くなる
Thresholdを1〜10程度で変化させて好みに合わせてよい
World Properties > Settings > Sun > Angle: 12 影のボケ度合い
Shader Editor > Object(Ground) > 上のDiffuse BSDFのValue: 0.25 影の濃さ
Shader Editor > World > 上のBackgroundノードのStrangthの調整 1.0
影部分を少し明るくする程度かな、ただここは変更せずに他のパラメータで調整した方がよいだろう。
演出としての調整メモ)
下映像ではMonkeyを最初から認識できる。
一方、9の陰影では最初はMonkeyが分かりづらく、間を置いて認識する。
どちらが良いかは演出によっても変わる。動きのスピードにもよる。
https://gyazo.com/2b7269c61fd79a424e2cbb0d750b5baa
(中安メモ)hino_BLD_keyframeRotation_w16.blend
ここまでをレンダリングした映像。
https://youtu.be/li5GAJeSRs0
hr.icon
11. Monkeyのマテリアルの追加
11.1 BlenderKitのインストール
上記サイトから、blenderkit-v*.zipをダウンロードする。
https://gyazo.com/22ecf1e8c3cdd1f5ff0cfa6a3eaf5ec5
Blender Preferences > Add-onsの右上▼ボタンからInstall from Diskから、blenderkit-v*.zipを読み込む。
https://gyazo.com/9d66e30f62711407fbffd0da142431fa
インストールされた状態。
https://gyazo.com/fe63230822c93ecee34fb7d067636951
アンインストールする場合は、Get Extensionsから行う。
https://gyazo.com/d740dd9026b819afbe6eb50bf2f88d9f
11.2 BlenderKitのマテリアル割当て
BlenderKitでFind Materialアイコンをクリックして、例えばrock検索して、下図のようにMonkeyにドラッグ&ドロップして割り当てることができる。
岩のゴツゴツ感じはDisplacementノードのScaleで調整できる。
https://gyazo.com/1efccb011cb846b659ebf7a726c5ddb3
World Properties > Settings > Sun > Threshold: 2に変更 Rockの場合は陰(Shade)が濃いほうがよい?
Shader Editor > Object(Ground) > 上のDiffuse BSDFのValueを上げる 陰を濃くすると影も濃くなるので少し薄くする?
World Properties > Settings > Sun > Angle: 30程度に上げる。
下図は12程度だが、ボカしたほうがよさげ。
https://gyazo.com/ae12f79b1b16f226dc7459adaa0c8f6a
好みのマテリアルを探してみよう。
https://gyazo.com/11b9d7e7ab936145579d285171228768
https://gyazo.com/41524e1f145708187b4b8db05c522a5d
マテリアルが濃いと凹凸のディティールが見た目上下がるので、場合によってはSun Lightを追加して、Monkeyの凹凸が際立つようにしてもよい。Sun Lightは影にも影響するので、Sun LightのInfluenceのDiffuseをゼロにすれば、影への影響をゼロにできる。
https://gyazo.com/6f414561523007b14d462366559e67a3
https://gyazo.com/8d321487871707e837fdc7429ee6c0c2
hr.icon
12. 映像のレンダリング
全フレームをレンダリングするのに30分以上必要。
尺が長かったのでOUT点を150フレームにしておく
以下の設定を行い、Renderメニュー > Render Animation。
Render Properties
Resolution X: 1280 px
Resolution Y: 720 px
Frame Rate: 30 fps ※プリセットでHDTV720pにすると24 fpsになるので注意
Output
場所:任意の場所/ファイル名
File Format: FFmpeg Video
Encoding > Container: MPEG-4
Video > Video Codec: H.264
https://youtu.be/eT_A8qCDkNk
Motion BlueやRaytracingをあえてつけない方がよい効果になる場合もあるかも
今回は人物を入れていないけど、入れると面白さが増すと思う。マスクを使えばMonkey手前通り過ぎることも可能。
hr.icon
今回の手法や上記参考映像を応用すれば1'29"、2'19"、2'43"あたりの表現が可能
20年前のPV、当時としては斬新だった