找到3D模型中的所有最小局部

时间:2014-04-09 07:00:11

标签: 3d local minimum

我正在开展一个项目,我需要在Z平面上找到本地最小点。

使用图像可以更容易理解我的需求:

http://s28.postimg.org/5y60b3asd/local_minimum.png

视图是z对齐的,我想自动找到箭头显示的点数,但我还没有想到如何继续...

似乎我需要在几个子模型中剪切我的模型以找到它们的zMin,但是如何做到这一点......

你能不能给我一些关于现有算法的建议吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您只有网格数据,那就不那么容易了,但可以做到。

通过渲染:

使用正交相机将网格从底部渲染到深度缓冲区。然后在生成的深度图像上运行着色器,并为每个像素将其深度与相邻像素的深度进行比较。

如果所有邻居都比你当前的像素更远 - 它是当地的最小值。 此方法的精度取决于您的渲染分辨率,您可能还会获得一些光栅化工件,这些都取决于您的网格。

通过网格分析: - 更好的

你需要计算顶点邻居,并按顶点存储它们:(这个伪代码假设网格被索引)

for each triangle:
    for each vertex:
        add two another vertices to this vertex neighbours

然后寻找你的最低要求非常简单:

for each vertex:
    var z = vertex.z;
    for each vertex neighbor:
        if neighbor.z < z:
            not a local minimum!