VDB Points Group Sop - how to use vex code to group

   783   0   0
User Avatar
Member
11 posts
Joined: April 2022
Offline
I am trying to implement a way to select voxel included in the camera frustum, in order to unpack the vdbpoints only if in camera.

I have a vex wrangle that works great for regular vdb volumes (ie. density etc).

// example for near and far clip
string cam = chsop("cam");
vector ndcP = toNDC(cam,@P);
float mult = 1;
if(chi('cull_z_negative')) mult *= ndcP.z < ch('z_off1') ;
if(chi('cull_z_positive')) mult *= ndcP.z > -ch('z_off2') ;
f@density *= mult;

For vdbpoint multipling @points by the mask, won't work. ( voxel are containing pts not a just a value in this case )
The VDB Points Group Sop allows to group by bound, sdf, or by random id, I am wondering if there is a specific syntax for vdbpoints vdbs that can be used in VEX to select the voxel by position in space. To expand the functionality of the vdbpointsgroup sop. If I create vdbpoint grp I can then use it in the vdbpoint_convert to unpack only what's in camera.

Thanks in advance
  • Quick Links