一般的な考え方は詳細レベルレンダリングと呼ばれ、それ自体が科学全体です。
あなたのドメインについては、2つのステップをお勧めします:
1)異なるサイズのキューブでセルを平均化(算術平均関数)し、それらのキューブを(ディスクとRAMに)キャッシュすることにより、セルの数を減らします。ここで「異なる」とは、複数のサイズのキューブに同じデータがあることを意味します。たとえば、10000x10000x10000の粗いキューブと、100x100x100セルの細かいキューブは、複数の詳細レベルになります。これらを階層構造(大きなものには複数の小さなものが含まれています)に編成する必要があります。このために、Octreeをお勧めします:http :
//en.wikipedia.org/wiki/Octree
2)2番目のステップは、このOctreeの一部を実際にレンダリングすることです。これを行うには、カメラポイントからサブキューブまでの距離を使用します。キューブを調べて、サブキューブに入るか、この距離関数とヒューリスティックに選択または推測されたしきい値を使用して、より大きなキューブをレンダリングするかを決定します。
(2)さらに最適化できますが、これはオプションです。このレンダリングを最適化するには、レンダリングされる立方体をレイヤーに編成します。レイヤーの方向(x、y、zスライスのいずれか)はカメラによって異なります。 -垂直に近いはずの視点。次に、各スライスをテクスチャにレンダリングします。これで、スライスごとにそのテクスチャを使用して単一のクワッドをレンダリングするだけで済みます。1000個のクワッドをレンダリングしても問題ありません。