Search - User list
Full Version: Building a Procedural Curve-Driven Lip Rig with Dynamic Weld
Root » Rigging » Building a Procedural Curve-Driven Lip Rig with Dynamic Weld
Beleckiy Andrey
I am developing a high-end, flexible lip rigging system in Houdini 21 using APEX. I want to move away from static bone chains and create a fully procedural, curve-based solution.

The Goal (as shown in my Blender screenshots):
I have a cylinder with procedurally split edges at the mouth area. I want to implement a system that handles the following natively in APEX:

Curve-to-Joint Binding: A system where a curve (or multiple curves for upper/lower lips) drives a set of joints. These joints should be constrained to the curve points.

Dynamic Procedural Welding: Similar to the Blender Weld modifier, I need real-time vertex welding within the APEX graph. When the upper and lower lip joints approach each other, the mesh should seamlessly seal.

Advanced Lip Roll: Each joint along the lip curve needs a Roll (rotation) attribute to simulate the lip rolling in/out, which should be easily controllable via the curve’s tangents or custom attributes.

Procedural Density (Variable Controller Count): I want to be able to change the number of controllers (and joints) on the fly. For example, switching from 5 main controllers to 11 for finer detail without breaking the skinning or the APEX graph logic.

Sticky Lips / Seal: Logic that allows the lips to "stick" together within a certain distance threshold before they finally snap open.

My Questions for APEX Experts:

What is the best way to implement a Curve Constraint within an APEX Edit Graph to drive joint positions?

How should I handle the Lip Roll logic procedurally? Should I use an Orientation Along Curve approach within APEX?

Is it possible to make the Joint Count a procedural parameter that updates the APEX Rig Graph dynamically?

How can I implement a Distance-based Weld/Fuse node directly in the APEX evaluation to ensure the mouth seals perfectly when closed?

I'm looking for the most robust, "production-ready" way to set this up in H21. Any graph examples or node suggestions would be invaluable!
jujoje
Wouldn't claim to be an expert in any way shape or form, but, off the top of my head:

  • The component or rig::ControlSpline / rig::SampleSplineTransforms nodes should be able to get you a lot of the way there in terms of driving your joints with a curve.
  • Procedural density should be doable (in the graph construction not the animate state). You're still going to have to do the weights though.
  • For closing the mouth sop::fuse should work pretty well for basic things. Just put it after the bone deformation and set it to pick up a group on the geometry to fuse. You might want some fancier logic to blend it in, but should give you a start.

Image Not Found
guoli
jujoje
Wouldn't claim to be an expert in any way shape or form, but, off the top of my head:

  • The component or rig::ControlSpline / rig::SampleSplineTransforms nodes should be able to get you a lot of the way there in terms of driving your joints with a curve.
  • Procedural density should be doable (in the graph construction not the animate state). You're still going to have to do the weights though.
  • For closing the mouth sop::fuse should work pretty well for basic things. Just put it after the bone deformation and set it to pick up a group on the geometry to fuse. You might want some fancier logic to blend it in, but should give you a start.

Image Not Found



Big brother, you are a very great person, please accept my highest respect for you.

Also, could you share your document with everyone?
Thank you.
Beleckiy Andrey
джуджодже
Wouldn't claim to be an expert in any way shape or form, but, off the top of my head:

  • The component or rig::ControlSpline / rig::SampleSplineTransforms nodes should be able to get you a lot of the way there in terms of driving your joints with a curve.
  • Procedural density should be doable (in the graph construction not the animate state). You're still going to have to do the weights though.
  • For closing the mouth sop::fuse should work pretty well for basic things. Just put it after the bone deformation and set it to pick up a group on the geometry to fuse. You might want some fancier logic to blend it in, but should give you a start.

Image Not Found
Thank you so much for taking the time to point me in the right direction! I really like your train of thought here.

The suggestion to use rig::ControlSpline and rig::SampleSplineTransforms is spot on for driving the joints. Also, using sop::fuse after the deformation for the mouth logic sounds like a great starting point. I'm going to give this a try
Fraenk
Maybe you'll have good starting point by checking the worm-rig. I'v learned a lot from this example since it has also a custom viewer-state for creating sub-ctrls dynamically which is only possible in H21 (without writing your custom plugin like in Maya). So in theory you could let the animator decide how many micro-controls she/he wants to use on runtime(!). It's amazing!
I'd be really interessted in your poc if you can/want to keep sharing your progress since I'm currently working on something similar. Good luck. Apex rocks
Beleckiy Andrey
Fraenk
Maybe you'll have good starting point by checking the worm-rig. I'v learned a lot from this example since it has also a custom viewer-state for creating sub-ctrls dynamically which is only possible in H21 (without writing your custom plugin like in Maya). So in theory you could let the animator decide how many micro-controls she/he wants to use on runtime(!). It's amazing!
I'd be really interessted in your poc if you can/want to keep sharing your progress since I'm currently working on something similar. Good luck. Apex rocks
Thanks for the tip I think that's what you meant https://www.sidefx.com/contentlibrary/earthworm/ [www.sidefx.com]
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB