問題タブ [fieldofview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
304 参照

actionscript-3 - 視野に合わせてオブジェクトをスケーリング

フラッシュ (as3) で独自のパノラマ ビューアー アプリケーションの上にいくつかのクリック可能なホットスポットをオーバーレイしています。どの式を使用すればよいかわかりません。

視野の最大と最小をそれぞれ 90 と 25 に設定しました。アイコンのスケールを計算する方法について、いくつかの提案がありました。

パノラマソフトのメーカーより:

これは私にはうまくいかないようです。と:

近づきますが、ある時点で、パノラマが拡大し続けていても、ホットスポットの拡大が止まります。次のようなことができると思いました:

しかし、それも正しくありません。すべてが大きすぎたり小さすぎたりします。

何か案は?

0 投票する
1 に答える
2868 参照

camera - libGDX - 遠近法カメラと視野

libGDX のパースペクティブ カメラの視野を理解するのに問題があります (または計算が間違っている可能性があります)。

ボックスを描画したい (たとえば、幅 800 ピクセル、高さ 480 ピクセル、深さ 20 ピクセル)。ボックスは x 軸と y 軸の間に配置されます (つまり、x 軸の幅と y 軸の高さ)。ここで、x 軸 (カメラの位置) のボックスの後ろに立って、画面の右端にボックスが見えるように方向を見たいと思います。私はいくつかのスケッチを作りました:

箱を描く

X 軸上のカメラ、ボックスを見ている

ボックスは右側に表示されます

最後のスケッチでは、ボックスは視野の右側にあります。

さらに、ボックスの高さは画面に正確に収まる必要があります。つまり、ボックスの上端が画面の上部にあり、ボックスの下端が画面の下部にある必要があります。これを実現するためのコードと計算は次のとおりです。

ボックスの高さを画面に合わせるには、SCREEN_HEIGHT/2 を戻す必要があります。x = SCREEN_HEIGHT/2 / tan(45°) = SCREEN_HEIGHT/2 / 1 = SCREEN_HEIGHT/2 であるため、この長さを x コンポーネントに追加したのはそのためです。位置設定で。

コードはスケッチ 2 を表し、正しいスクリーンショットが表示されます。

スケッチ 2 のスクリーンショット

スケッチ 3 を完成させるには、視野を左に約 45° 回転させる必要があります。しかし、これに関連して、視野の辺が中心線よりも長いため、少し後退する必要があります。手描きのスケッチを 2 つ作成しました。

視野の回転

ここで、h = SCREEN_HEIGHT です。まず、x を計算する必要があります。x = h/2 / sin(45°) = h/sqrt(2)。ここで、x の長さだけ戻り、新しい方向 (ボックスから左 45°) を見る必要があります。見るポイントを計算するために、このスケッチで長さ y を計算します。

計算y

y = sin(45°) * h/2 = h * sqrt(2)/4. したがって、ポイントはたとえば (SCREEN_WIDTH + (xy), SCREEN_HEIGHT/2, y) です。ここで、コード内の位置と視線を変更します。

そして、私はこの画面を取得します:

スケッチ 3 を表すスクリーンショット

しかし、ボックスは右側にありません:(

では、問題は次のとおりです。何が間違っているのでしょうか。私の視野の考え方や私の計算は間違っていますか?

よろしくお願いします!

0 投票する
1 に答える
128 参照

java - オブジェクトを完全にカプセル化する透視マトリックス

任意のカメラからオブジェクトをレンダリングする射影行列を作成したいと思います。任意の目の位置からオブジェクトを見る viewMatrix を設定することができましたが、射影行列の設定が困難です。

(x,y,z) を中心とし、中心から最も遠い点が r であるオブジェクトは、任意の向きで、原点 (x,y,z) の半径 r の球内に完全に囲むことができると仮定すると、視点を計算しました。マトリックスは次のとおりです。

私の例では:

  • vec はカメラからオブジェクトへのベクトルです
  • オブジェクトは、最も遠い頂点が (0.5, 0.5, 0.5) の立方体であり、ar は sqrt(0.75) になります。

私が知る限り、ジオメトリと三角法は正しいはずですが、次のフラグメント シェーダーを使用して座標をレンダリングします。

画像に示すように、FOV が狭すぎて、ニア プレーンとファー プレーンも狭すぎることがわかります。

どうすればこれを修正できますか?

0 投票する
1 に答える
605 参照

raytracing - レイ トレーサー (PBRT としましょう) でレンダリングされたイメージの焦点距離を計算するにはどうすればよいですか?


実際、PBRT で光の方向が異なる球体の 3 つの入力画像をレンダリングしました。
プロセスの次のステップとして、この球体の表面法線を計算するので、式に焦点距離の値を入れる必要があります。
PBRT 入力ファイルの視野 (FOV) の値は 45 です。
画像全体の寸法は 32*32 で、画像内の球の寸法は 26*26 です。
この情報を使用して焦点距離の正確な量を計算するにはどうすればよいですか?

0 投票する
1 に答える
11344 参照

camera - 水平、垂直、斜めの視野の関係

これらの値の間に数学的な関係はありますか? hFOV と vFOV がわかっている場合、焦点距離などの他の値を使用せずに対角 FOV を計算できますか?

私の最初の考えは、ピタゴラスの定理を使用することでしたが、おそらく間違っています。