【问题标题】:How a voxel data / openvdb structure works ?体素数据/openvdb 结构如何工作?
【发布时间】:2013-07-13 05:56:27
【问题描述】:

因为我不想重新发明轮子,所以我正在寻找一个好的数据结构,它可以帮助我为 3D 渲染引擎提供一个真正基本的 3D 编辑器,我基本上是在寻找一种能够存储必要的数据,在我的情况下仅限于:

  • 几何
  • 局部和全局坐标或也称为变换
  • 材质或指向保存此材质真实定义的另一个结构的指针

现在这是我第一个使用 3D 渲染的方法,但我对光栅化器的工作原理、GPU 如何处理三角形、点和线以生成图像有很好的基础,我的问题是现在我不了解这个新的“基于体素”的数据结构是什么,即使这个 OpenVDB 是否适合我。

我认为这个引擎的大部分“输入”将来自类似 obj 的文件,所以基本上是三角形和点,但我仍然不想错过最新最好的,所以我问,真正的区别是什么在 OpenVDB 和包含三角网格的通用数据结构之间? OpenVDB 可能的实际应用有哪些?

【问题讨论】:

    标签: c++ voxel


    【解决方案1】:

    如果您了解 2D 中矢量和光栅艺术之间的区别,那就类似于三角形和体素之间的区别。矢量艺术使用线段和几何来表示形状,就像三角形表示 3D 中的网格一样。或者,图像使用排列在网格上的像素来表示形状,就像体素用于表示 3D 体积一样。例如,球体可以表示为网格、三角形……或一组开/关体素在 3D 网格上。3D 纹理现在可以存储在 GPU 上,从而实现高效的光线投射、遍历等。它们对于烟雾和流体特别有用。

    OpenVDB 基于 CPU,但扩展了单个 3D 体积,使其具有多分辨率。许多较小的 NxNxN 卷组合成一棵树,形成一个大得多的卷。

    您使用的表示形式很大程度上取决于您想要执行的 3D 编辑操作类型。你想建造树木和有机物吗?您想编辑和建模流体吗?您想为角色建模吗?.. 对于一个非常基本的,即介绍性 3D 编辑器,我建议使用三角形和网格,因为它们无处不在,以及 GPU 管道的设计方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 1970-01-01
      • 1970-01-01
      • 2016-05-04
      相关资源
      最近更新 更多