【问题标题】:Voxels... Honestly, I need to know where to begin体素...老实说,我需要知道从哪里开始
【发布时间】:2011-11-30 07:41:28
【问题描述】:

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

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

谷歌搜索没有显示任何教程,我在任何地方都找不到关于它的书,我什至找不到与体素真正的基本概念有关的任何内容。

我对 C++ 库非常了解,并且具备 OpenGL 的基础知识。

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

编辑:我想我只是对如何实现它们感到困惑?抱歉让我感到痛苦,只是我真的找不到任何可以轻松关联的东西……我想我在想象一个体素与一个向量相关,你可以在其中实际存储数据。

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

【问题讨论】:

  • 你想用体素做什么?冒着陈述显而易见的风险......en.wikipedia.org/wiki/Voxel
  • 除了 holtavolt 的回答之外,“点云”、“行进立方体”和“稀疏体素八叉树”都是要寻找的关键字,可能会让您更接近可实现的东西而不是抽象概念.
  • 如果您了解如何将 2d 点(像素)放在 2d 数组中以形成 2d 形状,那么绝对没有什么可以解释如何将 3d 点(体素)放在 3d 数组中以形成 3d 形状。真的是一回事。

标签: c++ opengl gpu raycasting voxels


【解决方案1】:

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

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

立方体不是体素的要求。它们可以是金字塔或任何其他可以组合在一起的形状。

【讨论】:

  • 编辑:我想我只是对如何实现它们感到困惑?抱歉让我感到痛苦,只是我真的找不到任何可以轻松关联的东西……我想我在想象一个体素与一个向量相关,你可以在其中实际存储数据。体素可以表示为任何 3D 形状吗?例如,假设我希望形状是圆柱体。这可能吗,还是他们必须像立方体一样链接?
  • @Fiattarone:Minetest-c55 项目是 GPL 许可的,并且有完整的源代码。我认为它很容易阅读。
  • 将它们视为统一 3D 网格中的标量数据样本的一种方式。您可以想象将这些单独的样本中的每一个渲染为立方体、点、球体、金字塔等 - 如果您试图实现绘制完整表面的效果,您将希望让它们与相邻的样本“链接”。
  • 哇,我完全跳过了源代码部分。谢谢!我认为现在一切顺利。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    包含体素的体积图像的两个自然示例是 3D 医学图像,例如 CT、MRI、3D 超声等。

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        寻找voxlap 或试试http://www.html5code.com/gallery/voxel-rain/ 或编写您自己的代码。是的,体素可以简化为 3d 坐标(可以通过它在文件结构中的位置来暗示)和可以是任何东西(立方体、球体、图片、颜色......)的图形表示。就像像素是带有颜色索引的二维坐标一样。

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

        祝你好运

        【讨论】:

          【解决方案6】:

          Let's Make a Voxel Engine on Google Sites 可能有助于开始创建基于体素的引擎:

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

          除此之外,Youtube 上的结果演示也值得一试:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-02-12
            • 1970-01-01
            • 1970-01-01
            • 2011-06-24
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多