Evan Robinson
evanrudefx
About Me
freelance vfx
EXPERTISE
VFX Artist
INDUSTRY
Film/TV
Connect
LOCATION
N/A,
United States
WEBSITE
Houdini Skills
Availability
I am available for Freelance Work
My Gallery
My Tutorials
Recent Forum Posts
flipbook ROP "denoise if needed" not working April 25, 2026, 12:01 a.m.
Hello,
I am working on a wedge tool (that flipbooks the results too). I noticed that the "denoise if needed" doesn't work when you fetch the flipbook ROP using the ROP fetch top. Interestingly, it will work if you set the cook type to "In-process", but why does it not work in Out-of-process? My guess is it has to do something with the fact it's being processed by a headless process in the background? If you look at the photos below, first image is hitting render on the flipbook rop and it looks normal. The second image is that rop being fetched in a topnet and it's not being denoised. I also included the hip file. The noise isn't horrible in this example, but it can be pretty bad in some of my tests.
Thanks
I am working on a wedge tool (that flipbooks the results too). I noticed that the "denoise if needed" doesn't work when you fetch the flipbook ROP using the ROP fetch top. Interestingly, it will work if you set the cook type to "In-process", but why does it not work in Out-of-process? My guess is it has to do something with the fact it's being processed by a headless process in the background? If you look at the photos below, first image is hitting render on the flipbook rop and it looks normal. The second image is that rop being fetched in a topnet and it's not being denoised. I also included the hip file. The noise isn't horrible in this example, but it can be pretty bad in some of my tests.
Thanks
Simulation workflow for generating guides from static hair April 18, 2026, 1:49 a.m.
main.wooseung
I suspect this is because the weights are determined at the moment of hair generation and do not account for subsequent changes
100% correct. I was actually thinking of adding that when I was writing my last post. The generation weights may not work well if you make too many changes to the hair. For example, a hair curve may wind up closer to another guide other than the one that generated it, thus making the original guide a bad candidate.
main.wooseung
Secondly, while Barycentric weights kept the hair more closely attached to the guides, they caused a significant loss of the clump details that were already established.
Something else I wish I had mentioned in my last post. The guide deform does a poor job in almost every aspect when it comes to generating guide weights for the hair curves. It does a poor job of choosing guides, the weighting is not great, and the interpolation is terrible. For example, if a hair curve is significantly longer than the guide it's bound to, it can result in crinkled or knotty shapes when the guide curve bends and the hair curve tries to bend along with it. I contacted sidefx about the guide deform and they agreed it had room for improvement. We had this issue too of losing clump detail, but I did find a way to fix it. I stored a clump attribute on the guide curves. Then I copied that clump attribute onto hair curves. So both the guide curves and the hair curves shared the same clump attribute. Then I ran the guide deform inside a loop that iterated over each clump. In doing so, each hair curve was only allowed to see guide curves in the same clump. This essentially forced the guide deform to only see good candidates by only allowing hair curves to be bound to guide curves that were in the same clump. That way the clump shape were maintained.
But yea, we had all this trouble because the grooms were made in xgen/maya, so we were forced to generate weights using the guide deform node. Sadly this area is lacking in houdini.
To answer the last question, it probably just depends on which method you use (generating hair at rest or generating animated hair each frame) and how you like working (OBJ or SOP). When we did the hair generation at rest, there is no need for any of the nodes that generated the hair to be in the sim HIP file. So we used the groom pack --> save to .bgeo.sc to disk of the guides/hair curves. Then the simulation HIP file just loads that .bgeo.sc and our whole sim rig was in one SOPnetwork. If there were groom changes, the groom artist just saves a new version of the groom to .bgeo.sc and the sim HIP file can pick it up. If you are generating the hair each frame for animation (hair gen at rest OFF), then you have to keep the whole process in one hip file since the hair generation is after simulation. Whether or not it's a SOPnet or multiple OBJ nodes is up to you.
Hope that helps
Simulation workflow for generating guides from static hair April 15, 2026, 2:18 p.m.
Hello,
My apologies, I should have specified my terminology. When I say guides I am referring to the guide curves and when I said groom, I was referring to the hair curves (or the curves that get rendered). I actually didn't mean to call them groom curves, I meant to call them hair curves. I usually use the term groom to refer to the full set of curves, both hair and guide curves. I also edited my original post to make it easier to understand. It's a bit confusing, in houdini there isn't really a literal difference between guides curves and hair curves. In houdini, it's all just geometry. The terms more so refer to what we use the curves for vs what they actually are. If you go inside the guide groom obj you will see those guide curves are created using the hair gen sop. If you go inside the hair gen obj you will see the hair curves are created using the hair gen sop as well. If you look inside any of the hair OBJ nodes they are all pretty much using the same nodes internally, hair gen sop, guide deform sop, etc.
It's hard to diagnose what the issue might be without seeing the issue or the scene. If you had too few guides, I wouldn't expect the hair to appear and disappear (unless you mean it's going inside and outside the skin geo due to bad deformation), I would just expect these two issues:
1. The motion on the hair curves is too uniform and not a lot of individual motion
2. The deformation may deform the hair curves in unpleasant shapes, like knots or being crinkled
If you have too few guides, I would either create more guides based on the hair curves like you said, or I would just modify the original guide curves. Of course modifying the original curves would affect the hair curves, so you might have to make changes to the hair curves too.
1. Import just the hair curves, the rest skin, and the animated skin into a geo object separate from everything else. Then place a guide deform sop down, and plug everything in the correct input. Use the default mode on the guide deform node (deform only by skin). Make sure the hair curves can follow the skin and everything is fine.
2. For the second test, keep the first setup, but also import the rest guides and the animated guides (not the simulated guides, just the guides that follow the character animation). Then plug those into the last two inputs of the guide deform. Then switch the mode to guide capture and deform. This uses the guides and the skin, so we can test for issues with the guides. Next I would probably switch the method on the guide deform to barycentric weights. See if the hair curves follow the guides and skin properly.
If both of those tests work properly with animation and no simulation, then it could indicate that your issue is too few guides as you said. It could also indicate that maybe there was a issue binding the hair curves to the guide curves causing poor deformation.
For the generation weights, you can check the photo I attached. If you enable "perform hair generation and editing at rest" on the hair gen OBJ then you switch the method to use generation weights. When you enable that, it's just turning on the option on the internal hair gen sop "create guide weights and attribs" If you remember the step earlier for testing the hair, I mentioned using the guide deform and using barycentric weights? If you had this weights options turned on, then you could switch the method from barycentric to use use existing weights. You can also tell if that setting is on by checking the hair curves for the two primitive attributes "guides" and "weights". They are arrays that store which guides were used to create the hair curves and how to weight each guide.
Again, I hope this was helpful. Just let me know if you have other questions.
My apologies, I should have specified my terminology. When I say guides I am referring to the guide curves and when I said groom, I was referring to the hair curves (or the curves that get rendered). I actually didn't mean to call them groom curves, I meant to call them hair curves. I usually use the term groom to refer to the full set of curves, both hair and guide curves. I also edited my original post to make it easier to understand. It's a bit confusing, in houdini there isn't really a literal difference between guides curves and hair curves. In houdini, it's all just geometry. The terms more so refer to what we use the curves for vs what they actually are. If you go inside the guide groom obj you will see those guide curves are created using the hair gen sop. If you go inside the hair gen obj you will see the hair curves are created using the hair gen sop as well. If you look inside any of the hair OBJ nodes they are all pretty much using the same nodes internally, hair gen sop, guide deform sop, etc.
It's hard to diagnose what the issue might be without seeing the issue or the scene. If you had too few guides, I wouldn't expect the hair to appear and disappear (unless you mean it's going inside and outside the skin geo due to bad deformation), I would just expect these two issues:
1. The motion on the hair curves is too uniform and not a lot of individual motion
2. The deformation may deform the hair curves in unpleasant shapes, like knots or being crinkled
If you have too few guides, I would either create more guides based on the hair curves like you said, or I would just modify the original guide curves. Of course modifying the original curves would affect the hair curves, so you might have to make changes to the hair curves too.
main.wooseungAs I said earlier, it's just speculation on my end since I can't see it myself. But it could very well be the issue. There are a few trouble shooting options. I would try trouble shooting at SOP level and not using the obj nodes. The obj nodes hide a lot about what is going on. Here is what I would try:
Is it correct that the issues mentioned above are related to the guide groom / hair generator as I suspect?
1. Import just the hair curves, the rest skin, and the animated skin into a geo object separate from everything else. Then place a guide deform sop down, and plug everything in the correct input. Use the default mode on the guide deform node (deform only by skin). Make sure the hair curves can follow the skin and everything is fine.
2. For the second test, keep the first setup, but also import the rest guides and the animated guides (not the simulated guides, just the guides that follow the character animation). Then plug those into the last two inputs of the guide deform. Then switch the mode to guide capture and deform. This uses the guides and the skin, so we can test for issues with the guides. Next I would probably switch the method on the guide deform to barycentric weights. See if the hair curves follow the guides and skin properly.
If both of those tests work properly with animation and no simulation, then it could indicate that your issue is too few guides as you said. It could also indicate that maybe there was a issue binding the hair curves to the guide curves causing poor deformation.
For the generation weights, you can check the photo I attached. If you enable "perform hair generation and editing at rest" on the hair gen OBJ then you switch the method to use generation weights. When you enable that, it's just turning on the option on the internal hair gen sop "create guide weights and attribs" If you remember the step earlier for testing the hair, I mentioned using the guide deform and using barycentric weights? If you had this weights options turned on, then you could switch the method from barycentric to use use existing weights. You can also tell if that setting is on by checking the hair curves for the two primitive attributes "guides" and "weights". They are arrays that store which guides were used to create the hair curves and how to weight each guide.
Again, I hope this was helpful. Just let me know if you have other questions.