I'm currently trying to randomly generate obstacles in the hyperbolic plane. Obstacles are polygons with holes, in a hole there can be other obstacles. The hyperbolic plane term is unimportant for my question. I just want you to know that, for generating these obstacles, I'm limited to only use a Delaunay triangulation.
Until now, I've implemented a basic algorithm, it uniformly assigns every vertex of the triangulation a number from -1 to 1, then each face of the triangulation is set to be part of an obstacle (the boolean "in_domain"), if the average of the values of its three vertices is bigger than some threshold. After this initial assignment of the in_domain values, I iterate several times through the faces of the triangulation and if a face has the opposite in_domain value than its two neighboring faces, it changes its in_domain value. From the in_domain values, we can infer our obstacles.
Results look like the following: 
There are some parameters that I can adjust to get other "kinds of terrain", for example the number of vertices in the Delaunay triangulation is the "level of detail" and increasing the threshold parameter for the faces to decide if they are obstacle or not, gives more obstacles. The problem is that the results look fragmented, the only smoothing that happens is what I describes above: if a triangle has two neighbors that are obstacle, the triangle gets part of an obstacle too. Without the "smoothing" it would look like this: 
So I'm looking for a way to go from a Delaunay triangulation to a smooth looking terrain, perlin noise would be perfect, it would induce "good" values for every vertex, so that neighboring vertices in a certain radius all have roughly the same value, and from these values I could assign each triangle whether it's an obstacle or not. But as I searched the internet, I couldn't find any implementations of perlin noise in the hyperbolic plane. But you see, that my problem is that I want to propagate high/low vertex values to its neighboring vertices, to get less fragmented terrain. I also thought about choosing a vertex and then assigning each neighboring face that it is part of an obstacle, then take all neighboring vertices of that vertex and do it again with a certain probability and so on. So that, I do some k-nearest vertices searches and turn all neighboring faces of this vertex set into obstacles. But than obstacles would probably look too circular.





