"Configure Guide Deform" LOP node with character hair

   627   7   3
User Avatar
Member
8 posts
Joined: 1月 2022
オフライン
I'm testing out the new hair features in Houdini 22, particularly the "Configure Guide Deform" LOP node, but I'm having issues getting it to work with the capybara following this guide:
https://www.sidefx.com/docs/houdini/fur/guidedeform.html [www.sidefx.com]

Here are the steps I've taken:
1. Create Capybara from the "Capybara Sim and Deform" tool in the "Hair Utils" shelf. This creates the Capybara_Sim_and_Deform node under `/obj`.
2. Create a "SOP Create" node under `/stage`.
3. Copy all of the nodes inside of `/obj/Capybara_Sim_and_Deform` to the inside of `/stage/sopcreate1`.
4. Delete guidedeform_by_skin_and_guides.
5. Create name nodes for the groom, skin, and guides like the guide does.
6. Change "Import Path Prefix" to `/capybara` for the `/stage/sopcreate1` node.
7. Create a "Configure Primitive" node connected to sopcreate1 and set the groom prim's purpose to render.
8. Create a "Configure Guide Deform" node connected to the "Configure Primitive" node, and set its "Groom Prim" to `/capybara/groom`, "Skin Prim" to `/capybara/skin`, and "Deformer / Guides Prim" to `/capybara/guides`.
9. "Configure Guide Deform" shows an error that `/capybara/guides` is missing a `rest` primvar. Create a "Rest Position" node connected between guideutility and guidedeform_by_skin
10. Create an "Attribute Copy" node named attribcopy_rest between vellum_guide_sim and name_guides. Connect the first input of attribcopy_rest to the first output of vellum_guide_sim, and the second input of attribcopy_rest to rest1. Set "Attribute Name" to rest.
11. configureguidedeform1 errors with "/capybara/guides is missing restorient pimvar", so go back in sopcreate1 and check the box for "Copy to Rest Orient" on the guideutily node. Then for attributecopy_rest, add the restorient attribute to "Attribute Name".
12. configureguidedeform1 does not error anymore, so view from that node, then either render or switch the view to "Final Render". This will cause the viewport to freeze up for about a minute while the procedural computes. Then BAM, I see a mess of fur not even remotely correctly attached.

What did I do wrong here?
Edited by carlson - 2026年8月7日 17:35:18

Attachments:
hair_22_capybara.zip (97.1 KB)
capybara_fur_fail.jpg (398.5 KB)
capybara_fur_node_network.jpg (76.4 KB)

User Avatar
スタッフ
119 posts
Joined: 6月 2024
オフライン
Sorry you experienced this problem. The solution is to place a Rest SOP on your skin too, so between the "capy_skin" and "bonedeform" nodes. The attribute copy that you have in your guide stream is unnecessary as those values are being carried through. It would only be necessary if you had cached out your simulation and didn't want to resimulate after adding those attributes upstream.

Not having an error on the LOP for the missing rest attribute is an oversight on our part - we will add that. Once the rest attribute is there though, the slow lagginess goes away and the procedural becomes really fast again.

We will also take a look at the documentation again and see if we can add anything to make this process clearer.
Liesbeth Levick
Technical Director: CFX
SideFX
User Avatar
スタッフ
119 posts
Joined: 6月 2024
オフライン
Here is a setup for the Capybara Configure Guide Deform LOP using the SOP setup from the shelf tool that is optimised to prevent guide weights being recalculated each frame, as well as preventing cross-contamination of attributes between the prims.

Attachments:
capy_setup_sop_create.png (161.9 KB)
capy_config_guide_deform.png (201.0 KB)
capy_config_guide_deform_example.hip (1014.3 KB)

Liesbeth Levick
Technical Director: CFX
SideFX
User Avatar
Member
8 posts
Joined: 1月 2022
オフライン
Thank you so much Liesbeth! Your example is incredible!
I knew I was missing something obvious.
User Avatar
Member
62 posts
Joined: 3月 2012
オンライン
Hi everyone,

I’m currently working on a Vellum-based groom simulation and I’m running into an issue where the scalp starts moving/separating independently from the groom guides as soon as the simulation begins.

The guide groom looks correct before entering the Vellum simulation, but once I start simulating, the scalp appears to move separately while the guides no longer behave as expected.

I’ve attached screenshots of my node network along with additional screenshots showing the Vellum data at frame 0 and at the first simulated frame. From my inspection, the Vellum data appears to change between these two frames, and I suspect this is related to the issue, but I’m not sure exactly what is causing it or what part of my setup is incorrect.

The groom/guides look correct before the Vellum simulation.
At frame 0, the scalp and guide setup appear to be correctly connected.
On the very next frame, the scalp begins to move independently from the guides.
This causes the groom to separate/deform incorrectly during the simulation.
I suspect there may be an issue with the Vellum constraints, pinning, point/primitive attributes, or the way the scalp is being incorporated into the simulation.

I would really appreciate it if someone could take a look at the attached node network and Vellum data and point out what I might be missing.

Is there a specific attribute or constraint setup I should verify to ensure that the scalp remains properly attached to the guides throughout the simulation?

Thanks in advance for any help or suggestions.



Attachments:
Full Setup Image.jpg (62.4 KB)
This is Node Data of Vellum Solver.jpg (117.1 KB)
Vellum_hair_Data at frame_zero.jpg (119.2 KB)
Vellum_hair_NodeParameter.jpg (172.1 KB)

User Avatar
スタッフ
119 posts
Joined: 6月 2024
オフライン
I can't notice anything obviously wrong from these screenshots. Have you tried toggling on "Snap to Skin" on your Guide Utility node? If that doesn't fix it, please submit a support ticket with a file attached as it is almost impossible to troubleshoot from screenshots alone.
Liesbeth Levick
Technical Director: CFX
SideFX
User Avatar
Member
62 posts
Joined: 3月 2012
オンライン
Thanks for the suggestion. I’ll try enabling **“Snap to Skin”** on the Guide Utility node as well.

I’m also sharing the Houdini file so the setup can be inspected directly rather than relying only on the screenshots. Since the issue may be caused by something in the Vellum data, attributes, constraints, or an interaction between nodes that isn’t visible in the screenshots, I’d appreciate it if you could take a look at the file itself.

Could you please check the file and let me know whether the behavior I’m seeing is expected or if there is something incorrect in my setup?

If the setup looks correct and the scalp still separates from the guides under these conditions, I’d like to confirm whether this could potentially be a **Houdini/Vellum bug** before submitting a support ticket to the development team.

In particular, it would be helpful to confirm whether you can reproduce the issue from the attached file and whether the Vellum data/constraints are changing unexpectedly between frame 0 and frame 1.

Thanks again for taking the time to look into it.
Image Not Found

Attachments:
Hair_Set_Up.rar (2.3 MB)

User Avatar
スタッフ
119 posts
Joined: 6月 2024
オフライン
So there are a couple of issues with your setup.

The first I guess I could've spotted from the screenshots, but it's much easier to discover in the file, and that is that the second output of your Guide Deform should NOT be connected to the second "constraints" input of the Vellum Constraints.

The next issue relates to how you are importing your scalp geometry. When importing alembic files from third party applications such as Maya, when you unpack, you also have to toggle on "Convert Polygon Soup Primitives to Polygons". Without this it "works", but there is weird jittering in the hair.

The hair on the other hand, is coming in as NURBS Curves, which is not affected by the conversion toggle as it is not a Polygon Soup. However, the Vellum Solver cannot handle NURBS Curves, so only the roots move, while the rest of the curve stays in the rest position. To counteract this you need a Convert SOP with the default settings. However, this will lead to a very high point count on the curves and super stretchy curves when you simulate. To fix that the easiest is to add a Resample SOP and adjust the settings so that you can get the lowest resolution possible for the amount of detail that you need to preserve. The Resample SOP actually converts NURBS curves to polygons automatically, so you could skip the Convert SOP.

Alternatively, if you want to maintain the original point count of your curves, you will want to only use a Convert SOP instead of a Resample SOP, and toggle on "Interpolate Through Hulls" otherwise the conversion will create extra points. You will then need to increase the number of substeps on your solver to account for the extra resolution in order for the solver to converge and not be excessively stretchy. You'll also want to set the Thickness to "Calculate Varying" in the Vellum Constraints, so that points near one another on the same curve don't collide with one another.

Finally, you may find that points near the roots are colliding with the scalp in unwanted ways. You can use a "Group Expand" to create a new group called something like "near_roots", and set the steps to 2. Follow this with a point wrangle with this group specified in the group field and the snippet set to
i@disableexternal =1;
Liesbeth Levick
Technical Director: CFX
SideFX
  • Quick Links