1

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

  • 几何学
  • 局部和全局坐标或也称为变换
  • 材料或指向另一个结构的指针,该结构包含该材料的真实定义

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

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

4

1 回答 1

6

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

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

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

于 2013-09-18T18:44:34.567 回答