将凸多边形合并成连通区域。
NavMesh.mergeConvexRegions(vertices: number[], indices: number[]) : number[][]
vertices
:包含所有顶点坐标的数组,每个顶点有3个坐标值,如[x1,y1,z1,x2,y2,z2...]。indices
:包含所有凸多边形的索引的数组,每个数组元素表示一个闭合的凸多边形的起始和终止点的索引,如[0,5,12,17,25]表示一个由顶点0、5、12、17和25组成的凸多边形。mergedRegions
:包含所有连通区域的顶点数组的二维数组。每个连通区域的顶点数组的元素表示该区域内的一个凸多边形。如[[v1,v2,v3,...],[v4,v5,v6,...],...]。该方法按照传入的凸多边形的索引,将所有凸多边形合并成多个连通区域。一个连通区域内的凸多边形共享一条或多条边。该方法会返回一个包含多个连通区域的顶点数组的二维数组。如果多个连通区域共享同一个凸多边形,则该凸多边形在返回结果的相应连通区域中会有多个顶点数组元素包含它。
const vertices = [0,0,0, 2,0,0, 2,0,2, 0,0,2, 1,1,1, 3,1,1, 3,1,3, 1,1,3];
const indices = [0,4,1, 1,4,5, 1,5,2, 2,5,6, 2,6,3, 3,6,7, 3,7,0, 0,7,4, 4,5,6, 4,6,7];
const mergedRegions = NavMesh.mergeConvexRegions(vertices, indices);
console.log(mergedRegions);
//输出:[[0,4,5,1], [2,5,6,3], [0,7,6,5,4], [0,1,2,3,7]]
上述示例中,传入的vertices数组表示了一个3D空间中的8个顶点和1个中心点,这9个点被连边后共构成了4个凸多边形,这些凸多边形的索引存放在indices数组中,NavMesh.mergeConvexRegions方法按照indices数组将这些凸多边形分成了4个连通区域,输出结果mergedRegions为一个二维数组,包含了与这4个连通区域相对应的顶点数组。