3-7 矩形连接区域阶梯化
在上一章中,我们创建了计算阶梯连接区域中各个顶点位置和颜色的方法。在这一章中,我们要使用这些方法对矩形连接区域进行三角剖分。计算出矩形连接区域阶梯化后各个顶点的位置和颜色。
首先,我们回到HexMesh.TriangulateConnection
方法中,我们注释掉关于构建矩形连接区域,并为其顶点赋值颜色的代码。取代这部分代码的是一个新阶梯化连接区域的方法。
1 | private void TriangulateConnection(HexDirection direction, HexCell cell, Vector3 v1, Vector3 v2) |
根据上一章中使用插值进行阶梯化的思路,这里先构建阶梯的第一个面。
1 | private void TriangulateEdgeTerraces( |
生成第一个阶梯面片后,我们直接跳过中间步骤,将剩余部分用一个矩形面片连接起来。
1 | private void TriangulateEdgeTerraces( |
通过观察3-6章的示意图可以发现,除了阶梯的第一个矩形面片和最后的连接区域,其余部分可以通过一个循环来生成。思路就是将通过插值计算得出的两个顶点,作为下一个矩形面片的起始点,利用插值再计算出新矩形面片的两个终点。计算颜色也是这个思路。
1 | private void TriangulateEdgeTerraces( |
这样,我们就将之前的矩形连接区域转换成了阶梯状连接区域。并且可以自定义阶梯的段数。但是我们发现一个问题,就是在两个高度相同的地图单元之间,也进行了不必要的阶梯化,这样就产生了多于的三角面。在下一章中,我们会将高度进行分类,从而解决这个问题。