Jump to content


  • Posts

  • Joined

  • Last visited

1 Follower

Contact Methods

  • Website URL

Personal Information

  • Name
  • Location

Recent Profile Visitors

1,463 profile views

snoot's Achievements


Newbie (1/14)



  1. I made a tool that does exactly this! It's free download. Fixes the both U and V coordinates mainly be looking at topology and connections. Found here: PolyWire UVs — Richard C Thomas Hope it helps!
  2. It's worth noting reading alembics in Sop's sets packed alembic pivot (the geometry point that represents the pivot) to the centroid of the pack I think. For this reason I prefer to use Houdini packed geo in these situations. You should be able to do your polyreduce and pack it (ensuring the pivot is correct), then use a wrangle to apply the packed primitive from the cached packed primitive transform intrinsic to the new packed primitive. You may need some unique value attribute like "name", "id" or "path" to match the the undeformed and deformed packs together. The same principle applies to Alembic prims, you'll just need account for for the pivot. Hope this helps.
  3. Hi there, Out of interest what was wrong and how did you fix it? Thanks.
  4. How about using a "connectivity" sop to create a "class" attribute on the prims. Use attribute promote to promote the class attribute from prims to verts. Then use this in vertex wrangle: @uv += rand(i@class)*10;
  5. Hey there, Maybe this will help. These are the python methods that are available that do the job without having to wrap hscript. hou.putenv, hou.getenv, hou.unsetenv Cheers
  6. This should do the trick.... (using vop cop generator).
  7. Hey there! You can create a primitive string attribute with slashes to a create hierarchy in the alembic. See the attached image of the the Alembic ROP interface. It is set to "path" by default. That and using the "Use Sop Path" setting should get you what you need. Good luck!
  8. snoot

    Shift Array Vex

    Another option: If you need to create wrapping behaviour and want to avoid a loop, with modulus you can create "wrapping" behaviour. Essentially split the array in two and swap the start and end. What defines the offset is where you put the split. int a[] = array(0,1,2,3,4,5,6); int i = len(a); // offset value int offset = 1; int out[] = a[offset%i:i+1]; append(out,a[0:offset%i]); i[]@out = out;
  9. Regarding "unique elements". I would: 1.Sort the input array. 2. Loop over it checking if the previous iteration's element matches the current iteration's element. 3. If it didn't append. Essentially all identical elements will always be neighbours by sorting. I forget, but there are functions that will help you restore the original order if that is important. In my experience avoid using vex's find function. I found it quite slow in the situations I used it. Hope this helps.
  10. Hey there, I built a tool very similar to the Substance functionality. You can draw a line on a image and it turns it into a ramp parameter. https://richardcthomas.com/image-to-ramp Hope it proves useful!
  11. Hi guys, I'm attempting to get the thickness of an object and use this to blend between two pbr layers - in this case a sharp refractive layer into a sss-y one. I could sample an sdf volume on disk and read the thickness from there. But I'm wondering is there a way to do this at render time. For example, catching the position of a ray entering and exiting a surface with lots of sample. Any ideas? Example scene much appreciated! Thanks.
  • Create New...