2

拡張現実アプリケーションの透視投影をまだ実装しています。このスレッドで Aldream から説明されている、ビューポートの計算やその他のカメラに関する質問を既にいくつか行っています。

ただし、現時点では有用な値は得られません。これは、デカルト座標空間の計算に依存していると思います。

緯度、経度、高度をデカルト座標空間に変換する方法はいくつかありましたが、どれも正しく機能していないようです。現在、私はECEF(地球中心)を使用していますが、ハバーシン式と三角法(2点間の距離と方位からxとyを計算する)の組み合わせなど、さまざまな計算も試しました。

だから私の質問は:

デカルト座標空間は透視投影にどのように影響しますか? 単位をどこで「補正」する必要がありますか?(たとえば、メートルまたはセンチメートルを使用している場合)?

たとえば、カメラが (0,0,2m の高さ) にあり、ポイントが (10,10,0) にあるとします。これで、ウィキペディアで言及されている関数を簡単に使用でき、その後、他のスレッド (上記) で説明されている dx、dy、dz の変換を使用できます。私がまだ得ていないこと: この投影法は、座標系の単位が何であるかをどのように「認識」していますか? これは私が現在行っている間違いだと思います。座標系の単位を扱っていないため、投影から適切な値を取得できません。

単位がセンチメートルの座標系を使用している場合、透視投影のすべての値が増加しています。このユニットの問題をどこで「解決」する必要がありますか? カメラの幅と高さをピクセルからメートルに「変換」する必要がありますか? 座標系をピクセルに変換する必要がありますか? この状況を処理するには、どの座標系を使用する必要がありますか? 私の問題を理解していただければ幸いです。

編集:私はそれを自分で解決しました。 座標系を ecef から独自の座標系に変更し (haversine と方位を使用して x、y、z を計算)、適切な値が得られました。:)

4

1 に答える 1

4

ここでは、別の方法で説明しようと思います。:)

簡単に言えば、デカルト位置の単位は、均一に保っている限り、つまり、この単位をシーンとカメラの両方に適用している限り、問題ではありません。

より長い答えについては、使用した式に戻りましょう...

スクリーンへの投影

と:

  • d相対デカルト座標
  • s印刷可能な表面のサイズ
  • r「センサー」/記録面のサイズ (つまりr_xr_yセンサーのサイズとr_zその焦点距離)
  • b印刷可能な表面上の位置

.. 疑似次元分析を行います。我々は持っています:

[PIXEL] = (([LENGTH] x [PIXEL]) / ([LENGTH] * [LENGTH])) * [LENGTH]

の単位として使用するものは何でもLENGTH、均質化されます。つまり、比率のみが維持されます。

元:

[PIXEL] = (([MilliM] x [PIXEL]) / ([MilliMeter] * [MilliMeter])) * [MilliMeter]
        = (([Meter/1000] x [PIXEL]) / ([Meter/1000] * [Meter/1000])) * [Meter/1000]
        = 1000 * 1000 / 1000 /1000 * (([Meter] x [PIXEL]) / ([Meter] * [Meter])) * [Meter]
        = (([Meter] x [PIXEL]) / ([Meter] * [Meter])) * [Meter]

あなたの他のスレッドでの私の説明に戻ります:

これらの表記法を使用して表現すると、次のようになりますb_x

b_x = (d_x * s_x) / (d_z * r_x) * r_z
    = (d_x * w) / (d_z * 2 * f * tan(α)) * f
    = (d_x * w) / (d_z * 2 * tan(α)) // with w in px

(d_x, d_y, d_z) = (X,Y,Z)またはを使用しても(d_x, d_y, d_z) = (1000*X,1000*Y,1000*Z)、比率d_x / d_zは変わりません。


問題の背後にある理由から、カメラの位置/シーンまでの距離に正しい単位を適用しているかどうかを確認する必要があります。どちらを使用しているかに応じて、αまたは焦点距離の単位も確認してください。

後者の提案が最も可能性が高いと思う場合。カメラの特性に合わせて適切なユニットを適用することも忘れがちです。

于 2013-05-28T13:10:18.087 に答える