KineFX - How to setup a character Rig as an HDA

   3637   11   1
User Avatar
Member
53 posts
Joined: Sept. 2018
Offline
Hi guys,

I created a custom rig for my character and wanted to encapsulate it in an HDA.
The problem is that after that the control geometry I setup for the rig cannot be clicked and moved.
When I created HDA I replaced RigPose node with ComputeRigPose and promoted parameters.
This allowed me to put the transformation manually by specifying the values in the parameter pane, but not by click and drag paradigm.
How Shall I setup the HDA correctly so it behaves like RigPose node?
User Avatar
Staff
44 posts
Joined: Oct. 2019
Offline
Greetings!

Currently, in order to be able to interact with the joints inside your custom HDA from the viewport, you have to add to your custom HDA the rigpose state.
To do that, go to Type Properties on your HDA, under the Node tab, and paste this “kinefx__rigpose” in the Default State parm there. Now you should be able to use the ripose state and interact with your controls.

Cheers!
User Avatar
Member
18 posts
Joined: Jan. 2009
Offline
So, after having done that, I get a couple of these messages each time I click on the HDA:
WARNING: Invalid op name network: Object op: kinefx__rigpose

Guessing kinefx__rig_pos.py createViewerStateTemplate() was never called. Any idea what else is missing?
User Avatar
Staff
44 posts
Joined: Oct. 2019
Offline
Hi!

These are all of the steps in order to get the desired result:
1. drop down a computerigpose node inside your custom HDA and plug into its input the joints that you wish to manipulate using the state
2. hit the “Promote Parameters” button on the computerigpose - this will promote the multiparm required by the rigpose to the interface of your custom HDA
3. add the kinefx__rigpose state to your custom HDA as described above

If you went through all of them and you still get the error, may I please ask for the scene so I can take a look ?

Cheers!
User Avatar
Member
18 posts
Joined: Jan. 2009
Offline
Image Not Found


With this minimal scene, still seeing “WARNING: Invalid op name network: Object op: kinefx__rigpose” on my console.

HoudiniFX 18.5.393 on a 2013 Mac Pro.

Attachments:
rigpose_test.hipnc (112.6 KB)

User Avatar
Staff
44 posts
Joined: Oct. 2019
Offline
Hi!

Right, so your HDA is supposed to be at SOP level rather than at OBJ level. So instead of making an HDA out of the geo container, collapse your network into a subnet and make that an HDA. I hope that helps!

Cheers!
User Avatar
Member
13 posts
Joined: Aug. 2011
Offline
Hi guys,

Sorry to post this here...
I'm doing hda for human fingers and it has multiple rigpose nodes for(fist,splay,relax.etc..)and i blend them to the original skeleton with skeleton blend.After that i have a rig pose node which is to give the user individual ctrl on each fingers and i want to expose only that rig pose node onto my hda.
so the problem that encountering is once i go to hda level its showing up all my rig pose nodes.

inside the hda

outside the hda


It would be great if some one could help me solve this issue as i just want expose and see only final rigpose nodE.
Thank you.
Cheers,
Ganesh

Attachments:
Screenshot 2021-03-25 20.07.03.png (779.4 KB)
Screenshot 2021-03-25 20.09.04.png (863.9 KB)

User Avatar
Member
41 posts
Joined: March 2008
Offline
Hi Gany,
Have a look as this video :
https://www.youtube.com/watch?v=UJG7KH_RG1Y [www.youtube.com]
If you follow these instructions there's an explanation on how to edit the python code of your HDA to make it behave as rigpose while allowing your asset to display just a specific rigpose.


For example if you want to just display "rigpose2" you would use this kind of code (around line 400)
        result = set()
        for n in posenodes:
            if n.name() == "rigpose2":
                crp_node = n.node("computerigpose1")
            else:
                continue
Edited by br1 - June 14, 2021 10:51:10
User Avatar
Member
13 posts
Joined: Aug. 2011
Offline
Hi Br1,
Thank you very much for the solution. After a bit of searching and asking ppl around i came up with a similar solution like the one you mentioned above. KineFx with python viewer states gives user endless possibilities for sure
But cheers for the solution.
Thanks,
Ganesh
User Avatar
Member
53 posts
Joined: Sept. 2018
Offline
Hey,

I have actually found an easier solution for disabling the visibility of the rigpose node within the HDA.
The only thing you need to do is to go to the node you want to disable, go to the settings tab, and create a new configuration in the 'Rig Visualizer' folder. Then you can deselect everything if you want it to disappear completely.
It seems like it's a new feature in Houdini 19.
Edited by wolskikrzys - Oct. 31, 2021 19:42:36

Attachments:
rigpose.PNG (22.4 KB)

User Avatar
Member
13 posts
Joined: Aug. 2011
Offline
wolskikrzys
Hey,

I have actually found an easier solution for disabling the visibility of the rigpose node within the HDA.
The only thing you need to do is to go to the node you want to disable, go to the settings tab, and create a new configuration in the 'Rig Visualizer' folder. Then you can deselect everything if you want it to disappear completely.
It seems like it's a new feature in Houdini 19.

Oya..That's Awesome!. Thanks for letting me know about this new feature.so we don't have fiddle around with KineFX ripose python state anymore
User Avatar
Member
8 posts
Joined: Feb. 2017
Offline
Just to piggyback on this a bit as its in the kinefx__rigpose realm.

I've recently moved a rig I was setting up from 18.5 to 19. There were a couple of issues with reparenting nodes, but I've been able to get those working.

Now I'm hitting this every time I try to select any of my controls on the HDA:



Traceback (most recent call last):
  File "/opt/hfs19.0.383/packages/kinefx/viewer_states/kinefx__rig_pose.py", line 886, in onInputRewired
    self._initialize(kwargs['node'])
  File "/opt/hfs19.0.383/packages/kinefx/viewer_states/kinefx__rig_pose.py", line 869, in _initialize
    self.setSelection()
  File "/opt/hfs19.0.383/packages/kinefx/viewer_states/kinefx__rig_pose.py", line 629, in setSelection
    'selection': sel
  File "/opt/hfs19.0.383/packages/kinefx/viewer_states/kinefx__rig_pose.py", line 770, in consumeSelection
    self.selections.clear()
  File "/opt/hfs19.0.383/packages/kinefx/python2.7libs/kinefx/stateutils.py", line 1117, in clear
    self._selections.clear()
AttributeError: 'list' object has no attribute 'clear'
  • Quick Links