def METHOD_NAME(self):
    # generate the vertex array with the correct values
    # size of the texture (power of 2)
    w = float(self.image.width)//self.texture.tex_coords[3]
    h = float(self.image.height)//self.texture.tex_coords[7]
    index_points = []
    vertex_points_idx = []
    texture_points_idx = []
    # generate 2 empty lists:
    #  vertex_list:
    #  texex_list:
    for x in range(0, self.grid_size.x + 1):
        for y in range(0, self.grid_size.y + 1):
            vertex_points_idx += [-1, -1, -1]
            texture_points_idx += [-1, -1]
    # since we are using vertex_list_indexed we must calculate
    # the index points
    for x in range(0, self.grid_size.x):
        for y in range(0, self.grid_size.y):
            x1 = x * self.x_step
            x2 = x1 + self.x_step
            y1 = y * self.y_step
            y2 = y1 + self.y_step
            #  d <-- c
            #        ^
            #        |
            #  a --> b
            a = x * (self.grid_size.y+1) + y
            b = (x+1) * (self.grid_size.y+1) + y
            c = (x+1) * (self.grid_size.y+1) + (y+1)
            d = x * (self.grid_size.y+1) + (y+1)
            # we are generating 2 triangles: a-b-d, b-c-d
            # (and not 1 quad, to prevent concave quads
            # although this example can work OK with quads)
            index_points += [a, b, d, b, c, d]
            l1 = (a * 3, b * 3, c * 3, d * 3)
            l2 = (Point3(x1, y1, 0), Point3(x2, y1, 0), Point3(x2, y2, 0), Point3(x1, y2, 0))
            # populate the vertex list
            for i in range(len(l1)):
                vertex_points_idx[l1[i]] = l2[i].x
                vertex_points_idx[l1[i] + 1] = l2[i].y
                vertex_points_idx[l1[i] + 2] = l2[i].z
            tex1 = (a * 2, b * 2, c * 2, d * 2)
            tex2 = (Point2(x1, y1), Point2(x2, y1), Point2(x2, y2), Point2(x1, y2))
            # populate the texel list
            for i in range(len(l1)):
                texture_points_idx[tex1[i]] = tex2[i].x / w
                texture_points_idx[tex1[i] + 1] = tex2[i].y / h
    return (index_points, vertex_points_idx, texture_points_idx)