問題タブ [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.
sfml - 錐台カリングはデバッグでフレームレートを低下させますが、リリースでは改善します
私は SFML でタイルベースのゲームを作成しており、カメラのビューポートにあるタイルのみを描画するために単純なバウンディング ボックス フラスタム カリングを実装することにしました。フレームレートが 3 倍になったので、結果は成功でした。ただし、キャッシュがありました。デバッグでゲームを実行すると、代わりに実装されたフラスタム カリングによってフレームレートが低下します。デバッグでは 90 から 30 fps になり、リリースでは 100 から約 350 fps になりました。
カリングは、ビューポートの長方形と交差するかどうか、各タイルの長方形を単純にチェックします。もしそうなら、それは描かれます。ゲームは分割画面用にいくつかのビューをレンダリングし、コードは次のようになります。
....
....
四角形の交差呼び出しを削除すると、フレームレートは最大 90 fps に戻ります。なぜこれが起こっているのか、私は非常に混乱しています。
javascript - らせん内のモデルが円錐台の内側になるように、らせんの半径を計算します
いくつかの平面にテクスチャを表示するアプリを構築しています。ただし、錐台の幅とカメラの位置に基づいて、らせんの半径 (計算でらせんを作成するために使用します) を動的に計算したいと思います。
らせんは、画面の中心 x=0、y=0、z=0 に配置されます。
画面の向き (横/縦) を考慮してください。これまでのところ、これは私が持っているコードですが、左と右の平面がビューポート内にないため、何かが欠けているようです。
画面の端にある平面が内側にないのはなぜですか?
また、参考までに、ここのコードは次のとおりです。getAbsPointsDistance3D
アップデート
dist パラメータを減らしてみましたが、結果は一貫していません...
opengl - 角度 'シータ' を原点とする視錐台の 8 つの座標の値は?
ニア クリッピング プレーンは 'n' 単位の距離にあります。ファー クリッピング プレーンは、原点から 'f' 単位にあります。z 軸は画面の右を指し、y 軸は上を指し、x 軸は画面の外側を指します。アスペクト比を1と仮定します。
javascript - obj ファイルから 3d オブジェクトを読み込み、Three.Js を使用してカメラ内に収まるようにします。
THREE.OBJLoader を使用してオブジェクト ファイルを (動的に) ロードし、それらをシーン (またはキャンバス) の中央に配置して、オブジェクト全体がカメラに表示されるようにしようとしています。オブジェクトは動的なので、固定の高さや幅のデータはありません。
この点に到達するために私が言及したこと:
コード:
私が使用したデッドプール オブジェクトは、 http ://tf3dm.com/3d-model/deadpool-42722.html からのものです。正しい質問を読んでいるかどうかわかりません。誰かが私を正しい方向に向けることができれば、とてもうれしいです。前もって感謝します。
PS: 私は 3D 数学が苦手です。
編集:私はこれで与えられた解決策を試しました:カメラをオブジェクトに合わせる方法ですが、私の問題は解決していません。実際、オブジェクトを上下逆さまにしています。オブジェクトをカメラの中心に配置しようとしています。
編集 2: これを部分的に修正しました。これで、オブジェクトがカメラ錐台内にあり、完全に表示されます。今、私はそれを中心に置く方法を見つける必要があります. 以下のコード全体を変更しましたscene.add(object);
graphics - 球体/錐台オーバーラップ テストの選択
おそらく今考えているよりもずっと簡単なことを理解しようとしているので、誰かが私が以下に説明することを理解するのを手伝ってくれることを願っています.
球体が 3D の 6 つの錐台面 (左、右、下、上、遠近) の少なくとも 1 つより完全に後ろにある場合、球体は視錐台の外側にあることがわかります。これは、以下の例の中心 c2 を持つ円に当てはまり、完全に左平面の外側にあります。オーバーラップ テストは、球の中心座標を平面方程式に挿入して中心から平面までの距離を取得し、これを球の半径と比較することによって簡単に実行できます。
ただし、このアプローチを中心 c1 の球に使用すると、テストで球が右平面と遠平面の両方にあることがわかるため (上から見た場合)、偽陽性になります。解決策は、球の中心からそれに最も近い視錐台の隅までの距離を決定することにより、より正確なオーバーラップ テストを使用することです。この距離が半径よりも大きい場合、球は錐台の外側にあります。
私が理解できないのは、この 2 番目のアプローチを使用するとどうなるかということです。つまり、平面ではなくコーナーを見て、中心 c3 を持つ球のように位置します。このテストでは、球の中心から半径を引いた距離が 0 よりも大きく、表示ボリュームの外側にあることがわかりませんか?
したがって、正投影ビュー ボリュームの一連の規則、つまり 0 ≤ x ≤ 20、-5 ≤ 15、-5 ≤ z ≤ 18、および x、y、z 座標 + 球の半径が与えられ、決定するように指示された場合球がその内側にあるか外側にあるか。本当に正しい答えを得るには、どの方法を使用するかをどのように選択すればよいですか?
java - 錐台カリングの実装方法 (多くのブロックをレンダリングするとラグが発生します)
多くのブロックをレンダリングするゲームを作成しています。fps が大幅に低下し、すべてが遅れます。多くのオブジェクトが一度にレンダリングされるため、遅延が発生する理由はわかっていますが、錐台カリングまたは任意のタイプのカリング クラスを作成してゲームに実装する方法がわかりません。
注: VBO を使用しています。
私はネット上で見つけることができません。助けてください。
これが私のコードの一部です:
フラット クラス: ブロックをレンダリングする場所
クラスやプロジェクト全体などの詳細情報が必要な場合は、コメントして私に通知してください。
opengl - OpenGL パースペクティブ補正を設定するには?
私は、遺伝子組み換えされたハエに単純な画像が表示される実験セットアップを扱っています。画像は、そのフライに一定の距離を置いてスクリーンに投影されます。
今度は、遠近法補正を設定して、表示された画像、たとえば水平バーが、ハエの視点までの距離が長くなるほど広く見えるようにします (実験設定) 。コードは次のようになります。
値は数年前に誰かが入力したもので、もはや正確ではないことがわかりました。ただし、実験のセットアップでわかるように、ハエの視野が少し傾いているため、投影を適切に機能させるために入力または変更する値を混乱させます。
私はそれらの価値について考えました:
- fovy = a と c の間の角度
- 投影スクリーンの幅と高さを測定する
- しかし、zNear とは何ですか? フライから画面の上または下までの距離を測定する必要がありますか? 誰かが 0.1f に入った理由がわかりません。私には近すぎるように思えます。
- zFar の値を知るにはどうすればよいですか? フライまでの物体の最大距離ですか?
glPerspective に関する情報は、https ://www.ntu.edu.sg/home/ehchua/programming/opengl/CG_BasicsTheory.html から入手しました。3D OpenGL 透視投影を設定する最も簡単な方法 もチェックしましたが、この投稿はそうではありません。私の混乱の原因である私の実験装置を扱いません。
助けてくれてありがとう!