How to project surfaces onto a single curved surface

I have these planar surfaces that I want to project onto a single curved surface. The project component does it perfect, however this only works with curves and I need surfaces. I’m totally at a loss on how to make this happen. I’m assuming I can use the Splop component for this? But I don’t know how to give it the inputs it needs. Alternatively, is there a way to create surfaces from these projected curves?

For an added challenge, what if, instead of a bunch of planar surfaces that I wanted to project, It was a single surface with fairly complex geometry? Essentially imagine taking the top surface of a piece of wood with all the ridges of the grain, etc and morphing it to follow this curving target surface. All in Grasshopper ideally.

You could split the surface you’re projecting them to with those very same projected curves, assuming all is nice and clean. Might be slow or not ideal? Who knows.

Imagining = too much work! Why not post an example file? :slight_smile:

Yeah I thought of trimming the target surface with the curves. I don’t think it’s ideal but maybe its the only way…

I don’t really have an example file because I don’t even know where to begin. I have this wood texture that I brought into illustrator and image traced so that it’s a little cleaner. (that does mean it is now vectorized, though the linework that illustrator produces is quite messy) I would like to somehow create a 3d surface from this and then project it onto my curved surface. I know I could use the image sampler to get brightness values from this image, but I’m not sure what would be the best way to create an actual surface from those points. Image sampler would get me values at specific points, but I would need an incredible amount of points to accurately represent this image. If I were to then create a point cloud by moving the points according to the image sampler, the point cloud would be so dense that trying to make a patch with those points would probably blow up my computer. it would be great if I could somehow get each grayscale band as an individual surface (similar to what I showed in the first example) that could be then be moved a certain distance based on its greyscale value so I’m adding “depth” to the image in a very high resolution way (rather than creating a pixelized abstraction of the image through image sampling

Chatgpt recommended an interesting method. I first need to get each shade as a flat surface and then I take a png version of that same texture, run it through image sampler and get the grey value at a point in each surface, so that way I am attaching a grey value which can be used for depth for each surface to then extrude along an axis.

Then, I want some smoothing between each surface rather than like vertical walls connecting each surface so I’m thinking I could offset each surface a certain amount and then loft curves so the profile of the surface is like the bottom drawing in this image

1 Like

Interesting. Show us what you come up with! Also ChatGPT is better at python nowadays.

I want to say this problem is probably better suited for someone like @laurent_delrieu.

Meanwhile, (and this might not be what you’re after) you could try using the Import Image component (it will output a mesh based on your image, and you can choose the resolution to test things). You can then grab the colors of this mesh and try to divide into regions. It gets slower with higher resolution/regions as you’d imagine - however there might be some compromise between the texture (grain) definition in your image and your grasshopper process:
mesh-brightness boundaries.gh (15.0 KB)




NOTE: You will need to specify your image file and then adjust resolution and amount of regions. The last image above used “600” for the resolution and 10 regions. It took ~4 seconds. It’s best to specify values by double-clicking the slider and entering the number. Sliding will cause freezing.

I haven’t tried it yet but I feel somewhat confident that the grey value mapping thing will work for giving me depth. However I’m really not sure how well my idea for smoothing transitions between “levels” will work.

I would like to not have to manually loft each curve, but I’m not sure how I could organize my data so that each curve is lofting with the one that is in front of it. It’s sort of similar to topography contours. The drawing shows an elevation view of the profile.

1 Like