I always forget how to do cryptomattes in Arnold & Houdini
string camera=chs("../camera");
vector campos=toNDC(camera,@P);
vector2 padding =chu("../padding");
if((campos.x+padding.x)<0||(campos.x-padding.x)>1||(campos.y+padding.y)||(campos.y-padding.y)){
i@group_kill=1;}
matrix cam=optransform(camera);
vector camera_position=cracktransform(0,0,0,{0,0,0}, cam);
float distance =distance (camera_position,@P);
float threshold=chf("../distance");
if(distance>threshold){
i@group_kill=1;}
use instancefile to access geo saved somewhere...
in a point wrangle -
s@instancefile=chs("path");
now with the geo node, you gotta add the instance tab and turn on fast instancing.
some of the newer tools in Houdini might do this, but it's quite nice to see how to do it manually.
point wrangle the curve, with heightfield in input 1..
float lift = chf('lift'); f@height = volumesample(1, 'height', v@P) + lift;
then plug that into a volume wrangle (input 1), heightfield in input 0
float width_min = chf('min_width'); float width_max = chf('max_width'); float ease = chf('roll_off'); int prim; vector uvw; float dist_crv = xyzdist(1, v@P, prim, uvw); float height_crv = primuv(1, 'height', prim, uvw); float mask = 1.0 - smooth(width_min, width_max, dist_crv, ease); f@height = lerp(f@height, height_crv, mask); f@mask = mask;
You can control the height with the "lift" slider made in the point wrangle, and the width/falloff in the sliders made in the volume wrangle.
typical basic kinefx rigging for organicish shapes
to summarise - convert to vdb, do a volume point sample. multiply the normal of the geo by the volume sample and then add back to the original position. It should push in -or out- for a packed cushiony effect.
nicely demo'd here by
Emīls Geršinskis - Ješinskis
https://www.youtube.com/watch?v=2yGxLHSYf8I