私は単純な作業をしています:それぞれx、y、z、幅、高さ、回転、および色を持つ10,000個の3Dボックスがあります。私はそれらを3D空間に投げ込み、視覚化し、マウスを使って飛行させたいと思っています。これをまとめる簡単な方法はありますか?3Dで10,000個の陰影付きボックスを視覚化する最も簡単な方法
答えて
最近使用してこれを行う1つの簡単な方法は、(V 3.2)OpenGLは次のようになります。
- 、8つの頂点(立方体の角)との配列を作る彼らは単位立方体上の座標与える、つまり、 (-1、-1、-1)から(1、1、1)
- 頂点バッファ
- にあなたの配列を取得するためにvertex buffer object
- 使用
glBufferData
を作成し、頂点バッファ - が作成バインド設定し、バインドする(テクスチャを使用しない場合はスキップします)
gl_InstanceID
の値に従って、「一部のソース」(以下を参照)から読み取られる変換マトリックスを適用する頂点シェーダを作成します。
- は、シェーダのコンパイルプログラムをリンク、インスタンスがトランスフォームデータを通信するために使用するものの方法に応じて、すべてのキューブインスタンス
- のために(下記参照)のデータを変換するセットアッププログラム
- を結合し、1つのすべてを引き出すことができますバッチを使用するか、複数のバッチを使用する。
- コール
glDrawElementsInstanced
N番号oなど、多くの要素にcount
設定したF回は、あなたがいくつかのバッチを使用する場合、1つのバッチ - に収まる頂点シェーダは、通常のMVPのものに加えて、変換
- uniform buffer objects、あなたはそれぞれ、最低保証 4096の値が設定されています
は、あなたがそれらの中にある、いくつかの選択肢を持って、毎キューブ変換データを通信するために、 256人の4x4の行列が、あなたは再びあなたが最低保証 65536の値は、それぞれ4096の4x4の行列を持って、実際の値
- texture buffer objectsを照会することができます(ただし、通常ははるかに大きな何かが、128,000,000の値を行うことができ、私の高齢者のカードは、あなたが照会します実際の値)各バッチについて
- 手動で設定制服は、これは任意の「バッファ」のものを必要としませんが、多少遅く
代わりに、おそらくです:さえないハードウェア上で動作します使用pseudo-instancingインスタンス化を直接サポートしません。それはエレガントではなく、非常にわずかに遅いですが、それは仕事をします。
ああ、それは簡単ではないようです。 – vy32
さて、あなたは 'glRotate'を使って全てを個別に変換して描画することができます。 'glTranslate'、' glDrawElements'です。それは簡単ですが、10,000以上のインスタンスにはうまく適用されません。擬似インスタンス化(リンクを読む)は比較的簡単です。 – Damon
私はやっているよりもずっと多くのコードのようです。私は今Panda3Dを見ていて、10,000個の動く球を表示するためにDisco-Lightsデモを修正しました。私は、ロードされる球を使うのではなく、自分の箱を作る方法を理解する必要があります。だから私はマニュアルを読む必要があると思う。それは今夜のプロジェクトです。私が完了したらコードを掲載します。 – vy32
- 1. 3D OpenGL透視投影を設定する最も簡単な方法
- 2. 簡単な3Dアイオスアプリを作成する最も簡単な方法
- 3. 使いやすいグラフィックスを視覚化する最も簡単な方法。どの言語とlib?
- 4. PHPで日付をインクリメントする最も簡単な方法は?
- 5. 最も簡単な方法
- 6. Grails:GORMでhashmapを永続化する最も簡単な方法
- 7. 3D視覚化回転キューブ
- 8. python 3D視覚化とグラフィックス
- 9. ユーザーロケールの選択をHTMLで覚えるのが最も簡単な方法
- 10. Javaのテキストファイルを暗号化する最も簡単な方法
- 11. アイコン付きのアンドロイドでウェブページを起動する最も簡単な方法
- 12. ビデオストリームで2Dシンボルを3Dに変換する最も簡単な方法
- 13. YIIアプリケーションを高速化する最も簡単な方法は?
- 14. C#System.Typeをサブクラス化する最も簡単な方法
- 15. C++での3D視覚化リアルタイム
- 16. VTK/paraviewによる3D視覚化
- 17. 最も簡単な一連のjavascript/jQueryイベントの最新のものを守る最も簡単な方法
- 18. 符号付き数値をシフトダウンする最も簡単な方法
- 19. Rを使用した3D視覚化
- 20. Pythonで簡単なGUIを開発する最も簡単な方法
- 21. 画像の陰影を可視化する - matlab
- 22. このheirarchicalテーブルをフラットテーブルに非正規化する最も簡単で簡単な方法は何ですか?
- 23. 最も簡単な方法は、垂直
- 24. 最も簡単な方法realloc
- 25. 作成と最も簡単な方法
- 26. Qtで多くのオブジェクトをアニメーション化する最も簡単な方法
- 27. 行をアニメーション化する最も簡単な方法は何ですか?
- 28. Python:ネットワークの最小スパニングツリーを視覚化する方法は?
- 29. アルゴリズムの出力を視覚化するために線分を描く最も簡単な方法は何ですか?
- 30. プログラミングの課題:このグリッドをコード化する最も簡単な方法は?
使用している言語とグラフィックライブラリがありますか?または、どの言語とグラフィックスライブラリを使用するのですか? – jball
私には制限がありません!私は何かを使うことができます。私は提案を探しています。 – vy32
3Dゲームエンジンを比較したこの良いリストが見つかりました:http://en.wikibooks.org/wiki/Python_Programming/Game_Programming_in_Python – vy32