Python匀称:如何仅对形状的内部区域进行三角剖分

时间:2018-08-18 10:30:33

标签: python-3.x unity3d mesh

我想使用形状将该形状转换为三角形网格,以便稍后在unity3d中用作3d曲面,但是结果似乎并不理想,因为三角形网格覆盖了该形状之外的区域。

def get_complex_shape(nb_points = 10):
    nb_shifts = 2
    nb_lines = 0
    shift_parameter = 2
    r = 1
    xy = get_points(0, 0, r, nb_points)
    xy = np.array(xy)
    shifts_indices = np.random.randint(0, nb_points ,nb_shifts) # choose random points
    if(nb_shifts > 0):
        xy[shifts_indices] = get_shifted_points(shifts_indices, nb_points, r + shift_parameter, 0, 0)
    xy = np.append(xy, [xy[0]], axis = 0) # close the circle
    x = xy[:,0]
    y = xy[:,1]
    if(nb_lines < 1): # normal circles
        tck, u = interpolate.splprep([x, y], s=0)
        unew = np.arange(0, 1.01, 0.01) # from 0 to 1.01 with step 0.01 [the number of points]
        out = interpolate.splev(unew, tck) # a circle of 101 points
        out = np.array(out).T
    else: # lines and curves
        out = new_add_random_lines(xy, nb_lines)
    return out
    enter code here

data = get_complex_shape(8)
points = MultiPoint(data)
union_points = cascaded_union(points)
triangles = triangulate(union_points)

This link is for the picture: 蓝色图片是我想将其转换为三角形网格的多边形,右边的图片是三角形的网格,其覆盖范围超过多边形的内部区域。我怎样才能只覆盖多边形的内部区域?

0 个答案:

没有答案