2

スタック交換について初めて質問しますが、これが適切な場所であることを願っています。

私は 3D 数学の点で正確に最高ではないので、自分の状況に十分に近い近似アルゴリズムを開発できないようです。

カメラを含む任意のオブジェクトの位置と回転にアクセスできるだけでなく、任意の 2 点からトレース ラインを実行して、点と衝突点の間の距離を取得できる 3D 環境があります。カメラの視野もあります。ただし、ワールド/ビュー/プロジェクション マトリックスにアクセスする方法はありません。

また、基本的にカメラからの 3D 環境のスクリーンショットのセットである 2D 画像のコレクションもあります。各コレクションは同じポイントと角度からのもので、平均セットは、地平線。

2D イメージのコーナーを表す 3D 世界に配置できる「登録点エンティティ」を使用するポイントに到達できました。次に、2D イメージでポイントが選択されると、座標として読み取られます。範囲は 0 ~ 1 で、レジストレーション ポイントの 3D 位置間で補間されます。これはうまく機能しているように見えますが、画像が完全なトップダウン アングルである場合に限ります。カメラが傾いて別の次元の遠近法が導入されると、この遠近法は補正されないため、結果はさらに不正確になります。

スカイスクレーパーの窓などのポイントの高さを計算できる必要はありませんが、少なくとも画像平面のベースの座標、または画像から線を延長した場合の座標指定された画像空間のポイント 少なくとも、途中に何もない場合にラインが地面と交差するポイントが必要です。

これについて私が見つけたすべての資料は、ワールド/ビュー/投影マトリックスを使用してポイントを逆投影するだけであると述べています。これらのマトリックスにアクセスできないことを除けば、それ自体は簡単です。スクリーンショットの時間などに収集できるデータだけです。アルゴリズムは、私がまだ理解していない複雑な数学を使用しています。

これの最終目標の 1 つは、ユーザーが画像をクリックした 3D 環境にマーカーを配置できるようにすることですが、ユーザーの視点から単純な逆投影を実行することはできません。

どんな助けでも感謝します、ありがとう。

編集: Herp derp、私の状況の制限により、そうするための私の実装は少し奇妙ですが、ソリューションは基本的に、ビュー/投影行列を単に再計算することに関する ananthonline の答えに要約されます。

4

1 に答える 1

0

カメラの位置、回転、FOV の間で、カメラのビュー/投影マトリックス (songho.ca/opengl/gl_projectionmatrix.html) を計算できなかったので、既知の 3D ポイントを非投影にすることができましたか?

于 2012-05-14T19:41:32.090 に答える