Modelling array of rivets with shrinkwrap. How to follow direction of normals?

I’m not new to Blender, but can’t figure out how to get rivets to follow the direction of the normals they are shrink-wrapped on, when using an array modifier. I seem to overlook something, as it seems a basic Blender skill to me. Now the rivets deform the further away they come from the original rivet, as they don’t rotate with the shape of the roof and Blender takes a diagonal cut of it. Also, only 5 and a half rivet stay solid, then only the surface remains. Any idea? Would it be better to use Instances?

Not sure if you mean bolts in a plate, i would use something like this:
array-curve.blend (101.2 KB)

Use a loopcut, double it and convert to curve for the array.

2 Likes

Thanks for that suggestion. That is an idea. I’m working on an STL, so the topology has triangles. It’s not that I can’t re-make the roof so I can do what you suggest, but for my general knowledge, even on a complicated object, shouldn’t it be possible to have the shrink-wrapped arrayed objects to point outwards along the normals, without getting deformed?

In order to continue with the project, I used the curve idea for the curved roof, suggested above.

If I understand correctly, shrinkwrap works vertex by vertex, it’s not meant for snapping entire objects to a surface. In your image the rivets that get flattened are actually showing the expected behavior, the ones that are intact are not being affected by the shrinkwrap or at least, not every part of the mesh is.

A way that could work is to shrinkwrap flat faces to the surface and then use a solidify modifer to extrude them.

There is a thing that can snap entire objects: the shrinkwrap constraint, but it won’t work with an array, because it’s a single object.

Thanks for thought. I guess if you want stuff to stick out in the direction of the normals, you have to extrude the faces of the shrink-wrapped plane.

I eventually combined the two techniques. As the roof was a STL mesh, I created a new plane, stretch it to be the size of the roof, then shrink-wrapped it to the roof. I then converted the mesh to a curve (which then applies the shrinkwrap) and deleted vertices so I was only left with one curved line over de width of the roof. To that remaining curve I linked my rivets array.

Thanks!

1 Like