0

我正在使用 CGAL-4.14 中的 square_border_parameterizer.cpp 示例。我不仅要选择四个角,还要决定哪个是哪个。也就是说,我想指定,哪个角将分配参数对(0,0),哪个会变成(0,1),哪个会变成(1,0),哪个会变成(1,1)。是否可以?

我尝试了与 CGAL 一起提供的 Nefertiti 示例,其中有几个选定角的排列。

角1.selection.txt:

133 8 0 287

角落2.selection.txt:

8 0 287 133

角落 3.selection.txt:

287 0 8 133

然而,当在 Meshlab 中打开时,result.off 在所有三种情况下似乎都相同。

我还查看了源代码,但我还不知道如何实现我的目标。据我所知,文档只提到可以选择四个角。

4

1 回答 1

1

您应该调整的是参数化程序在参数中采用的边界半边。

在内部(特别是在函数compute_offsets()Square_border_parameterizer),拐角通过走边界来归因于它们的几何 uv 位置,从bhd您传入输入的半边开始:遇到的第一个角将在uv(0,0)等处。

因此,如果您想修改哪个顶点在(0,0)并查看您正在使用的squared_border_example.cpp,您可以简单地添加:

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

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

于 2019-05-15T13:24:36.190 回答