How can I move/shift points along a curve in "curve to points" node (3.1)?

I set a few points on a curve and want to shift them in a manner of curve deform modifier where I can move an objectin X axis and it slides along the curve.

Can it be done in Geo node somehow? I see tangent output . Sholdn’t be giving a right slide vector or somthing?

You can use “Sample Curve” for this:

Blender 3.1 alpha


sample_curve.blend (99.0 KB)

1 Like

Thanks a lot [LordoftheFleas]

I found a problem with the solution. That align euler node doesn’t rotate the object properly.


Here I replaced you cone with red post and also put green post with simple array and curve deform modifiers on the same curve.
As you can see the red post never match the green ones and fluctuates rotation differently at evry given slide point .sample_curve2.blend (116.5 KB)

My guess the rotation values don’t do it around tangent vector probably. Do you have an idea how to do it?

Perhaps the curve deform does not use the tangent? Perhaps it uses acceleration or curvature or something like that.

Or perhaps the curve has some tilt value? Tilt can be found if you select the curve and go in to the n-panel.

No tilt at all. And I think the tilt is changing the tangent space anyway, basically by rotating it around tangent vector. My guess the tangent vector is enough probably and we need to fine a way to rotate associated tangent space around it or something .

BTW it works perfectly fine in 2d curve so I am not sure whats wrong in 3d curve mode?

The standard twist method in curves is set to “Minimum”.
Have you tried setting it to “Tangent”? Perhaps you get the same results as in GNodes then.

Properties Panel → Object Data → Shape → Twist Method

It messes the curve deform based (green) posts making it unusable and doesn’t change a bit for Geonodes.

The same time “curve to points” node output proper “rotation” for those points just fine but have no way to give them an exact slide value. So my guess that node reads the proper tangent space rotation from the input curve just fine.

Since we need just one more vector for proper rotation my guess it’s normal one probably in “sample curve” output but my math skills is not enough to combine them properly . Does anyone have an idea?

Your intuition was right: using the normal in another align to vector node seems to do the trick.


sample_curve_4.blend (113.3 KB)

Edit: adding a twist to the curve, however, I found this setup here more reiliable:


sample_curve_5.blend (116.6 KB)

2 Likes

Thanks a lot LordoftheFleas Now we get a perfect rotation value on a curve, tilt aware.

Somehow I couldn’t find a way to get same proper rotation when trying to recreate regular Blender instance on face in nodes . With a mesh to point /face we have normal and no tangent or binormal . Could obtain a second, orientation vector from one of a face edges probably but I have no idea how.

The only consistent possibility I see would be UV coordinates, but we don’t have access to them in geonodes, right?

Your proposal of using other features of each face could work; I’d try to compute the vector pointing from the face center to the center of one of the edges, but that would be a different edge for each face in the end (meaning the orientation would not be consistent over all faces of the mesh).

My only idea right now is giving a second object of single edge only next to each face where an instance is supposed to spawn .

Or maybe just using a Sverchok addon to actual instance placement where “Component Analyzer” node has explicitly origin and direction for face based placements. I manged to place my instances properly on geonodes output with it.