用高斯网格平滑网格

时间:2010-02-24 02:11:01

标签: opengl mesh gaussian smoothing

我希望使用高斯函数平滑给定的3D网格,该网格使用半边结构来存储邻接信息。以下是提出的算法:

  

通过移动每个顶点来平滑网格   到加权确定的位置   平均邻居的平均值   (权重由高斯决定   西格玛等于平均长度   附着在顶点上的边缘,   归一化使得权重总和   一个)。

因此对于每个顶点curr_vertex,我

  1. 计算其附着边的平均长度
  2. 获取所有相邻顶点
  3. 通过执行以下操作确定每个相邻顶点的权重: `
  4.   

    重量=   EXP( - (距离*距离)/(2 西格玛西格玛))

    where distance is the 3D distance between the {curr_vertex {1}} {西格马{1}} curr_vertex`

    1. 将所有权重相加并将每个邻居的权重除以此总和(归一化步骤)
    2. 将每个相邻顶点的位置乘以其对应的权重
    3. 将所有加权顶点相加,并将结果添加到curr_vertex以生成新顶点。
    4. 当我这样做并运行我的算法时,而不是平滑实际发生的是一个刻度 - 我的网格变得放大而没有任何明显的平滑。

      对我做错了什么的想法?

      编辑: 这是我的代码:

      and the neighbor and

1 个答案:

答案 0 :(得分:1)

这是一个令人头疼的错字式错误。你描述的算法看起来很好。

首先清楚地验证权重的标准化。

接下来检查您的代码,将计算出的顶点位置写回到新的平滑网格中。

这些是我的猜测。如果这些代码不起作用,请随意发布代码段。