Blender 実写合成 Part 1
hr.icon
1. ゴール - 日野怪獣A
本演習では、都立大学日野キャンパス北側道路をmixamoキャラクターが歩いている合成を行う。
下映像はEeveeでHDRIなし、Sun Light2つ(上と前)の照明。Compositeに失敗して影が濃い。
https://youtu.be/jjh02Uf6XJc
hr.icon
2. 作業の流れ
覚えること、試行錯誤すること多い
https://gyazo.com/a97e3adbbc86ab1d15efe7c1e4dbc3a5
hr.icon
3. 素材の準備
3.1 素材映像データのダウンロード
kibacoのお知らせ経由で配布する。
ファイル名:hinoA_20240917.mp4
https://gyazo.com/6805601f21b2f7ab631b81c45fe64630
3.2 mixamoキャラクターのダウンロード
Character: PUMPKINHULK L SHAW
Animation: Mutant Walking
Overdrive: 0
Character Arm-Space: 60
Trim: 0-99
In Place: チェックなし(Root Motion)
https://gyazo.com/d3f2621ad343ce98d1e38cefc1ff77fb
https://gyazo.com/4109d7968978431d370ed67b15c2f9ad
ダウンロードファイルの名前を設定がわかるように変更しておく。
(変更前)Mutant Walking.fbx → (変更後)Mutant Walking_RootMotion_0to99.fbx
hr.icon
4. Blenderの準備
4.1 Blenderの起動
Blenderを起動して、Cubeは削除しておく。
https://gyazo.com/902ff270da418f18c80b5d74e3524f81
プロジェクトファイルを任意の場所に保存する。
https://gyazo.com/0d26e017047407be36b17cd00e4ef538
4.2 Blenderの各種設定(任意)
4.2.1 GridやAxisの表示設定
下記設定後、必要に応じて、PresetやPreferencesをSaveする。
Gird
Preferences > Themes > 3D Viewport
GridのColorやAlphaを変更 ※Alphaの変更は使えるかも(下図)
必要に応じてUnitを増やせばグリッドの本数を増やせる(下図)
Axis(Gridの色の影響の方が大きいのであまり変更しても意味はない)
Preferences > Presets > Use Interface Axis & Gizmo Colors
Alphaはない
https://gyazo.com/b344a9f4b6c0289bb2f6ccca1615ddfc
4.2.2 Undo回数の設定
必要に応じてUndo回数を増やしておく。
Preferences > System > Memory & Limits
Undo Steps: 64(初期値は32、あまり大きすぎてもメモリを食うので100程度まで)
Global Undo: ON(初期値OFF、マニュアルではONが推奨されている)
参考)
https://gyazo.com/024175d3da0d2ad61ef038e688077ec5
hr.icon
5. Motion Trackingの準備
5.1 Motion Tracking Workscapeの表示
ワークスペースの一番右の「+」(Add Workspace)をクリックする。
メニューのVFX > Motion Trackingを追加する。
https://gyazo.com/9d4827418b211a0fa32a9b85a2eb1b65
Motion Tracking Workspaceが表示される。
https://gyazo.com/5b52b3604f0ae5680c406e19f73b9744
5.2 素材映像の読み込み
Movie Clip Editor(真ん中パネル)の中央のOpenをクリックして、hinoA_20240917.mp4を読み込む。
https://gyazo.com/96dcbe810f8bc021122484eac795727e
https://gyazo.com/f239affd3dfa65cd792920cbf4fd67ae
5.3 Output PropertiesをFootage Settings情報に合わせる
サイドバーのFootage > Footage SettingsのResolution(1920 x 1080)を確認
Output Properties > Format > Resolution XとYを合わせる(今回は同じなので不要)。
サイドバーのFootage > Footage Settingsのフレームレート(30fps)を確認
Output Properties > Format > Frame Rateを30fpsに変更。
https://gyazo.com/3957d20ee2304c163a02957e15e960b7
5.4 Track Clipの設定
Set Scene Framesをクリックして、End Frameを映像データに自動で合わせる(250→180)
Prefetchをクリックして、映像データをメモリにロードする
これにより映像の再生をリアルタイムに行うことができる
解像度が大きい場合は部分的にしか再生されない → メモリ増設必要
映像プレビューは必要に応じて、Wheelスクロール(スケール)やWheelドラッグ(移動)を行って見やすいように調整する
https://gyazo.com/1ec5c7e0ab38d5cdda914b33c43739ad
hr.icon
6. Markerの追加とトラッキング(自動) ※解説のみ
自動は万能ではなく、手動の自動化であり、エラーは逆に多数起こる。
手動の編集時にエラーを再調整や削除する作業の自動化も同時に理解する必要がある。
エキスパート向きであり、初心者は手動で一つ一つ丁寧にトラッキングした方が成功しやすい。
https://gyazo.com/232f9855b8afbe8e86815f4c6c01b762
参考
hr.icon
7. Markerの追加とトラッキング(手動)
少なくない試行錯誤が必要
7.1 作業内容
https://gyazo.com/83153d060e4dad94da2d0c86e3a1d36c
7.2 Tracking Settings
https://gyazo.com/a09681c197011e7a365be4042c265402
以下、初期値から変更なし。
Pattern Size(特徴点のサイズ):21 px ※初期値のまま
Search Size(特徴点の検索領域サイズ):71 px ※初期値のままだが、トラッキングが止まる場合に手動で変更する
Motion Model: Location
メモ)カメラワークが入る場合はRotationやScaleも含める場合がある。今回の撮影データではうまくいかなかった。
メモ)PerspectiveやAffineは物体トラッキング用だと思われる
Match:Keyframe
メモ)今回はPrevious Frameは使うとうまくいかないが、撮影データによってはPrevious Frameの方がよい場合もある。特にFloor設定がうまくいかない。
Prepass:チェックを入れる
Normalize:チェックを外す
メモ)多くのYouTubeではNormalizeが利用されているが、今回の撮影データでは
7.3 一つ目のMaker
7.3.1 Marker追加場所のコツ
High contrast objects コントラストが高い部分
Not localaized in one area on screen 画面内で一箇所に集中しない=分散して散らばっている
Obejects close and far away 近い場所や遠い場所=距離も分散
草木やその影は風の影響で静止していない場合があるので注意
フェンスはカメラが動くと後ろの画像が変化するのでマーカー場所には適さない
7.3.2 IN〜OUTの中央付近に時間インジケータを移動
映像のIN〜OUTで常に常時されている部分を確認する
カメラの移動によって消える部分にMarkerを追加すると途中までしかトラッキングされない。トラッキング情報としては利用されるが精度の高いものではなくなるので、少ないポイント数のトラッキングの場合は常時表示されているポイントにMaker追加する。
https://gyazo.com/eb417a7f725f02af9cf718076b58fc0c
7.3.3 一つ目のMakerの追加とトラッキング
電柱交差部分にCmd+左クリックしてMarkerを追加する。
Markerの中心付近をドラッグして微調整できる。
TrackタブでPattern(特徴点画像)を確認できる。
失敗した場合等、Xキーで削除できる。
https://gyazo.com/623244a565ed7a6ba80fb29661130bd3
Clip Displayをクリックして、Marker DisplayのSearch(OPTION+S)、Info、3D Markesにチェックを入れる。
https://gyazo.com/bfeb2b441499c235fcacf9eecd83b55f
下図アイコンをクリックして、前方にTrackingする。
https://gyazo.com/4db483066c51b37cd1aae4eabf6c786f
下図のようにトラッキングされる。
もし、途中でトラッキングが止まった場合は、1フレーム戻り、Search Sizeを調整して再トラッキングする。
このとき、ポイントがずれていたら修正する。
https://gyazo.com/f6ea79c96ca2b26ddfa00cb4b7257934
時間インジケータをPattern Size(もしくはSearch Size)が表示されているフレームまで移動する。
https://gyazo.com/9386a2c255eb051a2147d1a03a154145
前方トラッキングボタンを押す。
https://gyazo.com/0d073c38a74b489ed54b47cadc062d68
途中でトラッキングが止まった場合は、下図のように全てのフレームがトラッキングされるまで調整する。
https://gyazo.com/522a2ef7f8249e8f3549786b7086ac56
7.4 Maker表示のロック
Clip Display左側の鍵アイコン(下図)をクリックor Lキーで、再生時のプレビュー表示を選択したMakerに追従させることができる。
この表示でトラッキング状態を確認することができる。
https://gyazo.com/7a8a8b8f29f141334ea8d0468693ba78
7.5 残りのマーカー追加とトラッキング
Motion Trackingには8つ以上のMarkerが必要
毎回、IN〜OUTの中央付近のフレームに移動してから、前後にトラッキングする
下図の10点にMarkerの追加とトラッキングを行う。
最低8点で分析は可能だが、FloorやOriginの設定に必要なマーカーも追加している。
試行錯誤の結果なので、撮影した映像によって異なる。
特に中央ラインや地面のマーカーはズレやすいので何度も修正しながらトラッキングする。
https://gyazo.com/31483540e880994b43e346e03d9243ec
hr.icon
8. Solve(カメラの動きの解析)
8.1 現在の作業
https://gyazo.com/e25846e78f822a5db6b8aa9530c8f92e
8.2 撮影カメラのセンサーサイズと焦点距離
カメラの焦点距離に関しては、自動解析の方が分析精度が良かったため、8.2.2の方法で行う
8.2.1 被写界深度の指定(紹介のみ)
右のSidebarのTrackタブを下図の数値に変更する。
Sensor Width: 35mm
Focal Length: 29mm(35mm換算)
※今回利用したカメラはiPhone 8 Plusの2つのカメラの内の広角カメラ(ネットで上記数値を調査)
https://gyazo.com/65d2491f344735fc39d9b97174ee0aba
次に左のToolbarの以下の数値に変更して、Solve Camera Motionをクリックする。
Keyframe AはIN点のフレーム
Keyframe BはOUT点のフレーム
上記はIN点、OUT点でなくとも、カメラが移動して構図が大きく変わっている2つのフレームであればよい。
https://gyazo.com/b664028fa4015177fc6d253750d0ea82
8.2.2 被写界深度の自動解析
Keyframe A、Keyframe BをIN点、OUT点に合わせる。(分析精度が低ければ、異なるフレームで試してみる)
Focal Length: ON(被写界深度の自動解析)
Optical Center: ON(光心の自動解析)※あとから手動指定可能
https://gyazo.com/f90a1186e5c0dc0ee716e59e66c8708d
Solve後にサイドバー > Tackタブ > Camera > Lens > Focal Lengthを確認すると、解析数値が確認できる。
下図では31.82mmであり、カメラ仕様の29mmとは異なる。どちらが正しいかは難しいところだが、レンズやCCDには何等かのフィルターが実装されている可能性があり、それが影響していれば仕様の数値からズレている方が実態に近い可能性もある。
https://gyazo.com/b5e787972fac5dd7a9cc5ecd630d31fe
8.3 Solve Error
Sidebar上にSolve error(下図)が表示される。この値が小さい方が望ましいが0.5以下程度であれば問題ない。
error数値が大きい場合は、トラッキングポイントを見直して再分析を行う
https://gyazo.com/8bb16109998b42d981ef9fefa504bbd3
分析後は、Marker毎のAverage errorがSearch Area下に表示される。
https://gyazo.com/50f16551556f07de9f191445daae0330
Movie Clip EditorのTrackingパネルにはエラーが大きい順にTrack情報が表示される。必要に応じて選択・削除を行う。
Movie Clip EditorのTrackingパネルとMovie Clip EditorのClipパネルのプレビュー表示上ではMarkerの選択操作にクセ(連動しないので、一旦ClipパネルのMarker選択を解除する等)があるので注意。
https://gyazo.com/9d70ea939de2dbbce0d03812d59debdf
メモ)左のAnnotationタブでDrawした範囲でSolve範囲を設定できるが、狭くすると解析結果が悪くなる。フレーム毎にAnnotationを描画し直す必要もあるので、エキスパートでないと難しい。
試行錯誤のポイント
Key frame A, Bを変えてみる(例:10と170とか)
Focal Lengthを自動もしくは固定
エラーの多いトラックを削除して、やり直す
最初から全てのトラックをやり直す
hr.icon
9. 解析結果をシーンへ反映
9.1 作業内容
https://gyazo.com/807c2742934e222dc1a46dd9ee32ba55
9.2 シーンへの反映
Solveパネル > Scene SetupのSetup Tracking Sceneボタンを押す。
https://gyazo.com/a9f52180c06e3be20356a3519df65669
トラッキング結果がシーンのCameraに反映され、CameraのBackgroundに映像(不透明度50%)が設定される。
https://gyazo.com/3f2266349ff57e448c5f4d474542a702
9.3 Floor設定
SHIFTを押しながら3つのMarkerを選択
Solveパネル > Orientation > Floorをクリック
下図右上のように原点が移動及び回転して調整される
https://gyazo.com/36be64d8425ad119f5b310a82a75a40e
Floor設定のエラーが起こった場合
Three tracks with boundles are needed to orient the floor
Solveしていないか、エラーの大きいトラックを選択している
9.4 Origin設定
中央ラインのマーカーを選択
Solveパネル > Orientation > Set Originをクリック
下図右上のように原点が移動する
https://gyazo.com/c3b185ec3cbc8b9155afeba1747ad0c4
9.5 シーン作成の準備
ここの作業にもコツがいる
Layoutワークスペースへ切り替える。
https://gyazo.com/04f767f9594d3c6e8dc05ef57d9684e0
Viewport Overlaysの以下にチェックを入れる。
Motion Tracking
Camera Path
Marker Names
https://gyazo.com/15369cb980662943fa14ca4de400a966
View視点を変更して、Marker等を確認してみる。
https://gyazo.com/51ef47ae856b3722ecf88589902af46e
3D Viewportの視点を変更した場合はBackground映像が表示されないので、下図アイコンをクリックしてCamera Viewに戻す。
https://gyazo.com/bc94e968684226ffdf8c5bf954e40f14
Preferences > Themes > 3D Viewport > Gridの不透明度を上げる(任意)。戻る場合は下図右上のResetを押す。
https://gyazo.com/b04e62f1394a7b4305e8d5aa49638e84
Cubeは非表示にする。
OutlinerのCameraもしくは3D Viewportのカメラ構図の縁をクリックして、Cameraを選択する。
https://gyazo.com/6ed8e41a555fdd9e9ec6cc12e1c9c467
Transform Pivot PointをMedian Pointから3D Cursorに変更する。
https://gyazo.com/a4a06386d4a22632ce60f3b9d561b0cc
R、Zでカメラ位置を3D Cursorを中心に回転させる。
下図のようにY軸 or X軸が中央ラインに合うように調整する。
回転単位が大きい場合はSHIFTキーを押しながら微調整する。
https://gyazo.com/a15440b03e1837c5ea3d18e090873946
必要に応じて、Scene Properties > Units > Unit Scaleを増やすと相対的にグリッドが細かくなる。
https://gyazo.com/97438d03cf4a32ef61590b761d05392d
FloorにあたるGround Planeを選択して、SとX or Yで疑似道路を作成する。
再生して道路がある程度合ってることを確認する。大幅にずれている場合はマーカー追加からやり直したほうがよい。経験値があれば、カメラの回転で調整も可能だが、初心者がやると逆に大きくずれてしまう。
https://gyazo.com/242a82ab9f380a01321d7bfe54282767
必要に応じて、Transform Pivot PointをMedian Pointに戻しておく。
中安個人メモ blendファイル)blender_files_tracking_test3 > hinokaijuA_trackingTest3_w9.blend
hr.icon
10. シーン作成
10.1 作業内容
https://gyazo.com/963bbfad2b97920a06dd232da51e0b81
10.2 PUMPKINHULK(任意)を読み込む
3.2のダウンロードしたMutant Walking_RootMotion_0to99.fbx(名称は変更したもの)を準備する。
File > Import > FBXもしくは3D Viewportにドラック&ドロップして読み込む。
https://gyazo.com/3578d3b14be9debbf21a028bd7453d1d
10.3 歩く方向とサイズの調整
サイズの調整:Sでスケール
歩く方向:R、Zで回転
歩き始めのスタート位置:Gキーで移動
カメラを選択してG、Yキーでもよい
現時点では目処でよい。影や照明の設定した後で再調整する。
https://gyazo.com/21b0772b4e7e9906cf08224920d675ad
10.4 ループアニメーション設定
演習進捗メモ)方法④(In Place)の演習は行ったが、方法③(Root MotionのMake Cyclic)はまだやっていない
https://gyazo.com/ec77114d43931a7b58eda843d0c8f4e5
hr.icon
11. blendファイルの保存
これ以降の作業はCyclesレンダリングとEeveeレンダリングで異なるため、
この時点のblendファイルを保存して、これ以降の作業は別のblendファイルを保存すること。
中安個人メモ)blender_files_tracking_test3 > hinokaijuA_trackingTest3_w12.blend
hr.icon