我正在开展一个项目,我需要在Z平面上找到本地最小点。
使用图像可以更容易理解我的需求:
http://s28.postimg.org/5y60b3asd/local_minimum.png
视图是z对齐的,我想自动找到箭头显示的点数,但我还没有想到如何继续...
似乎我需要在几个子模型中剪切我的模型以找到它们的zMin,但是如何做到这一点......
你能不能给我一些关于现有算法的建议吗?
谢谢!
答案 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!