体素......老实说,我需要知道从哪里开始

时间:2011-10-04 00:12:46

标签: c++ opengl gpu raycasting voxels

好的,我知道体素基本上只是一个像素的体积版本。

在那之后,我不知道该找什么。

谷歌搜索没有显示任何教程,我无法在任何地方找到一本书,我甚至找不到任何关于体素真正是什么的基本理念

我对C ++库了解很多,并且掌握了OpenGL的基础知识。

有人能指出我正确的方向吗?

编辑:我想我对如何实施它们感到困惑?对不起是一种痛苦,只是因为我无法找到任何我可以轻易关联的内容......我想我想象的是一个体素与一个可以实际存储数据的向量相关。

体素可以表示为 ANY 3D形状?例如,假设我希望形状为圆柱形。这是可能的,还是他们必须像立方体一样链接?

6 个答案:

答案 0 :(得分:6)

Minecraft是使用体素的一个很好的例子。在Minecraft中,每个体素都是一个立方体。

要查看C ++示例,您可以查看Minecraft克隆Minetest-c55。这是开源的,因此您可以阅读所有源代码以了解其完成情况。

多维数据集不是体素的要求。它们可以是金字塔或任何其他可以组合在一起的形状。

答案 1 :(得分:5)

我怀疑您正在寻找有关Volume Rendering技术的信息(因为您提到了体素和OpenGL)。您可以在C ++中找到大量简单的渲染代码,以及更高级的OpenGL着色器以及对该术语的一点搜索。

答案 2 :(得分:3)

在最简单的可能实现中,体素空间只是一个三维数组。对于实体,您可以使用每个体素一位:1 ==填充,0 ==空。您使用隐式公式来制作形状,例如球体是距离中心体素半径范围内的所有体素。

体素与基于多边形的3d渲染并不完全兼容,但它们广泛用于图像分析,医学成像,计算机视觉......

答案 3 :(得分:3)

Google协作平台上制作体素引擎 可能有助于开始创建基于体素的引擎:

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

除此之外,还有关于 Youtube 值得检查的结果的演示文稿:

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

答案 4 :(得分:0)

通常,体素是某个3D空间中具有体积的位置(类似于像素所包含的区域。

就像在图像中一样,像素包含一些标量值(灰度)或值向量(如彩色图像中的矢量是红色,绿色和蓝色成分,或色调,饱和度和值组件)体素的条目可以有一些比例或值的向量。

包含体素的体积图像的几个自然例子是3D医学想象,如CT,MRI,3D超声等。

从数学上讲,3D图像是从某个体素空间到某组数字的函数。

答案 5 :(得分:0)

查找voxlap或尝试此http://www.html5code.com/gallery/voxel-rain/或编写自己的代码。是的,体素可以缩小为3d坐标(可以通过它在文件结构中的位置隐含)和图形表示,可以是任何东西(立方体,球体,图片,颜色......)。就像像素是带有颜色索引的2D坐标一样。

您只需要解析文件并渲染相应的体素。遗憾的是,虽然voxlaps文件格式看起来非常整洁,但没有“正确”的文件格式。

祝你好运