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-ультразвук и т. Д.
Математически говоря, трехмерное изображение - это функция от некоторого воксельного пространства до некоторого набора чисел.