1

Kinect を使用して拡張現実アプリケーションを作成しています。

これにはいくつかの課題があります。

シーン図

平面上にたくさんのオブジェクトが置かれます。幸いなことに、Kinect は平面の法線ベクトルを提供してくれます。OpenGL カメラをどこに設定するかを知る必要があります (理想的には、これは Kinect が配置されている場所です)。そのためには、Kinect が 3D 空間のどこにあるかを知る必要があります。これは、2 つの場所が一致している必要があるためです。

追加の説明が必要な場合は、お知らせください。私の説明が必要なほど明確ではないかもしれないことは承知しています。

4

1 に答える 1

1

Kinect を原点とします。また、Kinect からの (平面上の) ポイントの距離もわかります。これは、Kinect がこのポイントの距離として提供するものです。ノーマルもわかります。したがって、あなたがしなければならないことは、平面の平面方程式を見つけて、それを行列に変換し、それを逆にすることだけです。

点と法線ベクトルが与えられた平面方程式は、

n·(r-r_0) = 0 ; r_0 = 0
n·r = 0

私たちはrを知っています

r = (0, 0, -distance_at(kinect_depth_image_width/2, kinect_depth_image_height/2))

平面は次のように表現できることを思い出してください。

p(s,t) = r + u * s + v * t

ここで、u、v は平面の基底ベクトルです。したがって、これを行列として書き直すことができます

u_x v_x n_x r_x
u_y v_y n_y r_y
u_z v_z n_z r_z
  0   0   0   1

u と v は、任意の「上」ベクトルと「右」ベクトルを選択することで決定できます。Y=(0,1,0) と X=(1,0,0) を使用し、あなたに対して直交化を実行することをお勧めします。 u と v を生成する既知の法線 n。

その行列を逆にすることで、平面上のゼロ点から kinect への変換が行われます。

于 2011-11-11T13:01:56.680 に答える