top of page

## VEX Help Sheet

-Here is a helpful cheat sheet to remember some VEX scripts. These are some that I use on a regular basis.

Cheers!

Point Wrangle

â€‹

Randomize point orientation: @orient = rand(@ptnum);

Rotate the point normal:

• float angle = 0.8;

• matrix rot = ident();

• vector axis = {0,1,0};

• rotate(rot, angle , axis);

• vector rotateP = @P * rot;

• @P = rotateP;

To get rotating geometry on a set of points(constantly spinning)

• float angle;

•  vector axis;

•  angle = ch('angle');

•  angle += @ptnum*ch('offset');

•  angle += @Time*ch('speed');

•  axis = chv('axis');

•  @orient = quaternion(angle, axis);

Rotate points into a twirl or spiral:

• float angle = atan(@P.x, @P.y);

• float r = length(set(@P.x, @P.y));

• float twirl = r*ch('twirl');

• @P.x = sin(amount+angle+twirl)*r;

• @P.y = cos(amount+angle+twirl)*r;

Orient and rotate packed primitives:

• float angle = @Time *@ptnum;

• vector axis = {0,1,0};

• matrix3 m = ident();

• rotate(m, angle, axis);

• setprimintrinsic(0, ‘transform’, @ptnum, m, ‘set’);

â€‹

Group number of points randomly:

• int num = chi("num_points");

• string name = chs("grp_name");

• for (int i=0; i< num ; i++){

•     int index = int(nrandom() * npoints(0));

•     setpointgroup(0, name , index ,1);

Set pscale based on distance to the closest point:

•

• @pscale = distance(v@P,point(0,"P",closePt))/2;

Attribute Wrangle

Remove a primitive in VEX: removeprim(0, @primnum, 1);

Set point attribute per chosen point attribute:  setpointattrib(0, "Attrib", pt, attrib(same as “Attrib”));

Set pscale: f@pscale = 1.0;

Set velocity/motion blur if object has none to begin with: v@v = set(0,0,1);

â€‹

Add more velocity/motion blur if object already has velocity: v@v *= set(0,0,1);

Rotate geometry with a matrix:

• vector axis = {0,0,1};

• angle *= ch('twirl')*length(set(@P.x, @P.y));

• matrix3 m = ident();

• rotate(m, angle, axis);

• @P *= m;

Set active and non-active group:

• i@active = 0; or i@active = 1;

Displace geometry by the velocity of an object traveling across its surface. (You need to set up an attribute transfer before the attribute wrangle to transfer the velocity to the object you would like to displace):

• @P.y+=@v.y*chf('scale');

â€‹

Detail Wrangle:

Create a Phyllotaxy formation by orientation of points(Arrangement of leaves on a plant stem or crisscrossing spirals):

â€‹

â€‹

• v@pos = {0,0,0};

•

• float dist = ch("distance");

• float angle = ch("angle");

• int count = chi("count");

• float dInterval = ch("distanceInterval");

•

• vector angleToVector(float theta; float radius;) {

• }

•

• for (int n; n < count ; n++){

•     angle += aInterval ;

•     dist  += dInterval ;

•     v@pos = angleToVector(angle,dist);

*Set angle interval to 137.5.

POP Wrangle

Using Hittotal to change the particle colour:

• @Cd={1,0,0};

• if (@hittotal>0) {

•    @Cd={0,1,0};

• }

Make particles look like they are fake rolling:

• v@axis = cross(normalize(@v), {0,1,0});

• vector4 newgroup = quaternion(@axis*-length(@v)*0.5);

• @orient = qmultiply(newq, @orient);

DOP and SOP Commands:

$F == 1 : Emit first frame$F<=23 : Emit or switch emitter after frame 23.

VEX Wrangle Cheat Sheet: https://mrkunz.com/blog/08_22_2018_VEX_Wrangle_Cheat_Sheet.html

HoudiniVex:

https://www.tokeru.com/cgwiki/index.php?title=HoudiniVex#Rotate_a_single_point_with_sin_and_cos

Using @orient attribute with instances: https://vfxbrain.wordpress.com/2018/12/04/using-orient-attribute-with-instances/

A 20 DAY PROGRAM OF VEX: https://www.giahuyproduction.com/a-20-day-program-of-vex.html

bottom of page