Perforated Screen on Curved Surface w/ circle radius based on image

Hey All,

I do apologize if this is a duplicate post, I did a few hours of research and was unable to find a solution to my issue. Please direct me to a post if there is one, if not any and all help is much appreciated!

I am working on subdividing a curved surface into planar panels and then trying to create perforations on each panel with the radius of the perforation to be driven by an image sampler. I am looking to have the image represented over all the panels, not repeated on every panel. I believe I am pretty close to having a working solution, but can’t seem to get the radius of each circle to correspond to the image. Please see attached GH file as well as some screenshots.

Perferated Panels on Curved (65.8 KB)


Here is one method.

Perferated Panels on Curved (68.7 KB)

I forgot to include the perforations, so here is the file again. There is probably a better solution, because this seems fairly process heavy; but then there are 10296 holes.

Perferated Panels on Curved (68.2 KB)


Works Great, thanks! I just Remapped the circles to cut the larger panels instead of cutting the “scaled” panel. Would you be able to explain the logic of using UV point?

Answer to my own question:
Point in space - Euclidean Coordinate System: (x,y,z)
Point on a curve - Parameter Coordinate System: (t)
Point on a surface - Parameter Coordinate System: (u,v)

From what I understand the reason to use the UV system is that an image is 2D and you need a 2D representation of each surface vector?

Sorry for taking a while to get back to you. The reason I used the surface closest point to get the uvP was that it was the quickest/simplest way I could think to get the the uv parameter for all points inside of a single uv. domain; in this instance between 0 and 1.

You may have noticed that I changed the domain of your image so that the XY domains were also set to 0 To 1. So inputting any uv parameter within this domain will give the corresponding pixel value.

Yes, using the uv output from the surfaces provides parameters to evaluate the 2D image. It doesn’t necessary need to be a uv system, and it doesnt need to be with in a domain of 0 To 1.

For example, setting your image to an XY domain of 0 To 100, and inputting grid of 100x100 would give the following.

With the same domain, but a grid of 50x50 you would only get a quarter of the image.

You could set the domain of the image to the pixel dimensions if you wanted to evaluate every pixel.

1 Like

No need to be sorry! Thanks for getting back to me to explain. :+1: Much appreciated and much clearer.