Geometry nodes: Replicate and deform a mesh across a curve

I’d like to know if there is a way to replicate the curve length array and curve deform modifier for meshes under geometry nodes. I have a geometry node setup that contains a path, as well as 2D plane with a few indentations who’s mesh I use: What is the simplest way to repeat and deform the geometry of the plane along the length of the curve without any gaps and overlapping?

Only suggestions I could find are about instancing meshes on points. The problem is those points must be spaced to the width of the mesh, if they’re random I won’t have each panel lining up as desired. Also for a plane that has subdivisions across its length, I’d like for each instance to actually bend with the curve, instancing on points would only replicate each copy of the plane at a fixed rotation without bending it. If the curve contains round spots the plane would also poke out and leave gaps at turning points.

Made some progress but not quite. You can convert the plane floor of the room to a curve, convert that curve to points using a length rather than fixed count, then instance the wall plane mesh on those points.

The immediate issue is rotation, the panels seem to be facing toward the center of the object rather than being oriented to each edge: How do I fix that? Otherwise I’m not sure what happens if the sides of the curve are rounded or the length of their edges isn’t equally divisible to the panel length.

I had the idea to use a Resample Curve node between Mesh to Curve and Curve to Points… but the length do interact strangly.

Maybe this works.
It’s a tutorial of how he made the addon.
He is using a curve and a trick to orient the pieces.

1 Like

That’s a very good tutorial! The biggest complexity seems to be in capturing the attribute for the rotation: If you split the curve you get straight lines but the rotation info is lost, if you don’t rotation information is maintained but then the curve becomes soft, the tutorial suggests a messy way where you use both the curve and original geometry. There also doesn’t seem to be a way to bend the vertices of the object along the curve like with the curve modifier, which would be required for round building faces in case of an architecture generator.

i am not particularly good with geonodes, but it should be possible to bend it. I am sure you find a tutorial on that.

I looked for tutorials and at the available nodes, but sadly couldn’t find anything that works. It might require some ultra-complex setup to detect where rows of vertices on the mesh must be displaced and rotated by the curve, which must be so difficult I’d rather wait for an official node if Blender ever adds one.

You can do it the same way as with modifiers:

  1. Make array array.blend (979.4 KB)
  2. Curve deform
3 Likes

Thanks. The curve deform modifier does what I want, I just want to do everything in geometry nodes. That group should be what I was looking for… even if it’s setup is very complex, but if nothing there gets deprecated and breaks in a future Blender version it should work till there’s a builtin geometry node for this.