Houdini VEX Snippets


I have always been borrowing code snippets from others, so I thought it was about time to give some back. I will update this list whenever something new comes to my attention.

This page is work-in-progress so it will be very messy for a while.

//Get Number of Points pr. primitive (wrangler set to 'run over primitives')
i@numPoints= len(primpoints(0, @primnum));
//Assign random colors points or primitives
float r = random(@ptnum+1);
float g = random(@ptnum+2);
float b = random(@ptnum+3);
@Cd = set(r, g, b);
//Rotate Points in XZ-Plane
vector rotAxis = set(0,1,0); // Set rotation axis to Y (we're working on '2D' here)
vector N = set(1,0,0); //set Normal to x axis.
 
// create a 3x3 orientation matrix using N and rotAxis as the principal axes.
matrix3 m = maketransform(N, rotAxis);

// now rotate this matrix around the N axis over time.
float someAngle = 13;
float angle = radians(someAngle);
rotate(m, angle, rotAxis);

p@orient = quaternion(m);
//Get attribute from another point
vector p = point(0, "P", @ptnum-1); // get pos from prev point
//CREATE QUADS
//create points (shared among prims)
addpoint(0, {-150,0,0});
addpoint(0, {150,0,0});
addpoint(0, {-100,0,100});
addpoint(0, {100,0,100});
addpoint(0, {-150,0,200});
addpoint(0, {150,0,200});
int points[] = primpoints(0, 0);

//create prims without verticies
int verts[] = primvertices(0, 0);
addprim(0, 0, "poly", points, verts);
addprim(0, 1, "poly", points, verts);

//add verticies to prims
addvertex(0, 0, 0); //prim 0
addvertex(0, 0, 1);
addvertex(0, 0, 3);
addvertex(0, 0, 2);
addvertex(0, 1, 2); //prim 1
addvertex(0, 1, 3);
addvertex(0, 1, 5);
addvertex(0, 1, 4);
//Delete Points (Run Over = 'Detail')
int pts = @numpt;
for(int i = pts-1; i >= 0; i--) {
    removepoint(0,i); 
}
//Delete all verticies (Run Over = 'Detail')
int numPrims = @numprim;
int numVerts = 0;
for(int j = 0; j < numPrims; j++) {
    numVerts += len(primvertices(0,j));    
}
for(int i = 0; i < numVerts; i++) {
    removevertex(0, i);
}
//Delete primitives (Run Over = 'Detail')
for(int j = numPrims-1; j >= 0; j--) {
    removeprim(0,j,0); 
}
//Count verticies for each prim and store in detail with dynamic attribute name
for(int i = 0; i< @numprim; i++) {
    int newatt = adddetailattrib(0, "prim"+itoa(i)+"_verts", len(primvertices(0,i)));
}

Leave a comment