Archived post by SniperJake945

One thing I neglected to mention in that post is xyzdist and mindist both require primitives in the geo stream you’re looking up

So they aren’t totally apples to apples with nearpoints/pcfind

okay i couldnt help myself, but here’s single pass random overlapping dots “`c #include #include
vector dots(vector2 uv_in; vector2 freq; float rand_position, rand_scaling, rand_exp, dot_sharpness, alpha_out){ vector2 uv = uv_in; uv *= freq; vector2 iuv = floor(uv); vector2 grid = frac(uv); float alpha = 0; vector color = 0; float sharpness = fit(dot_sharpness, 0, 1, .5, 1); for(int i = -1; i <= 1; i++) for(int j = -1; j <= 1; j++){ vector2 nb_pixel = set(i, j); vector2 nb_offset = vector2(rand(iuv + nb_pixel + 324)) * clamp(rand_position, 0, 1); //random positional offsetting vector nb_color = vector(rand(iuv + nb_pixel + 64)); float nb_dot_size = pow(fit01(rand(iuv + nb_pixel), max(1 - rand_scaling,0), 1), rand_exp); //random scaling float nb_dots = length(nb_pixel + nb_offset - grid) - nb_dot_size; nb_dots = -min(0.0, nb_dots / nb_dot_size); //convert from distance field to dot nb_dots = smooth(1. - sharpness, sharpness, nb_dots); //sharpening the dots vop_composite("AoverB", color, alpha, nb_color * nb_dots, nb_dots, color, alpha); } alpha_out = alpha; return color; } vector2 uv = set(v@uv.x,v@uv.y); float sharpness = ch(“sharpness”); vector2 freq = chu(“dot_freq”); float random_dot_scaling = ch(“rand_scaling”); float random_exponent = ch(“rand_exponent”); vector2 offset = vector2(chu(“offset”)); float rand_offset = ch(“rand_dot_offset”); float dots_alpha; vector random_dots = dots(uv + offset / freq, freq, rand_offset, random_dot_scaling, random_exponent, sharpness, dots_alpha);
/* comp dots over incoming color*/ float alpha_out = 0; vop_composite(“AoverB”, v@Cd, alpha_out, random_dots, dots_alpha, v@Cd, 1); “`

Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20224804/14/22/unknown.png

Archived post by eetu

I needed again to get an axis-aligned Largest Interior Rectangle, and @jake rice 😮 earlier solution didn’t cut it (too much obvious failure cases, even with @CoskuTurhan modifications), so I did a new one from scratch. It’s based on this algorithm (without the outline optimizations) github.com/lukasalexanderweber/lir

I started with a more-nodes-less-vex approach, so it’s a bit of a weird combination. But seems to work 😉

Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20224903/28/22/ee_largest_interior_rectangle.hip

Archived post by SniperJake945

“`c //put this shit in a prim wrangle yo int h = primhedge(0, @primnum); int temp = h; int start_pt = hedge_srcpoint(0, h); int new_pts[]; float depth = ch(“depth”); float inset = 1 – ch(“inset”); do{ int pt_a = hedge_srcpoint(0, h); int pt_b = hedge_dstpoint(0, h); vector p_a = point(0, “P”, pt_a); vector p_b = point(0, “P”, pt_b); //inset p_a = (((p_a – @P) * inset) + @P); p_b = (((p_b – @P) * inset) + @P); p_a = p_a + v@N * depth; p_b = p_b + v@N * depth; int npt_a; if(h == temp){ //only runs on our first iteration npt_a = addpoint(0, p_a); append(new_pts, npt_a); }else{ //our current starting point is our previous destination point npt_a = new_pts[len(new_pts) – 1]; }
//add in our destination point, if we’re not back at the start int npt_b; if(start_pt != pt_b){ npt_b = addpoint(0, p_b); append(new_pts, npt_b); }else{ npt_b = new_pts[0]; } //add side walls addprim(0, “poly”, npt_b, npt_a, pt_a, pt_b);
h = hedge_next(0, h); }while(h != temp); addprim(0, “poly”, new_pts); “`
this is polyextrude with the `divide into` toggle set to individual components. if you want to do the connected components stuff, its a lot more effort, but i believe in you. believe in yourself <:meowpensivepray:814858736497590302> also this requires prim normals, so make sure u add those with a normal sop

Archived post by ajk48n

I mentioned last week that I had made an hda that utilizes TOPs and makes it easy(ish) to save file caches / render an opengl contact sheet of all the caches. I’ve gotten permission to share the HDA, so if anyone wants it, here ya go. The main hda is a geo node called wedge cache. Inside it uses a TOPs hda that is a simple wrapper of ffmpeg to make saving out mp4s easier.
If you just want to use this for caches, you won’t need to install anything else, but if you want to render the contact sheets you’ll need imagemagick and ffmpeg installed
The hda is a little complex, so I’ve put together a demo video on how to use it. I recommend watching at 2x password: wedgy https://vimeo.com/490719853

Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20204612/16/20/ffmpeg_encode_mp4.1.0.hda
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20204612/16/20/wedge_cache__1.0.hda

Archived post by Solitude

@rich lord

this is the expanded version

🙂

it’s not wrapped up into an hda at all though

so the parameters for blend distances and stuff are a bit scattered

it’s definitely not perfect if you push it too far or have lots of uv seams, but I think it does alright in a lot of cases. I used something like this for a ‘dirt skirt’ setup

Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20200512/06/20/boolsmooth2.gif
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20200512/06/20/boolblend2.jpg
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20200512/06/20/bool_blend_v2.hiplc