透視投影のカメラパラメータ設定

透視投影の場合、初期化中のビューポートの 2 つの軸の視野角は、Keep Aspect 設定と FOV パラメータによって決定されます。維持された方向の視野角は FOV パラメータにロックされます (デフォルト)。 70 度)、その他の軸方向 視野はビューポートのアスペクト比によって決まります。
操作中にビューポートを調整すると、指定した軸の視野角は常にロックされ(初期化時)、他のアクティブな軸の視野 FOV のみが調整され、カメラの位置は変わりません。ビューポートのサイズを両方向に同時に調整すると、結果は 2 つの別々の手順で調整した場合と同じになります。

  1. まず、カメラの観察範囲としてすべてのオブジェクトの可能な位置範囲を決定します。
    オブジェクトはすべて w*h の長方形の範囲内にあると仮定します。
  2. カメラの高さ H (の最小値) を決定します。

初期化中にカメラの位置が長方形の中心の真上にあり、長方形の中心に向かって見て、ビューポートが特定の方向の長方形の全範囲を正確に表示できるようにする場合、次のようになります。 カメラ設定が Keep Wide の場合: 、ビューポートの水平視野角は変更されなくなり、カメラ設定が Keep の場合、
カメラと長方形の中心の間の距離は (w/2)*cot(70/2) になります。
高さ、ビューポートの垂直方向の画角は変更されません。その場合、カメラと長方形の中心の間の距離は (h/2)*cot(70/2) となります。

例: w=154、h=104、ビューポートの初期サイズは 1920*1080 であることがわかっています。カメラの最適な初期化パラメーター構成を見つけます (すべての w*h をできるだけ大きく表示します)。
解決策:
カメラのアスペクト維持が に設定されている場合

  • 幅を維持
    垂直方向の表示範囲 h'=154*1080/1920=86.625 < h、長方形の範囲を完全に表示することはできません
  • Keep Heightの水平方向の表示範囲
    は w'=104*1920/1080=184.89 > w となり、長方形の範囲を完全に表示できます。
    このときのカメラ高さの最小値は =104*cot(35 )/2=74.26 なので、H=75
    に設定する必要があります。高さおよび H=75 を維持します。

前の例の続きです。初期化後にビューポート サイズを 1080x1920 (縦画面) に調整すると、Keep Height が設定されているため、h 方向の視野角は変化しません。
水平表示範囲w'=104*1080/1920=58.5となり、水平視野が狭くなり、見える範囲が狭くなります。

前の例からの続き: 上記の 2 つのビューポート サイズで w*h の範囲を完全に表示したい場合は、ビューポートとカメラの最適な初期化パラメータ構成を見つけます。
解決策:
1920*1920 のビューポートの場合、特定の方向が 1080 に縮小されるとき、この方向の視野角度がロックされていない場合、視野 (軸方向に平行な直線の可視部分)ビューポートを通して観察される) は 7/16 で切り取られ、w または h は残りの 9/16 になければなりません。
したがって、大きなビューポート表示範囲の最小辺の長さ d=min(w, h)/(9/16)=h*16/9 は、既知の条件 d=104*16/
9=184.9、カメラから得られます。高さ H=(d/2)*cot(35)=132.0、ビューポート サイズを 1920*1920 に初期化し、Keep width を設定します (前の解法プロセスでの d の最小値は h と h 方向から取得されるため)削減されます)。
初期ビューポートが 1920*1080 または 1080*1920 の場合、1920 側がロックに設定されます (ロックされていない側が 1080 に調整されていると想定されるため)。

逆の考え方: 1080*1080 のビューポートの場合、特定の方向に 1920 に拡大すると、この方向の視野がロックされている場合、他の方向の視野は元の 9/16、w または h になります。はこの 9/16 以内でなければならないため、d=min(w, h)/(9/16) もあります。

実際には、ビューポート サイズはウィンドウ サイズと等しくなく、タイトル バーやステータス バーなどのスペース要素にも影響されることに注意してください。カメラの高さの設定は、オブジェクトのサイズや長方形が配置されている平面からオブジェクトまでの距離。

  1. 遠方平面と近方平面を決定します
    。立体幾何学的距離公式に従って、遠方平面を次のように設定します。
    Far = sqrt(H^2 + (w/2)^2 + (h/2)^2)
    推定値によると、オブジェクトの最大高さ hmax、近位平面を次のように設定します:
    Near = H - hmax

おすすめ

転載: blog.csdn.net/feiyunw/article/details/127135445