## Recommended Posts

How can I make curve in VEX? In Documentation I found spline function but I do not understand how to use. I would like to make smooth blend-curve between many lines.

Thanks!

##### Share on other sites

Put all point positions into an array and make parameter "t" slide e.g. from 0 to 1 inside a for loop.

```int steps = chi('steps');
vector all_points[];
resize(all_points, npoints(0));

for (int i = 0; i < npoints(0); i++){
all_points[i] = point(0, "P", i);
}

for(int i = 0; i < steps; i++){
float slide = i / float(steps - 1);
vector pos = spline("catrom", slide, all_points);
}```

Also a simple function for interpolating 4 points to a curve by yourself would be:

```int steps = chi('steps');

vector pt0 = point(0, "P", 0);
vector pt1 = point(0, "P", 1);
vector pt2 = point(0, "P", 2);
vector pt3 = point(0, "P", 3);

for(int i = 0; i < steps; i++) {

float slide = i / float(steps - 1);
vector pos0 = lerp(pt0, pt1, slide);
vector pos1 = lerp(pt2, pt3, slide);
vector ipol = lerp(pos0, pos1, slide);

}```

Edited by konstantin magnus
• 7

##### Share on other sites

Konstantin would it be possible from your setup to include the first and last points as well and also smoothly close the curve?

##### Share on other sites
2 hours ago, patremblay said:

include the first and last points as well and also smoothly close the curve?

I dont think the spline()-function does this for cubic splines. You can read about it here: http://www.sidefx.com/docs/houdini/vex/functions/spline.html

But you could connect points to a curve and close it with an add-node and resample this to an 'interpolating curve' or a 'subdivision curve'.

Edited by konstantin magnus

##### Share on other sites

Thank you, this reminds me to look for simpler solutions first ## Create an account

Register a new account