Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


bentway23 last won the day on April 17 2022

bentway23 had the most liked content!

Personal Information

  • Name
    Mark Reynolds
  • Location

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

bentway23's Achievements


Newbie (1/14)



  1. For anyone who might stumble upon this--a couple of sources (including a reply in the SideFX forum) have pointed out that the guide groom in H19 is just buggy, and it looks like the answer is to see if 19.5 fixes it.
  2. Hullo-- I have a problem with the guide groom node while working with hair. (I'm using H19.) I'm working through Rohan Dalvi's Hairy Houdini course, and he adds ramped color to the hair with an attribute wrangle in a for-loop--which is straightforward enough. The problem is that copying that for-loop from one section of hair/one guide groom to the other breaks the guide groom--the hair all disappears. Making a new for-each loop takes no time, but the bigger problem is that once I go back upstream to the guide groom, all hair has disappeared--something not working downstream appears to retroactively break it. What is happening? I've reset the viewport, I've reopened the file, none of that works. If I reset the guide groom it reappears, and I can brush it, and it even appears to work at the end of the for-loop that applies the color, but the minute I go back upstream and highlight it again, all the hair has disappeared. Is the H19 guide groom just super-buggy? I'm on 19.0.455 (I think that's the latest one with V-Ray, hence not the latest version, but far from the earliest.) I'm running Windows 10, although I don't think that matters.
  3. Perfect, thanks! (Also, I'm about to dig into your tutorials page!)
  4. When you use an oriented bounding box and create the xform detail attribute, how do you apply that info to another object to match its rotation? I assume this is basic matrix transforms, but I'm still getting up to speed on those guys.
  5. Thanks, Konstantin! That's more or less what I ended up doing, only using surfacedist in vex instead. And thanks for the reply, Antoine! I thought about using UVs early on, but since it's a reusable setup the incoming geo will be different each time and not something that (with my knowledge, at least) can be easily/repeatably/usefully UVd in such a way to get reliable coordinates. Because I'm dealing with a surface and not just a primitive I ruled out primUV early on.
  6. If anyone deals with this in the future, I figured out a solution. This might not be completely geodesically sound, but it's close enough for what I'm doing. I figure the best way to approximate a 2D "center of mass"-ish thing on a curved surface (which makes the centroid center of mass not work in this situation) is to find the point that is farthest away (distance along surface) from all surrounding edges. First, in case there are various islands of geo, the areas of each are measured and all prims not part of the largest "island" are blasted. Points on the outside (unshared) edges are grouped. Using surfacedist, each point's distance to the nearest edge point is measured into @dist. This attribute is promoted to a detail (maximum), and all points except the one with the largest minimum distance to the edges are blasted. mass_center_point_test.hiplc
  7. I looked at that, but if the overall surface is very curved (well-nigh spherical) then the centroid won't be near the surface itself--at least not near enough to get a reliable minpos/ray onto appropriate part of the surface (unless there's a way of using it that's not obvious).
  8. That's the thing--it has to accommodate wildly varying geo given what will be fed into it. Thinking on this further, I realized that what I want is not so much an exact center of the surface, but more a weighted, center-of-mass-type center (but for a 2D object). On this one I am even slightly more clueless--could a vellum setup calculate a per-point mass which I could then use to extract a weighted center? So many questions!
  9. Thanks for your reply! I'm not looking for every primitive, though, but the center of and on an entire mesh surface.
  10. Hey, guys--how can I place a single point at the topological surface center (not centroid) of a curved surface? This comes after a lot of fracturing and blasting various prims, so the resulting geo is 3D but in the curved-2D sense (vs. extruded/solid). I've tried raying points but based on the shape it will frequently find the closest distance to be right on the edge of the geo instead of nicely in the center using min distance, and using vectors is no better. (This includes raying points that start at the centroid of the pieces.) It's okay if it's not 100% perfect, so if it's easier to do this by removing points of the existing geo instead of scattering a new point that's fine. I think maybe creating per-resultant-piece UVs would be the ticket(?), but I'm not sure how I would make lumpy and not-all-connected geo into pretty square 1x1 UV islands. Perhaps I can abuse the measure sop somehow? Group outside/unshared edges, measure each point to the distance of each edge, average those distances, and grab the point with the closest to a bbox max * 0.5? These things are on the tip of my brain but not spilling out to my fingers on the keyboard.
  11. I started toying with isolating points, shifting the cached sim to the last frame, creating an attribute for those with fewer than 3 other points within 2 times the pscale radius and then using an attribute copy to transfer it to the non-frozen sim--what I've found is that it doesn't seem to transfer to the non-time-shifted sim cleanly (the results change throughout the sim, although since it's based on the shifted final cached frame I would think they'd be constant--my method screenshot attached). I thought about measuring the velocities, too, but haven't started tackling that. It would be great to just tell the point deform to reject misbehaving points as it goes along. Perhaps the trick would be to do the point deform in a solver, updating the rest lattice each frame so that points that have flown out of the radius wouldn't be considered, but I have a feeling that would be dreadfully inefficient. It would also be great to not have those rogue points, but even going up to 7 substeps and 200 constraint iterations a few of them just fly away. I think that there are some problems where the most practical solution is a lasso select and a viewport-invoked blast node.
  12. I'm using a vellum grains setup to serve as a softbody sim for a fractured object (glued islands with separate, breakable glue for the seams, will point-deform source geo in a for-loop). Because the source geo is fractured, tet softbodies won't work, so I'm going the grains route. By and large it's working nicely, except that there are a few rogue grains that will fly off during the sim and I'm afraid that will screw up my point deform. It's not huge spacewise, so manually picking and blasting them after the sim but before the point deform wouldn't be difficult (and at this point probably more efficient, actually) but I'd rather do this procedurally since this setup is made to be reusable. Is there a way I can identify and blast out the misbehaving grains procedurally (presumably with the sim time-shifted to the last frame)? I presume doing a nearpoints-type-thing would eat into the edges or smaller islands, but I could be wrong. (And since they're more often in little clusters of two or three, just finding completely isolated points won't work.) Thanks for any help!
  13. Is this possible, or even removing specific ones? My list is showing paths that haven't existed for months. (Also, sometimes I set it with the "/" at the end, sometimes not, and that makes each path appear on there twice.)
  14. Is it possible to increase the size of a null object in the Network viewer? I usually have one as a control with all my adjustable parameters on it, and even when bright red and a different shape it can get lost in the overall node sea.
  15. Exactly what I was looking for--thanks! (And thanks for the other million questions your website has answered along the way, as well . . . .) Someone on a SideFX forum thread pointed out that you can use the cluster attrib on the glue search to only create constraints within groups. I didn't have to do that on my setup because my grains setup resolution was so low the constraints were never jumping the gaps between pieces. I dove into the vellum constraints node to see where the prim creation happens to see if I could just steal that small part to do this same setup but not for dynamics, simply for connecting points of separate groups. It looks like the magic in the glue constraint creation hinges on a "createGlueConstraints" function which appears to be not accessible to layfolk and possesses no context help info. Now if you'll excuse me, I have some floppy things to tear up.
  • Create New...