私はウェブカメラを斜めのテーブルに向けており、それを使ってマーカーを追跡しています。OpenSceneGraphにtransformationMatrixがあり、その変換部分には、追跡されたオブジェクトからカメラまでの相対座標が含まれています。カメラが斜めに向けられているため、マーカーをテーブル上で移動すると、Y軸とZ軸が更新されますが、更新したいのはZ軸だけです。これは、マーカーの高さがマーカーまでの距離だけを変更しないためです。カメラ。これは、OpenSceneGraphのマーカーにモデルを投影するときにモデルがわずかにずれていて、マーカーをY値とZ値の周りに移動すると正しく更新されない場合に効果があります。
したがって、私の推測では、テーブルの表面に直交する新しい座標系を作成するために、各ポイントを乗算する変換行列が必要です。次のようなものです。A*v1= v2 v1はカメラの座標であり、v2は私の「テーブル座標」です。したがって、システムを「調整」するために4つのポイントを選択しました。そこで、画面の左上隅にマーカーを配置し、v1を現在のカメラ座標として定義し、v2を(0,0,0)として定義し、4つの異なるポイントに対してそれを行いました。そして、未知の行列と2つの既知のベクトルを持つことから得られる線形方程式を取り、行列を解きました。
マトリックスに対して取得する値は、モデルがマーカー上で正しく更新されるように、カメラの座標を乗算するために必要な値になると思いました。しかし、以前に収集した既知のカメラ座標にマトリックスを掛けると、「テーブル座標」が想定されていたものに近づくことはできませんでした。
私のアプローチは完全に間違っていますか、私は方程式で何かを台無しにしただけですか?(wolframalpha.comの助けを借りて解決)これを行うためのより簡単なまたはより良い方法はありますか?私は一種の道に迷い、時間のプレッシャーにさらされているので、どんな助けでも大歓迎です:-/ありがとう、David