特定の視野で、特定の角度で xy 平面を見ている高さ h の座標 x、y を持つカメラがあります。カメラが平面上で見ることができる 4 つのコーナーを計算したいと思います。
おそらく何らかの公式があると思いますが、Googleで見つけることができないようです。
編集: 3D グラフィックスの意味でのカメラを意味していることに言及する必要があります。具体的には、XNA を使用しています。
特定の視野で、特定の角度で xy 平面を見ている高さ h の座標 x、y を持つカメラがあります。カメラが平面上で見ることができる 4 つのコーナーを計算したいと思います。
おそらく何らかの公式があると思いますが、Googleで見つけることができないようです。
編集: 3D グラフィックスの意味でのカメラを意味していることに言及する必要があります。具体的には、XNA を使用しています。
3D ゲームでグラフィックス コードをデバッグするために、同様のことをしなければなりませんでした。これについて考える最も簡単な方法は、画面の隅を表すベクトルを作成し、関連するオブジェクト (この場合は平面) との交差を計算することであることがわかりました。
ビュー プロジェクション (または、カメラのマトリックス スタックが乗算されたように見えるもの) を見て、それらが出力するスクリーン スペースには、 の等角化された座標を持つコーナーがあることに気付きます(-1, -1), (-1, 1), (1, -1), (1, 1)
。これを知っていれば、自由変数が 1 つ残っており、カメラのコーナーを表すベクトルを解くことができます。
しかし、これは苦痛です。カメラが回転または移動されていないかのように各コーナーのベクトルを作成し、ビュー マトリックスによってそれらを変換してワールド空間ベクトルを得る方がはるかに簡単です。次に、ベクトルと平面の間の交点を計算して、4 つのコーナーを取得できます。
私は日雇いなので、計算はあなたに任せます。ただし、それを助けるかもしれないいくつかのリンク:
レンズの歪みを無視し、レンズがほぼ焦点にあると仮定すると、センサーのサイズとレンズ、レンズから被写体までの三角形が形成されます。同様の三角形から被写体の平面のサイズが得られます。
垂直なオブジェクト平面への単なる投影である傾斜したオブジェクト平面が必要な場合