体素化多边形网格

时间:2019-02-04 03:46:51

标签: computational-geometry

我已经实现了Marching Cube和Marching Tetrahedron算法,以将体素网格转换为多边形网格。现在我有兴趣做相反的事情,采取多边形网格并将其近似于体素网格。

我目前正在制定自己的方法,并且好奇是否有人有任何指导方针。我可以很容易地找到与任何体素立方体相交的三角形列表,但是如何将三角形转换为体素顶点所保存的值?

步骤

  1. 确定内部,外部和边界上的多维数据集。边界很容易确定,因为如果一个立方体包含任何三角形,它就位于边界上。

  2. 我想从那里开始,我需要遵循三角形法线并沿着体素网格投影以确定内部/外部。将内部完全包围的所有顶点标记为1,将外部完全包围的所有顶点标记为-1。

  3. ??这是我感到困惑的部分。我需要采用三角形,并以某种方式将其值插值成顶点值。我的猜测是我需要找到与体素子单元的AABB或在其内部碰撞的三角形的所有点,并将其投影到所有子单元轴上。从那里,我需要获取这些累积的位置,并通过将值设置为[-1,1]来确定值的基础,以使插值最接近边界单元内的船体。 <---这是我100%不了解的部分。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,应将与体素角相关联的值是到曲面的正负距离(外侧为正,内侧为负),以使曲面本身处于零级。

如果体素被单个三角形切割,则只需将距离分配给三角形的平面即可。如果有多个三角形相交,情况将更加复杂。您可能会考虑角在三角形上的正交投影,然后查看它们属于哪个三角形。