1

基本的に私たちが持っているのは、OpenGL オブジェクトのモデルビュー マトリックスです。これにより、Rotation および Translation ベクトルが得られます。これらを使用して、いくつかの計算で実際の位置を取得します。

-R*t, where R is [0 4 8; 1 5 9; 2 6 10] matrix and t is [12 13 14] column vector.

OpenCV にはx,y、指先の画面座標があります。

ここで、このx,y画面を OpenGL の実際の座標と比較して、どのオブジェクトに指が当たったかを確認する方法が必要です。試してみgluUnProjectましたが、x、y から正しい実世界の座標が返されませんでした。

ここで試す方法は、ARToolKit と OpenCV を併用しているので、AR のマーカーに基づいてモデルビュー マトリックスが変化します。また、ARToolkit カメラ モジュールを使用しています。

4

1 に答える 1

2

さて、見てみましょう: 3 つの独立した線形方程式系の 2 つの既知の方程式があります。したがって、文字通りいくつかの情報が欠落しています。自由なパラメーター z があります。考えてみると、これが与えるのは空間内の位置ではなく、そこへの光線 (カメラからある方向への無限遠) です。z=0 と z=1 に対して gluUnProject を実行すると、光線上に 2 つの点が得られます。次に、その光線を使用して、オブジェクトの一部を横切るかどうかをテストできます。

または、逆の方法で行います。各オブジェクトのバウンディング ボリュームをスクリーン スペース (x,y) に投影し、指の座標をテストしてそれに接触します。私なら後者にします。

于 2011-11-12T19:07:02.200 に答える