As far as I’ve described the issue in my initial post, everything works perfectly.
Now I’ve tried to resolve the following thing myself, but the solutions I’ve found, don’t really work with what I got so far.
I need the instances to bend with the curvature of the… curve. Below you can see my nodes and the setup so far.
I’ve now watched and read a bunch of geo node tutorials and I still can’t say that I understand how everything works. Now I’ve established that I can’t solve this by myself and need some help or a solution from the community.
If I use this method, the alignment (facing X towards curve tangent and Z upwards from the mesh vertices) doesn’t work anymore.
Side note: Curve tilt seems unpredictable and really needs to be solved differently.
There are other problems as well. Like if I try to extract multiple curves from the same mesh, the arrayed mesh will stretch from the end of one to the beginning of the other curve:
It’s a deal breaker.
I also need to use the accumulated curve length to drive the array length and I’m not sure how to remove the component that moves the array along the curve. I want them match positions and not drive trains around the curve.
What I basically want is the combination of the array modifier using curve length and the curve modifier, but only using geo nodes and with the additional benefit of it aligning not to the curve tilt, but to the mesh normal and curve tangent.
I’m really not deep enough into geo nodes and math never was my strongest subject, so I’m really struggling here.
It would make me really happy if I could make this work.
I’m trying for a while to align some arrays to surfaces in blender using geometry nodes.
In my initial post I got help to resolve the orientation issue I had. It felt like my third eye opened, I achieved enlightenment and finally understood the secrets that were hidden from me.
But soon I noticed that this doesn’t work like a better version of the array modifier using curve length combined with the curve modifier.
Where the modifier method makes the arrayed mesh follow the curve and deform with it, the instances stay rigid and if the curve radius is too small, they will stick out.
Below is an example of what it looks like with the modifiers
The problem with this method is the curve tilt. I usually need to put arrays on top of surfaces. For this I extract a curve from a loop on the surface and use it for the array. The curve tilt doesn’t align to the surface though! If everything is flat, it’s fine, but as soon as the topology becomes 3-dimensional and curves in a bit more complex manner, it becomes unpredictable.
I don’t feel like going in and editing the tilt for each curve control point, so I thought there must be a method using geometry nodes that combines all the steps in my workflow so that I can reuse it. It would make my workflow faster and super flexible.
There are methods that I’ve looked into, but they don’t work to my satisfaction.
I’ve made a post before this one which could maybe give you more information, but it didn’t receive any attention, so I’m trying again. I hope I’m not breaking any rules.
This is very cool and a great method to know (I can already see where I can use it), but sadly it is not what I’m looking for. The curve has to be extracted from the mesh, otherwise there is a possibility that the arrayed objects intersect with the underlying mesh if the curve segments don’t match with the underlying topology. My clients are picky about stuff like this.
I use Maya for stuff like this at work. We have a plugin that does what I’m looking for, but in a very manual way. Having this in blender geometry nodes would save a lot of time.
There is a plugin that makes the curve align properly with the surface, but this would not be an improvement over the method we use in Maya.
Thanks for the video. It’s easy to follow and informative, but still doesn’t solve my main problem. He still uses rigid chain links, but I need them to be bendy. Like soft mushy rubber links that bend with the curve.
No. The curve modifier relies on the curve tilt for the alignment and the curve tilt is not really good for that. In one of the earlier replies in this thread you can see the tilt of the curve represented with a purple poly strip. It doesn’t follow the surface and even crosses it on while it bends.
Ok, how about this?
I have an idea, but no clue how to do it and I need you to guide me.
I have the instances aligned nicely. now I want to position all the vertices to the nearest point on the curve, and then give an offset to each vert based on their relative point in space. Similar to the @higgsas curve deform node group, but without the adjustment around curve length.
I’m stuck at the “position them on the curve” part. Whatever I try, the vertices get all positioned to 0,0,0
Is this even possible?
Can someone tell me how to slap the vertices of the instances to the loop or curve?
I think I can get the Y and Z offset if I use a scale instances node (Y and Z to 0)and get the difference in position from there (in theory, practically it’s denting my head), but I can’t figure out how to apply the offset on X. So I thought if I can use something to project the vertices to the nearest point on the edge or curve, I could apply the offset after that.
I can’t figure out how to do this with the Raycast node and I’m not any smarter with the Sample Nearest node.
Am I even on the right path here, or is it wishful thinking?