It’s probably similar to the clip sop? Here’s like a paired back version of the code, which will only work for quads (since disney modeling only ever makes full quad meshes with planar quads cuz ptex).
“`c void march(vector src_p, dst_p; float omega_a, omega_b; int new_pts[];){ if(sign(omega_a) == sign(omega_b)) return; float m = efit(0, omega_a, omega_b, 0, 1); if(m < 0 || m > 1) return; vector np = lerp(src_p, dst_p, m); int npt = addpoint(0, np); append(new_pts, npt); }
int pp[] = primpoints(0, @primnum); int new_pts[];
vector p0 = point(0, “P”, pp[0]); vector p1 = point(0, “P”, pp[1]); vector p2 = point(0, “P”, pp[2]); vector p3 = point(0, “P”, pp[3]);
float omega0 = point(0, “levelset”, pp[0]); float omega1 = point(0, “levelset”, pp[1]); float omega2 = point(0, “levelset”, pp[2]); float omega3 = point(0, “levelset”, pp[3]);
march(p0, p1, omega0, omega1, new_pts); march(p1, p2, omega1, omega2, new_pts); march(p2, p3, omega2, omega3, new_pts); march(p3, p0, omega3, omega0, new_pts);
if(len(new_pts) > 0){ int new_prim = addprim(0, “polyline”, (new_pts)); } “` now what i will say is that this might be a bit odd for people who are familiar with marching squares. It’s like even more simplified than normal. but that’s because our level set attribute in this case corresponds to the dot product between our point normals and the direction to the camera origin. And ideally there’s never going to be a primitive where that levelset enters and exits through more than 2 edges since that function will be linear across a planar quad. So we don’t really have to account for multiple crossings. 🙂
here’s an example with just a simple levelset
but yeah it’s effectively just the clip sop with an attribute
🙂
i used the above code though because it needed to get used in a houdini engine rig for maya artists so i needed everything to be as simple and fast as possible. The biggest bottleneck ended up being the I/O from maya to houdini engine and back 🙁
Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20252208/01/25/image.png