Voxels... Честно говоря, мне нужно знать, с чего начать

Хорошо, я понимаю, что воксели - это просто объемная версия пикселя.

После этого я понятия не имею, что вообще искать.

Googling не показывает никаких учебных пособий, я нигде не могу найти книгу по ней, я не могу найти ничего, даже имеющего отношение к основному представлению о том, что на самом деле является вокселем.

Я знаю большую часть библиотеки C++, и у меня есть основы OpenGL.

Может ли кто-нибудь указать мне правильное направление?

РЕДАКТИРОВАТЬ: я думаю, я просто запутался, как их реализовать? Извините за боль, просто я не могу найти ничего, с чем я могу легко соотнести... Я думаю, я представлял, что воксел имеет отношение к вектору, в котором вы можете хранить данные.

Воксел может быть представлен в ЛЮБОЙ 3D-форме? Например, скажем, я хотел, чтобы форма была цилиндрической. Это возможно, или они должны соединяться как кубы?

6 ответов

Решение

Minecraft - хороший пример использования вокселей. В Minecraft каждый воксель - это куб.

Чтобы увидеть пример C++, вы можете взглянуть на Minecraft-клон Minetest-c55. Это открытый исходный код, поэтому вы можете прочитать весь исходный код, чтобы увидеть, как это делается.

Быть кубиками - это не требование вокселей. Это могут быть пирамиды или любая другая форма, которая может совмещаться.

Я подозреваю, что вы ищете информацию о методах объемного рендеринга (так как вы упоминаете вокселы и OpenGL). Вы можете найти множество простого кода для рендеринга в C++ и более продвинутых шейдеров OpenGL, а также немного поискав по этому термину.

Давайте создадим воксельный движок на Сайтах Google, который может помочь в создании воксельного движка:

https://sites.google.com/site/letsmakeavoxelengine/

Кроме того, на Youtube есть презентации результатов, которые стоит проверить:

http://www.youtube.com/watch?v=nH_bHqury9Q&list=PL3899B2CEE4CD4687

В простейшей возможной реализации пространство вокселей - это просто трехмерный массив. Для твердых тел вы можете использовать один бит на воксель: 1 == заполнено и 0 == пусто. Вы используете неявные формулы для создания фигур, например сфера - это все воксели в радиусе от центрального вокселя.

Вокселы не очень совместимы с 3D-рендерингом на основе полигонов, но они широко используются в анализе изображений, медицинской визуализации, компьютерном зрении...

Поищите voxlap или попробуйте этот http://www.html5code.com/gallery/voxel-rain/ или напишите свой собственный код. Да, воксел может быть уменьшен до трехмерной координаты (что может быть обусловлено его положением в файловой структуре) и графическому представлению, которое может быть любым (куб, сфера, изображение, цвет...). Так же, как пиксель - это 2D координата с индексом цвета.

Вам нужно только разобрать ваш файл и визуализировать соответствующие воксели. К сожалению, не существует "правильного" формата файла, хотя форматы файлов voxlaps кажутся довольно аккуратными.

удачи

Обычно воксел - это позиция в некотором трехмерном пространстве, которая имеет объем (аналогична области, содержащейся в пикселе).

Так же, как в изображении, где пиксель содержит некоторое скалярное значение (в градациях серого) или вектор значений (как в цветном изображении, где вектор представляет собой либо красный, зеленый и синий компоненты, либо компоненты оттенка, насыщенности и значения), Записи для вокселя могут иметь некоторый масштаб или вектор значений.

Пару естественных примеров объемных изображений, содержащих воксели, представляют собой трехмерные медицинские изображения, такие как КТ, МРТ, 3D-ультразвук и т. Д.

Математически говоря, трехмерное изображение - это функция от некоторого воксельного пространства до некоторого набора чисел.

Другие вопросы по тегам