2015-03-27 2 views
0

У меня есть функция для создания 3d-матрицы с серыми значениями (значения char от 0 до 255). Теперь я хочу сгенерировать 3d-объект из этой матрицы, например. Я хочу показать эти значения как 3d-объект (в cpp). Каков наилучший способ сделать эту платформу независимой и как можно быстрее?
Я уже немного читал об использовании OGL, но затем я запускаю следующую проблему: матрица может содержать до $ 4 \ cdot10^9 $ значений. Когда я хочу загрузить полную матрицу в ОЗУ, она рухнет. Таким образом, прямой вывод из матрицы невозможно. Кроме того, я нашел функции для рисования 2d-изображений в OGL. Есть ли способ рисовать 3d-пиксели в OGL? Или я должен использовать другой подход?
Мне не нужна движущаяся функциональность (по крайней мере, на данный момент), я просто хочу отображать данные.Создать объем из 3d-матрицы в cpp

Редактировать 2: Для сужения вопроса в: Есть ли способ рисовать пиксели в 3d-пространстве с помощью OGL, взятого из 3d-матрицы? Я не нашел подходящей функции, я нашел только 2d-функции.

+0

Да, ИМХО слишком большой вопрос – Alnitak

+0

Вопрос рефакторинга, я надеюсь, что сейчас лучше. –

+0

Одно предложение «Volume Rendering»: http://en.wikipedia.org/wiki/Volume_ray_casting –

ответ

0

То, что вы хотите сделать, называется объемным рендерингом. Существуют различные методы для его достижения, и в конечном итоге это зависит от того, как вы хотите, чтобы он выглядел.

Существует также простой способ сделать это. Вы не можете просто рисовать 3d-пиксели. Вы можете рисовать с помощью GL_POINTS и каждый преобразованный точечный растровый до 1 пикселя, но это, вероятно, совершенно неудовлетворительно для вас, потому что он будет рисовать только некоторые пиксели на экране (вы не увидите ничего на больших разрешениях).

Общее решение - просто визуализировать куб, используя обычные треугольники, для каждой точки. Сортируйте его назад, если вам нужно альфа-смешивание. Если вам нужен более конкретный ответ, вам нужно будет сузить свой запрос. Трассировка лучей также имеет достоинства в объемном рендеринге. Подробнее о volume rendering.

Смежные вопросы