用CGAL设置表面网格参数化的角落

Setting the corners of surface mesh parameterization with CGAL

本文关键字:角落 参数 网格 CGAL 设置 表面      更新时间:2023-10-16

我正在使用cgal-4.14的square_border_parameterizer.cpp示例。我不仅要选择四个角落,还要决定哪个是哪个。也就是说,我想指定的是,将分配哪个角落(0,0(,该参数对将变为(0,1(,将变为(1,0(,哪个将变为(1,1(。有可能吗?

我尝试了用CGAL提供的Nefertiti示例,并使用了几个选定角的排列。

corners1.selection.txt:

133 8 0 287

Corners2.Selection.txt:

8 0 287 133

Corners 3.Selection.txt:

287 0 8 133

但是,在Meshlab中打开的所有三种情况下,结果似乎都一样。

我也看了源代码,但我还无法得出结论。据我所知,文档只提到一个人可以选择四个角落。

您应该调整的是参数器参数中的边界半edge。

内部(尤其是在Square_border_parameterizer的函数Compute_offsets((中,角落通过行走边框归因于其几何UV位置,从您在输入中传递的HalfEDGE bhd开始:第一个角落将在uv(0,0)

因此,如果要修改哪个顶点在 (0,0)上,并查看正在玩的squared_border_example.cpp,则可以简单地添加:

  while(source(bhd, sm) != vda[i])
    bhd = next(bhd, sm); // walk the border

使用i=0,...,3致电SMP::paramterize()之前,您将获得您可能想要的参数化空间的任何旋转。