Jeff Lait


About Me

Not Specified


My Tutorials

obj-image Masterclass
Vellum Drape | H17 Masterclass
obj-image Masterclass
Vellum Overview | H17 Masterclass
obj-image Masterclass
OpenCL | H16.5 Masterclass
obj-image Masterclass
Heightfields | H16 Masterclass
obj-image Masterclass
Compiled SOPs | H16 Masterclass
obj-image Masterclass
H15 Masterclass | Grains

Recent Forum Posts

Unstable Vellum Weld constraints Feb. 13, 2019, 5 p.m.

The peculiar behaviour of disableself may be found in the vellum attributes docs: []

The idea of how to use this to solve this case isn't in the docs. We're exploring how to make as a proper built-in, and will probably be adding an option to the vellum solver to auto-disable freshly broken welds.

One issue is that if your tear is pulling apart quickly, you don't want to auto-disable as it may cause layered cloth to fail.

Overhead hit for fit vs. fit01? Nov. 14, 2018, 11:13 a.m.

#define CREATE_FIT01(TYPE) \
TYPE fit01(const TYPE val; const TYPE nmin; const TYPE nmax) \
{ \
    return fit(val, TYPE(0), TYPE(1), nmin, nmax); \

#undef CREATE_FIT01

In the EXPR world (expressions outside of VEX)

    fpreal val = SYSfit(argv[0]->value.fval, 0, 1,
                      argv[1]->value.fval, argv[2]->value.fval);

So it is just convenience.

Can xyzdist VEX function be used on specific primitives without making a group per prim? Oct. 31, 2018, 10:15 a.m.

Groups can be ad hoc groups, so don't need to be created ahead of time.

So you can use the group “53” (note a string holding 53, not the integer 53) to find distance to primitive 53. sprintf(“%d”, primnum) can be used to generate such a group.

A big warning, however: internally it will have to create a group for all those primitives. So while it won't be as clunky, there may be more expense than you expect if every point creates a different group.