Общая идея называется уровень детализации рендеринга и представляет собой целую науку сама по себе.
Для вашего домена я бы рекомендовал два шага:
1) Уменьшите количество ячеек путем усреднения (среднеарифметическая функция) их в кубах разных размеров и кэширования этих кубов (как на диске, так и в ОЗУ). «Разное» означает здесь, что у вас есть одинаковые данные в кубах разных размеров, например, крупнозернистые кубики размером 10000x10000x10000 и более мелкие кубики размером 100x100x100 ячеек, обеспечивающие несколько уровней детализации. Вы должны организовать их в иерархическую структуру (более крупные, содержащие несколько более мелких), и для этого я бы порекомендовал Octree :
http://en.wikipedia.org/wiki/Octree
2) Второй шаг - визуализация частей этого октри:
Для этого используйте расстояние вашей камеры-точки до субкубов. Пройдите кубы и решите либо войти в подкуб, либо визуализировать больший куб, используя эту функцию расстояния и эвристически выбранные или угаданные пороговые значения.
(2) может быть дополнительно оптимизировано, но это необязательно: Чтобы оптимизировать этот рендеринг, организуйте куб для рендеринга в слои: направление слоев (будь то в x, y или z-слайсах) зависит на вашей камере - точка обзора, к которой она должна быть почти перпендикулярна. Затем рендеринг каждого среза в текстуру и вуаля, вам нужно всего лишь отрисовать один квад с этой текстурой для каждого среза, 1000 квадов не представляют проблемы для визуализации.