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

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

opengl-es - OpenGL : 大きなシーンと小さな値による線のジッタリング

私は現在、3D 太陽系を描いており、惑星の軌道の経路を描こうとしています。計算されたデータは 3D 空間では正しいのですが、冥王星に向かうと、カメラが完全に停止するまで軌道線があちこちで揺れます。これはこの特定の惑星に固有のものではないと思いますが、カメラが移動しなければならない距離を考えると、この範囲ではより目立つと思います.

錐台に関係があると思われますが、各コンポーネントに値を差し込んでいますが、解決策が見つからないようです。何かを確認するには、惑星と近くの軌道点には非常に小さい数値 (E-5 等級) を使用する必要がありますが、それ以外の領域には最大で E+2 等級を使用する必要があります (別の錐台で 2 回描画する必要があるかもしれません)。

どんな助けでも大歓迎です...

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

3d - バウンディング ボックスが非常に大きい場合のフラスタム カリング

見る

バウンディング ボックスの 8 つの頂点すべてが錐台の外側にある場合、レンダリングされません。しかし、上記のように sth が発生した場合。そのオブジェクトは表示リストにあるはずです。何か案が?

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

graphics - 2D グラフィックスでは、ターゲットにレンダリングしてから画面にレンダリングするパフォーマンスのオーバーヘッドはどのくらいですか?

画面分割ゲームを作っています。分割画面のそれぞれをレンダリングすると、画面の境界の外側にオーバーラップが発生します。

画面は 10x10 タイルの大きさになります。分割画面ビューが中央に配置されていると仮定して、タイルの半分を右に移動すると、画面に表示されるタイルの半分が左端と右端に表示されます。

ただし、タイルの半分をレンダリングすることはできないため、タイル全体がレンダリングされます。余分なタイルをレンダリングする必要があります (実際には、簡単にするために 12 をレンダリングします)。これにより、移動時に端に黒い隙間ができなくなります。

分割画面が画面のフル サイズである場合、このオーバーラップは問題になりません。ただし、2 つの分割画面を並べてレンダリングすると、最後に描画された方が、表示されているハーフ タイルの残りの半分など、線の外側に出るビットがある場合、他方にオーバーラップします。

解決策は、各分割画面をテクスチャにレンダリングし、テクスチャを画面に描画して、境界に重なるビットを切り取ることだと考えています。

エフェクトの変換なしで 1 つのテクスチャを画面にレンダリングするため、これに関連する多くのパフォーマンス オーバーヘッドが発生する理由がわかりません。しかし、私が間違っているのではないかと思っています。おそらく、これによりゲームの速度が大幅に低下するのではないでしょうか。

より良い解決策はありますか、それともこれで問題ありませんか?

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

c# - XNA-カリングパフォーマンスの問題

私のタイルを描画するこの方法は非常に遅いようです。何が間違っているのか正確にはわかりません。私のカリング方法が機能しておらず、画面外に何かを描画していると信じていますが、完全にはわかりません。ここにあります:

GetTileSetTypesは、DirtBlock_North、DirtBlock_Centerなどのさまざまなテクスチャについて、周囲のタイルを取得する関数です。

タイルコンテンツは、私のブロックテクスチャを含む単なるクラスです。

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

opengl - VBO を使用した OpenGL での単純な 2D カリング

パフォーマンス上の理由から、即時モードの代わりに VBO を使用することを検討しています。スプライトで満たされた 2D 正投影シーンを作成しています。画面外のスプライトを描きたくありません。これは、画面サイズとカメラの位置に対してそれらの位置を確認することによって行います。

即時モードでは、これは簡単です。スプライトごとに draw メソッドがあります。VBO を使用すると、これは自明ではないようです。一度に VBO のセクション全体をレンダリングします。画面外にあるレンダリング スプライトから選択する (私が考えることができる) 方法はありません。

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

html5-canvas - 表面法線を使用した正射投影 3D 背面カリング

私は HTML5 キャンバスの 3D レンダラーを作成しています。SO の助けを借りずにかなり進んだと思いますが、ある種のショーストッパーに遭遇しました。いくつかの法線計算を利用して、立方体に背面カリングを実装しようとしています。また、これを WebGL としてタグ付けしました。これは、私のユース ケースと 3D アクセラレーション ユース ケースの両方に適用できる一般的な質問であるためです。

いずれにせよ、立方体を回転させていると、間違った面が隠されていることがわかりました。例:

立方体の裏面カリングの問題

次の頂点を使用しています: https://developer.mozilla.org/en/WebGL/Creating_3D_objects_using_WebGL#Define_the_positions_of_the_cube%27s_vertices

私が使用している一般的な手順は次のとおりです。

  1. 立方体の頂点を変換するための変換行列を作成します

  2. 各面、および各面の各点について、これらを vec3 に変換し、ステップ 1 で作成した行列を掛けます。

  3. 次に、ニューウェルの方法を使用して顔の表面法線を取得し、その法線と作成された vec3 ([-1, 1, 1] など) から内積を取得します。ここに入れます。これにカメラの位置を使用する人もいますが...

  4. カメラ マトリックスを使用する通常の手順をスキップして、結果のベクトルから x 値と y 値を取得して、ライン レンダラーとフェース レンダラーに送信しますが、内積が 0 より大きい場合のみです。引っ張る、本当に。

私は2つのことを疑問に思っています。ステップ 3 の手順が正しい場合 (そうではない可能性が高い)、面に描画している点の順序が正しくない場合 (可能性が非常に高い)。後者の場合、問題を視覚化する方法がよくわかりません。法線は関係ない、線が描かれている方向だと人々が言うのを見たことがありますが... それについて頭を包むのは難しいです, またはそれが私の問題の原因です.

おそらく問題ではありませんが、私が使用しているマトリックス ライブラリは gl-matrix です。

https://github.com/toji/gl-matrix

また、私が使用しているオープン ソース コードベースの特定のファイルは次のとおりです。

http://code.google.com/p/nanoblok/source/browse/nb11/app/render.js

前もって感謝します!

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

view - 3D ビュー フラスタム カリング、レイ キャスティング

ビューフラスタムカリングの実装方法をよりよく理解するには、ビューフラスタムカリングに関する追加の理論が必要です。どのオブジェクトが前にあるかを把握するためにレイキャスティングが関与していることを理解しています。したがって、どのオブジェクトをレンダリングしないかを判断します。

CPU使用率が気になります。私が理解していることから、カメラの幅×高さでレイをキャストする必要があり、カメラが見える距離に応じてレイの量を増やす必要があります。さらに、これにシーン内のオブジェクトの量を掛けて、どれがレイに最も近いかを確認する必要があります。

この概念に対する私の理解は正確ですか? これをより効率的に行うにはどうすればよいですか?

編集:

目標は、oct-tree を使用して世界を細分化できるある種のボクセル エンジンを実現することです。数十万の立方体で構成されている可能性があります。

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

unity3d - Unity Frustum カリングの問題

オフセンター プロジェクションを利用したゲームを作成しています。私は自分のゲームをクラスターでレンダリングされる CAVE にセットアップしました。8 台以上の PC があり、これらの PC のうち 4 台がそれぞれの目に使用されています (これにより立体効果が生まれます)。CAVE での位置合わせを支援するために、オフセンター プロジェクション クラスを実装しました。

このクラスは、カメラの左上隅、左下隅、右下隅が何であるかを単純に伝えます。ここから、プレイヤーの世界の左右を示す新しい射影行列を作成します。ただし、Unity のエディター内では、カメラはまだ前方を向いているため、Unity 内のカリングでは、左右の画面に表示される画像の半分がレンダリングされません。

Unityでカリングをオフにする方法、または射影行列の問題を修正する方法を見つける方法を知っている人はいますか?

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

math - ビュー錐台面の抽出(Gribb&Hartmann法)

私はしばらくの間、錐台面を抽出するグリブ/ハートマン法に取り組んできましたが、ほとんど成功していません。シーンをカリングするためのカメラビュー錐台を構築したいと思います。

私は右手の座標系で列メジャー行列を使用しています。(OpenGLスタイル-私はC#とPlaystation Mobileを使用していますが、計算は同じである必要があります)

飛行機をWorld-Spaceに配置したいので、View-Projection Matrix(つまり、projectionMatrix * viewMatrix)から錐台を構築します。ビューマトリックスは、カメラのワールドトランスフォームの逆です。

問題は; 何を微調整しても、正しい錐台が得られないようです。明らかな何かが欠けているのではないかと思います。

z軸を見下ろしながらカメラを左または右に「ストローフィング」すると、飛行機の法線が変化し、常にシーンの原点を指すようになります。これにより、飛行機は世界空間にないように見えます。 ..。。

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

directx - D3DX9 カスタム メッシュがレンダリング中にそれ自体とオーバーラップする

DX でモデルを作成するために読み取っているカスタム モデル ファイル形式があります。私が使う

メッシュを作成してから、インデックス バッファ、頂点バッファ、属性バッファを順番にロック、塗りつぶし、ロック解除します。

私の問題は、モデルがそれ自体と重複していることです:

http://imageshack.us/a/img210/2732/20121018181019896.png

CCW 背面カリングを有効にしています。

Zバッファも有効にしていますが、それはメッシュとそれ自体の間ではなく、2つのメッシュの間だけであると確信しています。

Google で解決策を探すのに 1 日半を費やしましたが、何も見つかりませんでした。ヘルプやヘルプへのリンクは大歓迎です。