問題タブ [frustum]
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.
java - フラスタムカリングについて混乱している
私はOpenGLが初めてです。JOGLで使っています。
私はフラスタムカリングについて読んでいます:
http://www.lighthouse3d.com/opengl/viewfrustum/
http://www.crownandcutlass.com/features/technicaldetails/frustum.html
私はそれが何をすべきか正確にはわかりません。OpenGL は画面外のオブジェクトを自動的にカリングしませんか? (このカリングは、最初からオブジェクトを送信しない場合よりも大幅に遅くなりますか?)
私が読んでいることから、これは、別の背後に隠れているが視錐台内にあるオブジェクトの描画を回避するようには見えません。それは、画面外のオブジェクトを OpenGL に送信しないことが唯一の利点であるということですか?
graphics - 投影された 3D ポイントの Z 値
3D 点が透視投影マトリックスによって変換された後、Z 座標は何を表しますか? 「目」からの距離?ニア クリップ プレーンからの距離は? これのどれも?
編集
ここにある glFustrum 定義を使用してマトリックスを設定しました。
次に、そのマトリックスを使用して 3D ポイントを変換します。
X と Y が錐台に近い面上の点の座標である 3D ポイントと、おそらく私が悪用するのに苦労している深度情報である Z が残っています。
ありがとう!
opengl - 錐台カリング長方形の問題
OpenGL2dゲームに錐台カリングを実装しようとしています。この時点での私のゲームの幾何学的オブジェクトの種類は長方形だけなので、これはかなり簡単だと思いましたが、予期しない結果が得られています。視野角が45度で、近平面と遠平面がそれぞれ0.01と50の対称透視投影を設定しました。目のベクトルは常にz軸に平行であり、カメラはx軸とy軸に沿ってのみ移動できます。
私のアイデアは、カリングしようとしている長方形のz座標で、現在カメラに表示されているワールドスペースの長方形の領域を取得することでした。カメラは錐台の中心を見ているので、この目に見える長方形の領域の端までの距離を次のように計算します。
次に、この距離をカメラのx座標とy座標に加算および減算して、表示される最大および最小のxおよびyを取得し、指定された長方形をテストして、これらの値の間にあるかどうかを確認します。
私の質問は、私がここで正しい方向に進んでいるかどうか、そしてz = 5にオブジェクトがあるときに、上記の式が途方もなく小さい値(何か* 10 ^ -37)を返す理由です。 0,0,0)?
iphone - iPhoneで錐台を設定する
fov=50、near=0.1、far=1000、aspect ratio=3/2 で錐台を設定しましたが、うまくいきません。オブジェクトが遠方で圧縮されているように見えます。
opengl-es - OpenGL で 2D (オルソ) の上に 3D (フラスタム) を描画できない
背景画像 (正射投影) の上に錐台投影を使用していくつかのメッシュをレンダリングしようとしています。私が何をしても、背景画像はシーンの上にあり続けます (メッシュを隠します)。
少しテストしてみました - 同じ射影行列で両方を正しい順序でレンダリングすると、背景画像がメッシュの背後にありました。
これらは射影行列と深度バッファ初期化です:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); でバッファーをクリーニングしています。
最後にもう 1 つ..GL_DEPTH_TEST を無効にすると、背景が最初に呼び出されるため、メッシュが背景画像の前に描画されます..
Depth-Buffer または Projection マトリックスのどちらがこの問題を引き起こしているのかわかりません.. screenWidth=960 および screenHeight = 640 のマトリックスの値:
私は何を間違っていますか?アミール。
編集:これは、正投影で画像を描画する方法です:
これは、錐台投影を使用してメッシュを描画する方法です。
math - 視錐台の視覚化を表示する
カメラの 3D 位置、カメラの 3D ターゲット位置 (カメラが指すポイント)、カメラからの遠面距離、視野、縦横比が与えられた場合、遠面の 4 つの 3D ポイントをどのように計算できますか? これは基本的な三角法で可能ですが、正確な結果が得られません。
c++ - バウンディングボックス錐台レンダリング-距離レンダリング-OpenGL
私は古いゲームフォーマットをレンダリングしています。ここには、現在のメッシュのリストがあります。最終的にPVS(別のリージョンから見えるリージョン)が機能するようになり、そうでないメッシュの多くが切り取られます。レンダリングする必要がありますが、それほど多くはありません。これで、レンダリングする必要のあるメッシュのリストには、表示できる他のメッシュのみが含まれます。しかし、それは完璧ではありません。クリップを過ぎた非常に遠くのメッシュを含むメッシュがまだたくさんあります。
まず、視錐台にないメッシュを選別しようとしています。バウンディングボックスがこれを行うための最良の方法であると聞いています。誰かが私がこれについてどうやって行くことができるかについての考えを持っていますか?ボックスにすべての頂点が含まれるように、最大点(x、yz)と最小点(x、yz)が必要です。
次に、これらのポイントのいずれかが私の視野の錐台にあるかどうかを確認しますか?そんなに簡単ですか?
ありがとうございました!
c++ - バウンディング ボックス錐台カリングの問題
正しいフラスタム カリングがうまく機能しません。AABB ポイント テストについて誰かから素晴らしい提案を得て、それはうまく機能しますが、最大ポイント テストと最小ポイント テストが常に機能するとは限らない点に到達しました。側面になります。したがって、完全なバウンディング ボックスの検出に進む必要があります。境界ボックスを錐台の平面に対してチェックするコードは既にあります。境界ボックスを設定するだけです。
これを行う方法について、コード例またはアイデアを持っている人はいますか。バウンディング ボックスを作成するための 2 つのポイントは、最小の xy と z と最大の xy と z です。
ありがとうございました!:)
opengl - オブジェクトがOpenGLのクリッピングボリュームの外側にあるかどうかを確認するにはどうすればよいですか?
私はOpenGLのモデルビュー変換について本当に混乱しています。私はすべての変換プロセスを理解していますが、射影行列に関しては、私は迷子になっています:(
ポイントP(x、y、z)がある場合、このポイントが平行クリッピングボリュームまたは遠近法クリッピングボリュームのいずれかによって定義されたクリッピングボリュームに描画されるかどうかを確認するにはどうすればよいですか?このプロセスの背後にある数学的背景は何ですか?