3Dカメラの位置は、いくつかのポイントを与えられました
質問
Heyo、
私は現在、私は、文字の完全な動きがカメラを移動せずに閲覧可能になるようにカメラを配置する必要があるプロジェクトに取り組んでいます。私は文字が開始位置だけでなく、文字はすべての3つの方向(X、Y、Z&)に移動する最大距離を持っています。私はまた、(90度)視野を持っています。
私はそれがフルモーションを見に移動する必要がないようにカメラを配置する必要がある場所を見つけ出すだろう方程式はありますか?
注:このは、OpenGLを使用している
。の明確化:カメラがない以上、運動中のキャラクターの「前に」でなければなりません。
。また、接地面に沿って移動することがあります。
解決
、あなたがする必要があるのは以上の境界球/罪(FOV / 2)の半径に等しい距離でカメラを保持している。
あなたは、半径半径のバウンディング球、およびビューFOVの指定したフィールドを、持っている場合は、は、たとえば、お使いのカメラは、ちょうど境界球の中心に向かって指して、「ディスト」離れた地点である必要があります。
の距離を算出するための式であります: DIST =半径/ SIN(FOV / 2)。
これは、任意の方向にカメラのために、3Dで動作します。
他のヒント
単にビューポートは、ピラミッドの頂点は、目の位置にあると、実質的にピラミッド状であるため、(X、Y、Z)の最大範囲は、それ自身十分でない有する。
は、引数のために、のすべての動き(すなわち接地)(X、Z)平面内にあり、目はY軸に沿って原点10Mの真上にあると仮定する。
あなたは両方のXとZ軸に沿って±10メートルから、だけ地上にあるオブジェクト(Y = 0)のために見ることができるようにしたいビューのあなたの90˚分野で、正方形のビューポートを仮定。すぐに彼らは地面をオフに来るよう、あなたのビューが減少しています。それは地面の1メートルだ場合、あなたの(X、Z)範囲はわずか±9メートルあります。
明らかに実際のカメラは、任意の方向を向いて、シーンでとにかく配置することができます。でも、カメラの「ロール」角度が表示されているどのくらい変更することができます。そこ実際には無限に多くのそのようなカメラのポイントがあるので、あなたは、多少自分の基準を制約する必要があります。
始点から終点までの線分を取ります。線分の中点を通って、この線分に直交する平面を構成します。次に、交点を見面と線の交点から次以上の距離にこの平面のどこかにカメラを位置決めします。カメラのアップベクトルは平面でなければならず、水平視野は90度である必要があります。
distance = sqrt(dx^2 + dy^2 + dz^2) / 2
このカメラの位置は、すべてのビューポートの左または右の境界上の始点と終点を持ち、verticaly中心になります。
別の解決策は、始点、終点、及び画面上の両方の点の所望の位置をとる関数を記述するかもしれません。それからちょうどカメラの変換のための投影方程式を解く。
これは、例えば、依存対象が平面でつもり動きであれば、あなただけのボールの外にカメラを配置することができます(これは、FOVが幸運の角度である、90であるという事実に依存して)その移動領域を外接。
オブジェクトが3Dでつもり動きがある場合は、、それははるかに困難です。あなたがオブジェクトが移動(ボール対キューブ...)、あなたはからそれを見たい方向範囲を指定したい場合は役立つだろう。