017 Marching cubes, A high resolution 3D surface construction algorithm

Zhangwenniu 于 2022-10-18 发布

标题

Marching cubes: A high resolution 3D surface construction algorithm

1987, ACM SIGGRAPH Computer Graphics, 18320 citations.

链接

论文链接:

代码实现:原论文中提到,代码使用C语言实现。目前已经有Python版本的代码实现,同时也是NeRF在GitHub代码中引用的实现库,PyMCubes。

NeRF中采用的提取Mesh代码:

NeRF的GitHub链接:

此前我的NeRF阅读笔记:

作者

William E. Lorensen, Harvey E.Cline

General Electric Company

Corporate Research and Development

Schenectady, New York 12301

1987年,通用电力公司的两个研发部门的大佬写的文章。

要点

目的

我们假定空间中的每个位置都有一些属性值,可以通过这些数值来判断空间中的该点处于物体的内部还是外部。

在给定空间中的数值后,希望找到物体的三维轮廓边界,也就是物体的外表面。

最后,需要将外表面表示为计算机可以体现的模式,Mesh网格。也就是将物体的外表面三角面片化,得到最后面片化的网格顶点及三角面片。

思想

方法

文中给出了两种优化。

  1. 计算法向量的时候,每个三角面片的顶点,在cubes被marching之后,只有3条新的边需要重新计算。经过缩减计算时间,三角面片的每个顶点,应该只需要计算一次。
  2. 多个表面相交的时候,立方体在不同表面内部、外部的时候,给出一张真值表,提供具体生成三角面片的方案。

想法

优点

  1. 思想简洁。
  2. 实现高效。构建索引表、每次只计算新的三个边,都是好的优化策略。

缺点

  1. 距离当下的时间有些远,具体的细节还不太清楚。

后续要读的文章