Blender Hack Blog

オープンソースの総合3DCGソフトウェアのBlenderのコード解析や開発を記録していきます。

Blender: Modal Solverの仕組み (解析中)

Modal Solver

モーショントラッキングのSolverには2種類あり、Solveのオプションで、Tripodにチェックを入れたらModal Solverが使用される。 三脚に固定しているということは、カメラの位置は固定という前提条件が付く。 つまり、solverではカメラのrotationだけをsolveすれば良いことになる。

void ModalSolver(const Tracks& tracks,
                 EuclideanReconstruction* reconstruction,
                 ProgressUpdateCallback* update_callback)

アルゴリズム

lens distortionの設定がされている場合、lens distortionを補正し、トラッキングマーカーを正規化する

2Dのトラッキングマーカーの位置を3Dの球面上にマッピングする。

現在と前のフレームにおけるpoint cloudを計算し、そこからカメラのdelta rotation matrixを計算する。

delta rotation matrixをquaternionに変換する。

Ceresでquaternionの誤差を最小化する。

quaternionをrotation matrixに変換し、それを解析結果のカメラのrorationとしてセットする。

Ceres

ceres-solver.org

TODO

球面上での深度調整をどうやっているか?