問題タブ [culling]
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.
opengl - 錐台カリング長方形の問題
OpenGL2dゲームに錐台カリングを実装しようとしています。この時点での私のゲームの幾何学的オブジェクトの種類は長方形だけなので、これはかなり簡単だと思いましたが、予期しない結果が得られています。視野角が45度で、近平面と遠平面がそれぞれ0.01と50の対称透視投影を設定しました。目のベクトルは常にz軸に平行であり、カメラはx軸とy軸に沿ってのみ移動できます。
私のアイデアは、カリングしようとしている長方形のz座標で、現在カメラに表示されているワールドスペースの長方形の領域を取得することでした。カメラは錐台の中心を見ているので、この目に見える長方形の領域の端までの距離を次のように計算します。
次に、この距離をカメラのx座標とy座標に加算および減算して、表示される最大および最小のxおよびyを取得し、指定された長方形をテストして、これらの値の間にあるかどうかを確認します。
私の質問は、私がここで正しい方向に進んでいるかどうか、そしてz = 5にオブジェクトがあるときに、上記の式が途方もなく小さい値(何か* 10 ^ -37)を返す理由です。 0,0,0)?
opengl - 3Dオクルージョンカリング
私はC++/openGLで静的な3Dブロックの世界のようなMinecraftを書いています。私はフレームレートの改善に取り組んでおり、これまで八分木を使用して錐台カリングを実装してきました。これは役に立ちますが、フレームレートが中程度から悪い状態が続いています。次のステップは、より近い立方体によって視点から隠されている立方体をカリングすることです。しかし、私はこれを達成する方法について多くのリソースを見つけることができませんでした。
graphics - 錐台カリングのための緩いオクトリー - アドバイスが必要
私はエンジンに動的オブジェクトのフラスタムカリングを実装しており、「ルーズオクツリー」についてできる限り読んでいます。残念ながら、ほとんどのソースは非常に曖昧であり、実際には、O(1) の挿入と削除を行ったが、その背後にあるロジックについては説明していない、彼らがどれほど優れているかを述べている人々の投稿がたくさんあります。
オクタントは実際よりも大きいものとして扱われ、緩い係数は最大 2 になるという主な原則を理解しています。これは、オブジェクトをそのサイズに基づいて単一のノードに挿入できることを意味します。問題は、記事の多くが 2 の「k-factor」を使用していないことです (おそらくよりぴったりとフィットさせるため)。したがって、高速な挿入/削除が失われます。代わりに、隣接構造を維持するため、特定の深さですべてのノードをトラバースし、各ノードでオブジェクトの中心をテストできます。
大まかなカリング テストが必要なだけで、O(1) の挿入時間が必要であり、オブジェクトを挿入する深さ (レベル) を計算するための式を作成しました。ただし、オブジェクトのサイズと位置から正確なノードを計算する式について説明している記事は見つかりません。
アルゴリズムを完全に誤解していて、不可能なものを探していますか? 誰かが私に良い論文や記事を教えてくれたら (私はhttp://tulrich.com/geekstuff/を読みました)、それは素晴らしいことです。
PS 1D 配列に格納された線形 octree を使用していることに言及する価値があるかもしれません
助けてくれてありがとう
c# - C# XNA - 画面のオフ/ハーフオフ時に 3D オブジェクトをレンダリング (?) します。(間引き?)
非常に大きなオブジェクトのように、原点が画面上にない場合、ゲーム マップが XNA に完全に表示されないとします。
私はこれについて血まみれのものを見つけることができません。私はカリングを調べ、これを打ち消すためにいくつかの形でプロジェクトに追加しようとしましたが、役に立ちませんでした.
原点が画面外にあるオブジェクトを描画して、部分的に画面上にある場合でも表示されるようにしたいと考えています。どうすればこれを達成できますか?
私が読んだドキュメンテーションから、カルはこれを行うべきですよね?私の貧弱な脳の問題 (._. )
余談ですが、XNA 用の Ox Engine 内でプリミティブを作成した経験のある方がいらっしゃいましたら、ご連絡をお待ちしております。
編集: Hellfire... この問題は Ox の仕業だと確信しています。クソ牛。私の憎しみのすべて。
opengl - OPENGL ARB_occlusion_query オクルージョン カリング
特定の数のクエリが実行されるオクルージョン カリングのために GPU GEMS 1 で提案されている方法に興味があります。説明されている方法を使用して、個々のボックスを相互にテストすることはできないため、次のことを行う必要がありますか?
テスト ボックス A -> レンダリング ボックス A
テスト ボックス B -> レンダリング ボックス B
テスト ボックス C -> レンダリング ボックス C
等々...
opengl - 古いゲームのレンダリングに最適なOpenGLカリング方法?
古いゲームからいくつかの古いジオメトリをレンダリングしています。彼らのクライアントは、近くにあるエリアを確認できるアルゴリズムを持っていましたが、私にはその能力がないため、不要なポリゴンをカリングすることを検討しています。現在、ゾーン全体のすべてのポリゴンを、表示できるかどうかに関係なく、視覚的な範囲内にあるかどうかに関係なくレンダリングしています。明らかに、これは完全に非効率的です。
どのタイプのカリングを使用することを検討する必要がありますか?
錐台にないポリゴンをカリングできることはわかっています。これにより、負荷の一部が軽減されますが、カメラから一定の距離にあるポリゴンをレンダリングしないことを選択できますか?これは何と呼ばれていますか?一部の地域でも霧を使用しています。同じ質問があります。霧の背後にある、見えない領域をすべてカリングできる方法を考え出すことはできますか?
graphics - オブジェクトのカリングを無効にする
この質問は実際にはUnity3Dに関するものですが、より一般的な質問になることもあるため、この質問を可能な限り一般的にします。
のシーンがありcamera (near = 0.3, far = 1000, fov = 60)
、半径10000単位のスカイドームを描画したいとします。
私はドームの中にいるので、オブジェクトはカメラの錐台によってカリングされません。しかし、頂点は何らかのシェーダーによってカリングされ、最終結果は次のようになります。
今私の質問は:
オブジェクト全体が描画され、カメラの遠方平面によってクリップされないようにするために、エンジンのどの設定を変更できますか?
私が望まないのは:
- 錐台の精度が低下するため、遠方平面を10000に変更します
- 私のゲームは実際には非常に小規模なので、ニアプレーンを変更します
- この設定は非常にリアルに見えるため、ドームのスケールを変更します
2d - 2D オクルージョン カリングの最適なソリューション
私の 2D ゲームには、静的オブジェクトと動的オブジェクトがあります。複数のカメラが存在する可能性があります。私の問題:現在のカメラのビュー四角形と交差するオブジェクトを決定します。
現在、私はすべての既存のオブジェクトを反復処理し (動的か静的かは気にしません)、それらのカメラ ビュー rect で AABB チェックを実行します。これは、非常に動的なオブジェクトには受け入れられるようですが、数万のオブジェクトが存在する可能性がある静的オブジェクト (シーン全体に散在する静的レベルのジオメトリ) には受け入れられないようです。
私の問題を解決できる複数のデータ構造を調べました。
- 四分木
これは私が最初に検討したことでしたが、問題はシーンが固定サイズになることです。(静的オブジェクトには使用できますが、動的オブジェクトには使用できません)
- 動的 AABB ツリー
良さそうに見えますが、リバランスのオーバーヘッドが多くの動的オブジェクトにとって大きすぎるようです。
- 空間ハッシュ
ここでの主な問題は、カメラでズームアウトすると、ほとんど存在しない膨大な数の空間ハッシュ バケットをクエリする必要があり、パフォーマンスが低下することでした。
一般に、この問題を適切に解決するための私の基準は次のとおりです。
動的サイズ: ソリューションによってシーン サイズが制限されたり、サイズ変更のために大量の再計算が必要になったりしてはなりません。
良好なクエリ パフォーマンス (カメラの場合)
非常に動的なオブジェクトの適切なサポート: 位置が絶えず変化するオブジェクトを処理するために必要な計算は適切である必要があります。
ゲーム内で一度に正常に動作する動的オブジェクトの最大数は、おそらく 5000 です。すべてのオブジェクトがフレームごとに位置を変えることを考慮してください。フレームごとにオブジェクトの AABB をカメラと比較するよりも、頻繁な挿入と削除を考慮して、高速化できるデータ構造さえありますか?
flash - Molehillによる裏面カリング
新しいMolehillAPIでFlash11RC1を使用して、背面カリングを有効にします。ベータ版のドキュメントはかなりあいまいですが、この例は、Molehillが正面を向いた三角形を反時計回りに巻くことを望んでいることを示しています。これはかなり正常なことです。
しかし、ポリゴンが反時計回りに曲がると、まったく逆の動作になります。つまり、Molehillは、正面を向いた三角形が時計回りに曲がることを期待しているようです。ドキュメントには、どの巻線が正しいかが明示的に記載されていないため、困惑しています。
Molehillが実際に望んでいることを100%理解する直前に見えるまで、すべての三角形をひっくり返したくありません。これは、根本的な誤解を隠す可能性が高いためです。
私は単純なパースペクティブプロジェクションを使用しています(以下の.transpose()に関する注記:copyRawDataFromは列優先のデータを期待し、コードでの表示方法が嫌いだったため、行優先で入力し、後で行列を転置することにしました-だから私を訴えなさい:P):
手がかりはありますか?