KineFX, parenting geometry to bones.

   7558   15   2
User Avatar
Member
34 posts
Joined: June 2006
Offline
Hello. I am playing around with KineFX and trying to create a rig from scratch. I am stuck at trying to parent non-deforming parts of the geometry (gums and teeth) to their bones. I suppose I have to parent them to the bone's point but I really can't figure out how to do it. I tried to use VOPs but using the KineFX parenting nodes gave me funky results (mainly flipped rotations). If someone could point me to a direction here, I would greatly appreciate it.

Secondary question. The only way I have found to name the bones is to create the skeleton, delete the name attribute and then use a rig doctor node to give them a meaningful prefix. Is there a simpler way to do it that I have missed?

(Also a million more KineFX questions but never mind)

Thank you in advance.
User Avatar
Member
1737 posts
Joined: May 2006
Online
They're just points, so you can isoate to the head point and use a copytopoints to stick whatever you need there.

Take a look at the attached hip. My hourly rates for character design and character animation are quite unreasonable…

Attachments:
kinefx_parent_stuff.hip (194.5 KB)

http://www.tokeru.com/cgwiki [www.tokeru.com]
https://www.patreon.com/mattestela [www.patreon.com]
User Avatar
Member
34 posts
Joined: June 2006
Offline
Blimey! Copy to points should be the first thing to come to mind. Not in a SOPs state of mind yet I guess. Thank you very much for the effort.
User Avatar
Member
1737 posts
Joined: May 2006
Online
Heh, its a houdini blind spot, you usually think of copytopoints for ‘copy one thing to lots and lots of points’ rather than ‘copy one thing to one point’. I remember tying myself in knots thinking of vex ways to parent things together before realising I could just grab a single point and CTP.
http://www.tokeru.com/cgwiki [www.tokeru.com]
https://www.patreon.com/mattestela [www.patreon.com]
User Avatar
Member
7720 posts
Joined: July 2005
Online
Take a look at the Capture Packed Geometry SOP which is the recommended workflow if you've got both regular skinned geometry and rigid transforms. This allows you to keep all your geometry in the “Skin Geometry” data stream, and all the animated stuff in the “Animated Pose” data stream.

For geometry that's meant to be just rig controllers and such, there's also the Attach Control Geometry SOP which will attach geometry directly to the joint points.
User Avatar
Member
172 posts
Joined: Jan. 2014
Offline
Thanks, Can we have an example of a rig based on KineFX, please. it'd help a lot with questions like this.
I'm also not quite sure how to select controls after you attached those with “attachcontrolgeo”, will controls expose after we pack the rig into an hda?
Edited by Ivan L - Nov. 3, 2020 21:39:32
I contribute to the beauty of this world
User Avatar
Member
7720 posts
Joined: July 2005
Online
Have you watched any of the HIVE presentations on KineFX? In particular, the Introducing KineFX [vimeo.com] one is a good starter (followed by the KineFX in Games one). Basically, you move the controls with a Rig Pose.

If you want to encapsulate the control geometry into an HDA, this wasn't explained explicitly in the presentation but the steps are basically:
1. Create a new SOP HDA and put a “Compute Rig Pose” node inside
2. On the HDA's Edit Operator Type Properties, put “kinefx__rigpose” as the Default State (Node tab)
3. Save and close the Edit Operator Type Properties dialog
4. Click the “Promote Parameters” button on the “Compute Rig Pose” parameters
5. On the HDA, do Save Node Type and Match Current Definition
6. Move mouse to viewport, hit Esc and then Enter to trigger the new state for the HDA to pose the controls
Edited by edward - Nov. 4, 2020 00:38:08
User Avatar
Member
34 posts
Joined: June 2006
Offline
Just wanted to say CapturePackedGeo method works beautifully. Thank you. I will watch the masterclasses thoroughly. This is exciting stuff. Thanks again.
User Avatar
Member
172 posts
Joined: Jan. 2014
Offline
Hey, sorry, just tried to replicate the example from the Introducing KineFX [vimeo.com], like on the screenshot. It works, but with some joints, I get the wrong result. I suspect we need to correct orientation, but not sure how.
Should we use the “fullbodyik” node instead maybe?
Edited by Ivan L - Nov. 4, 2020 18:44:21

Attachments:
kineFX_controls.hiplc (330.4 KB)
chrome_xkVbFUPP7b.png (76.4 KB)

I contribute to the beauty of this world
User Avatar
Member
7720 posts
Joined: July 2005
Online
I guess whether you want a more traditional rig or animating with the new Full Body IK solver is sort of a preference.

I gave a rough go at playing with this anyways. Changes to the attached file include:
- On the Curve Solver (solvecurve1) VOP
- Fix Look At Axis and Up Axis
- Switching Tip and Root Orientation to Control felt better
- Since the pelvis is being modified by the curve solver, and the legs are children of pelvis, I didn't find an easy way to only tell it to tell it update the upper body but NOT the legs. So I just ended adding second Rig Attribute VOP to add Two Bone IK on the legs.

Attachments:
kineFX_controls_fix.hiplc (387.1 KB)

User Avatar
Member
172 posts
Joined: Jan. 2014
Offline
It's perfect, thank you. I should have tried to adjust axes on the Curve Solver hah.
I contribute to the beauty of this world
User Avatar
Member
4 posts
Joined: Jan. 2020
Offline
edward
Have you watched any of the HIVE presentations on KineFX? In particular, the Introducing KineFX [vimeo.com] one is a good starter (followed by the KineFX in Games one). Basically, you move the controls with a Rig Pose.

If you want to encapsulate the control geometry into an HDA, this wasn't explained explicitly in the presentation but the steps are basically:
1. Create a new SOP HDA and put a “Compute Rig Pose” node inside
2. On the HDA's Edit Operator Type Properties, put “kinefx__rigpose” as the Default State (Node tab)
3. Save and close the Edit Operator Type Properties dialog
4. Click the “Promote Parameters” button on the “Compute Rig Pose” parameters
5. On the HDA, do Save Node Type and Match Current Definition
6. Move mouse to viewport, hit Esc and then Enter to trigger the new state for the HDA to pose the controls

You are a beautiful soul and this was destroying me, Got everything set up great and then hit this brick wall, Thank you soooo much
User Avatar
Member
3 posts
Joined: Nov. 2011
Offline
Hello). Someone tried to collect an asset from kinefx nodes and then from the same assets collect another one with the controllers rising to the upper level so that the controllers are displayed. attachment of controllers occurs in nested assets via the attachcontrol node. It is not displayed on my top level. In nested assets, I use default_state with the prescribed state from the kinefx__rigpose documentation. If anyone knows, please help.
LOVE SIDE FX
User Avatar
Member
7720 posts
Joined: July 2005
Online
@sunren Yeah, I'm not sure whether it's a bug or not that only direct child nodes of the HDA are searched for by the kinefx__rigpose state. It might be worthwhile logging an issue asking about this with an example file.

I took a look at $HFS/packages/kinefx_rig_pose.pyand it looks like you can have a “ViewerStateConfig” HDA section that has a getPoseNodes(node)python function that returns a list of all the Compute Rig Pose nodes for the state to interact with. You'll also need to take care of promoting all the right parameters up to the outermost HDA level as well or else the handles won't be able to modify parameters that are locked inside the HDA.
Edited by edward - Nov. 9, 2020 16:44:56
User Avatar
Member
3 posts
Joined: Nov. 2011
Offline
edward
Thank you very much, I'll try to figure it out.
LOVE SIDE FX
User Avatar
Member
11 posts
Joined: March 2021
Offline
Would be nice just to have a parent node, to place between you object and your rig to save the headache.
  • Quick Links