私のAndroidアプリケーションでは、GLSurfaceViewを使用して、ボックスオブジェクトのように3Dオブジェクトを描画しています。私はOpenGL ES apisを使ってこのオブジェクトを翻訳することによってこのオブジェクトをアニメーション化します。アニメーション中のある時点で、オブジェクトは可視のビューポートウィンドウから消えてしまいます。この時点で、このオブジェクトを描画されている他のオブジェクトのコレクションから削除する必要があります。オブジェクトがビューからなくなったことをどのように検出できますか?短いコードのサンプルをいただければ幸いです。OpenGL ESでオブジェクトが可視ウィンドウから移動したかどうかを検出する方法は?
答えて
Here is a frustum class for android、hereからのコードのポート。これにより、OpenGLから錐台パラメータを抽出し、ビューボリュームに含めるためのさまざまなジオメトリプリミティブ(点、球、軸に沿った立方体)をテストできます。外を見るために
2つのこと:
- update()メソッド内のコードを取り扱う-あるべき冗長エラー。この話については、hereを参照してください。それはheisenbugのように見えます。
- extractFromOGL()はglGetFloatを使用します。このメソッドはPixelFlingerソフトウェアレンダラーでは実装されていません。実際にローエンドのデバイスをターゲットにしている場合や、エミュレータを使用している場合は、自分で投影とモデルビューの行列を計算し、update()を手動で呼び出す必要があります。
お探しのものはviewing frustum cullingとなります。
視錐台は、仮想カメラの 見える体積の幾何学 表現です。当然、このボリューム外の オブジェクトは最終イメージに表示されないため、 は破棄されます。しばしば、オブジェクトは、視錐台の境界にある にある。 これらのオブジェクトは、この境界に沿って のクリッピングと呼ばれる処理で切り取られ、 は、切り取る場所がないため、 が破棄されます。トピックの
いくつかのチュートリアル:
http://www.lighthouse3d.com/opengl/viewfrustum/
http://www.crownandcutlass.com/features/technicaldetails/frustum.html
オブジェクトジオメトリのようなものであるOpenGL ES Apiを探していますが、オブジェクトがビューポートウィンドウ外にあるかどうかをテストしてテスト結果を返します。 – ace
OpenGL ESのAPIはありません。私が上で指摘したように、あなたは自分自身の錐台の淘汰を実装する必要があります。ありがとう。 –
- 1. OpenGl ES 2.0が使用可能かどうかを検出する
- 2. 移動オブジェクトOpengl Es 2.0
- 3. OpenGL ES 2からOpenGLへの移植
- 4. iPhone OpenGL ES:箇条書きを発射し、オブジェクトにヒットしたかどうかを検出する
- 5. (iOS)OpenGL ES(2.0)アプリケーション、Zでオブジェクトを移動するには?
- 6. のOpenGL ESを可視化する方法2.0フラグメントシェーダ
- 7. リアクションナビゲーション - 遷移が完了したかどうかを検出する方法
- 8. オブジェクトが移動を停止したかどうかを判断する方法
- 9. glDrawTexfOESを使用したAndroid OpenGL ESズームが可能ですか?
- 10. as3 - タイマーを使用してオブジェクトが別のオブジェクトに移動したかどうかを検出します。
- 11. 行列がOpenGLでオブジェクトをミラーリングするかどうかの検出
- 12. QMockWidgetからQDockWidgetを移動したときを検出する方法は?
- 13. iOS - UITableViewCellが可視ビューから移動されていることを検出していますか?
- 14. 最初の要素がjQueryで可視かどうかを検出します
- 15. ドッカーコンテナがクラッシュしたかどうかを検出する方法
- 16. のOpenGL ES 2.0:直交から視点へ(カードフリップ効果)が
- 17. 加速度計でOpenGL ESオブジェクトを移動
- 18. シェーダコード内でOpenGLバージョンがOpenGL ESであるかどうかを知ることはできますか?
- 19. ウィンドウの移動が停止したことを検出しますか?
- 20. ウィンドウをあるディスプレイから別のディスプレイに移動することを検出しました
- 21. どのボタンがウィンドウ内のメッセージボックスから押されたかを検出する方法はありますか?
- 22. OpenGL-ESで移植する移植
- 23. ウィンドウが子ウィンドウか親ウィンドウかどうかを知る方法?
- 24. 現在のウィンドウが別のウィンドウの背後にあるかどうかをJavascriptで検出する方法
- 25. OpenGL ES 1.0コードをAndroidでOpenGL Es 2.0に変換するにはどうすればいいですか?
- 26. メディアプレーヤーが動作しているかどうかを検出する方法
- 27. 可視ウィンドウまたはビューからビデオを作成する
- 28. htmlがレンダリングを完了したかどうかを検出する方法は?
- 29. Android OpenGL ESに触れたオブジェクトを特定する方法
- 30. iPhoneでOpenGL ESでイメージをコンボリューションする:可能ですか?
ありがとう。最後に、modelview行列をよく理解した後に問題を解決しました。 – ace