問題タブ [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.

0 投票する
2 に答える
3859 参照

camera - Unity 3D のカメラ フラスタム プレーン

それぞれが異なる錐台平面を表すオブジェクトの配列を返すCalculateFrustumPlanes()ことは理解していますが、どの要素がどれであるかを示唆するドキュメントが見つかりませんか?Unity3DPlane

例えば

クワッド ツリー システムの場合、空間内のポイント (バウンディング ボリュームの中心点など) がカメラ錐台内にあるかどうかを計算する必要があります。

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

c++ - 歪んだ錐台がシーンを歪ませない

ユーザーの位置に応じて、シーンの 3D パースペクティブを実現しようとしていました。ユーザーが軸から見ていないときに歪みを実現するための非対称錐台アプローチについて読みました。

軸外投影を行うために使用したコードは次のとおりです。

ユーザーが軸を見ているとき、シーンは次のように描画されます。 ここに画像の説明を入力

錐台が軸からずれると、シーンは次のように描画されます。 ここに画像の説明を入力

ただし、次の図のようになると予想していました (gluLookAt と非対称錐台を使用して実現)。 ここに画像の説明を入力

上記のプログラムでは、表示ボリュームを指定するためだけに非対称錐台を使用し、パラメーターを変更すると (2 番目の画像)、シーンが少し翻訳されたように見えるようになりました (歪みはありません)。これが正しい動作なのか、それとも何かを見逃していて、そこにあるはずのシーンで歪み (3 番目の画像など) が得られなかったのか疑問に思っています。歪んだ錐台だけが、歪んだシーン出力を与えてはいけませんか?

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

autocad - Autocad の DXF 形式でフラスタムを作成するには?

テキスト エディタで DXF ファイルを使用して錐台を作成しようとしていますが、適切な解決策や作成方法が見つかりません。誰かが知っていて、解決策のDXFファイルまたは例を見つけるのを手伝ってくれるなら、それは大きな助けになるでしょう. ありがとうございました

0 投票する
2 に答える
1234 参照

opengl - トリミングされた画像を OpenGL でレンダリングする

解像度が非常に高い (たとえば 20,000 x 20,000 ピクセル) 特定のカメラ パラメーターを使用してシーンをレンダリングしたいのですが、実際にはイメージ プレーンの小さな 640​​x480 セクションを処理することにのみ関心があります。

必ずしもセクションをズームインして、カメラが向いている場所を変更したいわけではありません。カメラを同じ方向に向けたままにしたいのですが、シーンのごく一部だけをレンダリングしたいだけです。

私が話していることを示すために、写真を添付し​​ました。 アップロードされた画像

このようなものに対してOpenGL呼び出しを適切に使用してカメラマトリックスをセットアップする方法に関するヒントはありますか?

0 投票する
0 に答える
1009 参照

java - クリップ空間でのフラスタムカリング

Java と OpenGL ( LWJGL ) でクリップ スペース アプローチを使用してフラスタム カリングを実装しようとしています。射影行列については、次の方法を使用します。

錐台の係数は次のように抽出されます。

次の方法では、錐台に指定された点が含まれているかどうかをテストする必要があります。

問題は、このメソッドが予期しない結果を返すことです。そのため、点が錐台の真ん中にあるにもかかわらず、時々間違っています...

あなたが私を助けてくれることを願っています。

これは、問題を示す小さなテスト プログラムです。クラス FrustumTest:

クラス錐台:

0 投票する
0 に答える
529 参照

c++ - 錐台の属性を適切に計算していますか?

基本的なカメラ クラスがあり、次の注目すべき機能があります。

関数内の paramsznとは、それぞれニア クリップ プレーンとファー クリップ プレーンの距離に対応します。zfSetLens

SetLens基本的に遠近両方のクリップ プレーンの高さを計算すると共に、透視投影マトリックスを作成します。

したがって、GetFarWindowHeight()当然GetNearWindowHeight()、それぞれの高さクラスのメンバー値を返します。ただし、対応する幅は、それぞれの高さの値にビューの縦横比を掛けた値を返します。したがって、次の場合GetNearWindowWidth()

Whereは同じ計算を実行しGetFarWindowWidth()ますが、もちろん に置き換えます。mNearWindowHeightmFarWindowHeight

これで問題は解決しましたが、ニア クリップ プレーンとファー クリップ プレーンの高さと幅を正しく計算していないことがわかりました。特に、この混乱の原因は、y 軸の視野を度単位で指定し、それを正接関数でラジアンに変換しているという事実だと思います。これが問題を引き起こしていると思われる場所は、近くの平面と遠い平面の幅/高さを使用して、上、右、左、および下の平面のポイントも取得する錐台カリング関数にあります。

それで、私はこれを完全に間違っているという点で正しいですか?もしそうなら、私はそれを修正するために何をすべきですか?

免責事項

このコードはもともと D3D11 の本に由来するもので、読むのをやめて OpenGL に戻ることにしました。プロセスの負担を軽減するために、元のコードの一部をより OpenGL に準拠するように変換するとよいと考えました。これまでのところ、この 1 つの小さな問題を除いて、かなりうまく機能しています...

編集

最初にいくつかのことを言及する必要がありました。

  • OpenGL を使用するのはこれが初めてではありません。GL と D3D の座標系の違いだけでなく、変換プロセスもよく知っています。

  • これは私のカメラクラス全体ではありませんが、このコンテキストで疑わしいと思われる他の唯一のことは、カメラの行列mOrientationを使用して、+x、+y でそれぞれを変換することにより、ルック、アップ、右方向のベクトルを計算することです。 、および -z 基準、それぞれ。したがって、例として、ルック ベクトルを計算するには: を実行しmOrientation * vec4(0.0f, 0.0f, -1.0f, 1.0f)、それを に変換しvec3ます。ここで言及しているコンテキストには、これらの基底ベクトルを錐台のカリングと組み合わせて使用​​する方法が含まれます。

0 投票する
0 に答える
737 参照

c++ - 特定の角度でフラスタム カリングがカリングされないのはなぜですか?

錐台カリングの実装が正しく機能していません。カメラを左に回転させるとカリングされますが、右には回転しません。また、カメラを後方に移動すると「カリング」されますが、オブジェクトが消えてレンダリングされない距離は非常に短いです6.0fが、オブジェクトの中心 (球体) とカメラの位置を使用するときの単位についてです。距離を計算します。上下の移動/回転は、実際には何もしません。

私の投影遠平面は高いです: 500.0f、私の近平面は0.1fです。確かに、ファープレーンを下げたり上げたりしても、カリングには実際には影響しないようです。


コード

平面計算コードは次のとおりです。

簡単に言えば、ファー クリップ プレーンとニア クリップ プレーンの中心が最初に計算され、次に両方の錐台側の 4 つのコーナーが計算され、次のようにplanes配列内のポイント設定が可能になります。planes配列は、錐台の 6 つの側面を参照するために使用されます。

M_ComputePlane平面の法線と原点までの距離を計算しますd

実行された交差テストは次のとおりです。それぞれがテストされ、基本的に同じ結果が得られます。