4-14 修复CCS连接类型的破面

  在上一章中,我们修复了cliff-slope-slope(CSS)slope-cliff-slope(SCS)两种连接类型种产生破面的问题。这样的问题。破面的问题同样也存在于cliff-cliff-slope连接类型中。

  修复这个破面问题与上一章修复CSSSCS连接类型破面的问题思路相同。在TriangulateCornerTerracessCliff方法的最后一个else中,不再让分界点进行扰动即可。代码如下:

HexMesh.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void TriangulateCornerTerracesCliff(
Vector3 begin, HexCell beginCell,
Vector3 left, HexCell leftCell,
Vector3 right, HexCell rightCell)
{


else
{
//这里不再扰动分界点
AddTriangleUnperturbed(Perturb(left), Perturb(right), boundary);
AddTriangleColor(leftCell.color, rightCell.color, boundaryColor);
}
}

  同理,再起镜像位置的TriangulateCornerCliffTerraces方法中也不再对分界点进行扰动。代码如下:

HexMesh.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void TriangulateCornerCliffTerraces(
Vector3 begin, HexCell beginCell,
Vector3 left, HexCell leftCell,
Vector3 right, HexCell rightCell)
{


else
{
//这里不再扰动分界点
AddTriangleUnperturbed(Perturb(left), Perturb(right), boundary);
AddTriangleColor(leftCell.color, rightCell.color, boundaryColor);
}
}

  这样我们就修复了所有斜面和阶梯三角形连接区域之间的破面。在下一章中,我们将会对地图整体进行参数调整,使地图看起来更加自然,为接下来的功能做准备。

Github代码