Need some help with Bézier Curves

Hello,

I’ve recently been struggling to combine multiple Bézier Curves into one path.

The main problem is that when the parts are generated, they overlap a bit at the start/end of each segment. I’ve tried to get the remaining progress on the previous segment, and add it when starting to interpolate the next. However, the progress will always be different due to the varying distances across the nodes.

If this isn’t making any sense, here’s a screenshot of what’s currently happening.

And this is what I’m trying to achieve


As you can see, I want all of the points to be evenly spread out and have no overlapping at the start/end.

This is the summarized code I’ve been using.

   repeat 
		CP = math.floor(CurrentLerp)
		local Current = Model[CP].CFrame
		local Next = Model[CP+1].CFrame
		local Distance = (Current.Position - Next.Position).Magnitude
		CurrentLerp += 1/Distance
		LerpProgress = CurrentLerp - CP

        --All I do in this area is determine the control positions(unnecessary/unrelated code)

		local InterpolatedP = CalcBezier(LerpProgress, Current.Position, ControlPos1.Position, ControlPos2.Position, Next.Position)
	until CurrentLerp >= #Model:GetChildren()-1

Thank you for reading, and I’m sorry if this doesn’t make that much sense. The topics I’ve seen similar to this are pretty confusing to me and I’d just like to see if I can get an easier and more simplified answer.