Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

Community Reputation

0 Neutral

About Ellyfish

  • Rank

Personal Information

  • Name
    Elize Durham
  1. For Each Loop Merge

    It's a little unclear what you're trying to do from your file and explanation, but this might point you in the right direction. From what I understand, you're trying to make a loop where each iteration of the loop is based in some way on the previous iteration. Pulling some node from inside of a loop and merging it with the output of the loop is kind of a mess and I would avoid it if possible. If you change your loop end node to "feedback each iteration" instead of "merge each iteration", then the next iteration of the loop comes in with whatever this iteration ended with. You're already assigning each box a unique box_id and you already have the metadata node, so at the beginning of your loop, you can blast everything except the previous box out and do whatever you do with it to make your next box. It's important that the output of an iteration also includes the results of the previous iterations, though. So, you go back to the start of your loop and merge it with your new box, then feed that to your loop end. The flow of the loops would go something like this: - The iteration begins with your first box, which has id 0. Blast away everything but box 0 (which changes nothing, because there is only box 0). Something happens using that data, and it produces box 1. Box 1 is merged with the input from the start of this iteration (thus giving you boxes 0 and 1), then fed to the end of this iteration. - The iteration begins with the output of the previous iteration, boxes 0 and 1. Blast away everything but box 1. Something happens using that data, and it produces box 2. Box 2 is merged with the input from the start of this iteration (thus giving you boxes 0, 1, and 2), then fed to the end of this iteration. - The iteration begins with the output of the previous iteration, boxes 0, 1, and 2. Blast away everything but box 2. Something happens using that data, and it produces box 3. Box 3 is merged with the input from the start of this iteration (thus giving you boxes 0, 1, 2, and 3), then fed to the end of this iteration. - [...] - The iteration begins with the output of the previous iteration, boxes 0, 1, [...], and N-1. Blast away everything but box N-1. Something happens using that data, and it produces box N. Box N is merged with the input from the start of this iteration (thus giving you boxes 0, 1, [...], N-1, and N), then fed to the end of this iteration. - Iteration N was the last iteration, so you get the output it gave you. Namely, boxes 0 - N.
  2. When a Houdini HDA is loaded in the Maya plugin, the geometry inputs come in with two string tuple detail attributes, "maya_uv_mapped_uv" and "maya_uv_name", each of the same length. Each member of the first tuple corresponds to the vertex attribute name for the uv sets that Houdini creates when the geometry comes in, i.e. "uv", "uv2", "uv3", etc. Each member of the second tuple is what that name was in Maya for the corresponding uv set in the first tuple. If those are maintained, the geometry output still has the correct uv set when it comes out to Maya, with one strange caveat: the second entry is wiped. Just the second entry. The first and third+ are maintained. I'm trying to make a workaround for this: if there are two or more uv sets, make a new member of both tuples, copy the second member to the new member, and nuke the second member from orbit just to be sure. I just can't seem to figure out how to make a new member of the tuples. I can't even really figure out how to make a tuple attribute at all, or modify anything but the first member of the tuple. I can copy the contents of the tuple into a string array, and I can make string array detail attributes, but they don't read the same (there is one entry with all members of the array in a list, rather than an individual numbered entry for each member). I don't really see anything relating to them in the documentation, either. Can someone please point me in the right direction?
  3. Hmm. Sometimes, like this time, I'll scatter some points and fracture, then make new points at the centroid of each fracture piece and fracture the original geo with those points a second time. That helps even out the spacing and fracture into straighter lines; for example if I have a long thin block that bends, and I want it to be fractured into pieces lengthwise, but don't know its orientation or exactly when the bends happen. I know I've run into this error before; if there's not some obvious case that causes this kind of problem then I'll assume it's got something to do with that and just keep on adding a small random offset.
  4. The .hip is huge and would probably just confuse things. The loop is just going through a bunch of different blocks and breaking them all separately. All the others that it loops over seem to break up how I'd expect, just this one is being weird. I offset the points by a tiny random vector and it worked. I'm not sure why. Does it not like collinear points?
  5. This keeps coming up so I'm afraid I'm missing something, but I'm not sure what. For voronoi fracture, I plug the object I want to fracture into the first input, and the points around which I'd like it to build voronoi cells in the second input. Sometimes, this does exactly what I want. Sometimes, it ignores some of the input points. For example, in my image below, I've plugged in 8 points, all of which are inside the geo, but it's only generated 5 pieces. Has anyone encountered this before, and if so, what did you do about it? EDIT: If I throw a pointvop between my input points and the voronoi SOP, randomly offsetting all points by a tiny random vector, it works. Does it not like when points are in a row?
  6. I have some connected polygons, and I have some curves that cut across the polygons. I want to procedurally split the polygons along those curves. For some reason, the polysplit SOP doesn't necessarily work all of the time; there is no tolerance value that does what I want with every cut. That's the basic premise of my problem. More specifically: The polygons all share at least one edge with one another. The polygons' normals are all roughly perpendicular to the y axis; none are within 45 degrees of up or down. The polygons' normals are all roughly parallel to one another; no two faces are more than 90 degrees apart (enforced by the types of models that will be input), and no adjacent faces are more than 30 degrees apart (enforced by the procedure). Some groups have only one polygon. Some polygons are concave, and some have holes. The curves are all made of exactly two points. The points on the curves all lie exactly along the unshared edges of the polygons (the points were snapped to the edges). At least one of the two points is guaranteed to lie exactly on a preexisting point in the polygons; the other may or may not. The curves do not overlap each other. The curves are all roughly horizontal; in cases where the curve crosses a shared edge between polygons, I would like the point that it cuts across to be pretty much horizontally aligned with the curve. The interiors of the curves do not cross any unshared edges of the polygons; tracing a direct line across the faces from the first point of the curve to the second, you are guaranteed not to leave the polygons. I've attached a file where I create the curves in the first place, with the test geo I'm using, just in case you want an easy way to build a bunch of curves that fit all of those parameters. Cutter_help.zip
  7. Wow, you guys really went all out. My curves are all sortable by Y, so I already implemented the first solution by Noobini (and Coltonmil, very shortly after!) in my graph. I'm assuming that version is more efficient than the general curve solutions?
  8. Oh, that's clever! I didn't think of adding in the points you get from intersection analysis to the curve; that simplifies the problem a lot. My lines can be sorted, so that works for me. It seems to be doing the right thing on my test geo that has all the weird edge cases I could think of, too. Thank you guys!
  9. Unfortunately, the existing points on the curve are placed in very specific spots, some of which are "inline" but still need to remain where they are. I don't want to remove any points on the curve that are not inside the volume, and I don't want to add any points other than the specific ones where the curve and volume intersect. Is my hacky solution really the only one?
  10. I'd like to cut out all portions of a polygon curve that are inside of a polygon mesh. This may result in the curve being cut into multiple pieces. It may also result in one or both of the original endpoints being removed. I'd like to preserve all details of the curve that are outside of the polygon mesh, too. For example, if the red shapes are the polygon volume, the blue line is the curve, and the green circles are the points where they intersect (which are not necessarily preexisting points on the curve), this is what I'd like to happen: Basically, I want to boolean subtract a polygon mesh from a polygon curve, but for some some reason the boolean sop doesn't affect the curve, so I'm looking for other options. EDIT: I can KINDA get it to work by: Translating the curve along the normal. Reversing the point order on the translated version. Merging the translated curve and the original curve. Using an add sop on all points from the merge in step 3 in order to make a polygon. Boolean subtracting my polygon volume from the polygon from step 4. Polywiring my original curve with a tiny radius. Adding a sphere with a tiny radius to each endpoint of my original curve. Boolean union-ing the polywire from step 6 with the spheres from step 7. Grouping all points from the polygon I got from step 5 that are inside the wire-with-nubs from step 8. Promoting the group from step 9 to all edges entirely contained by the points in the group. Dissolving everything except the edges in the group from step 10, with "create curves when dissolving boundary" on and "remove inline points" off. Obviously that's extremely hacky, but at least it does work.
  11. turn texture details into geometry

    Aha. I was having trouble with that method, but then I realized that the UV data is originally a vertex attribute and I had to promote it to a point attribute to access it with the point VOP first. Whoops! Thank you for the speedy help!
  12. Say I get a model with a flat face of arbitrary shape and size, UV unwrapped and with a texture. The texture consists of a black background with different shapes on it. Each shape has a unique value for its blue channel, and no two shapes are overlapping without the black background between them. Would it be possible to cut those shapes out, giving me separate, non-touching flat pieces? What about adding an attribute to the resulting geometry that stores the blue value from the shape?
  13. WHAT?!? I could have sworn I tried every possible combination of checkboxes on the resample node and nothing worked. But yeah, that did it. Thank you!
  14. Perfect! The clip node was definitely what I needed. Yours starts the clip at 0 and progresses up by distance instead of number of segments, but it was easy enough to change it to fit what I needed. Thank you!
  15. I got a quasi-solution by scaling everything up along the Y axis by 100, snapping to points, then scaling back down. It's not perfect but it works within a tolerance.