Jump to content
Igor

Make Curve In VEX

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 this post


Link to post
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);
}

int prim = addprim(0, "polyline");

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

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);

int prim = addprim(0, "polyline");

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);

    int inter_pt = addpoint(0, ipol);
    addvertex(0, prim, inter_pt);
}

 

VEX_spline.hipnc

Edited by konstantin magnus
  • Like 6

Share this post


Link to post
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 this post


Link to post
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'.

spline.hipnc

Edited by konstantin magnus

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×