Setting keys on parmTuple...
1972 10 0-
- kriegmesser74
- Member
- 41 posts
- Joined: May 2021
- Offline
-
- tamte
- Member
- 8723 posts
- Joined: July 2007
- Offline
-
- kriegmesser74
- Member
- 41 posts
- Joined: May 2021
- Offline
-
- tamte
- Member
- 8723 posts
- Joined: July 2007
- Offline
I'm not sure if there is such function already, but should be pretty straightforward
following is just a quick mockup, should work for parms and parm tuples
following is just a quick mockup, should work for parms and parm tuples
def setKey(parm): if type(parm) == hou.ParmTuple: parm_tuple = parm elif type(parm) == hou.Parm: parm_tuple = (parm,) else: return 0 for parm in parm_tuple: key = hou.Keyframe() key.setFrame(hou.frame()) key.setValue(parm.eval()) parm.setKeyframe(key) return 1 parm = hou.parmTuple('/obj/geo1/r') setKey(parm)
Edited by tamte - Aug. 5, 2021 10:51:16
Tomas Slancik
FX Supervisor
Method Studios, NY
FX Supervisor
Method Studios, NY
-
- kriegmesser74
- Member
- 41 posts
- Joined: May 2021
- Offline
Well again thanks a LOT... in my case code looks like this:
...#Other parameters and objects bla bla bla
...#Let's focus on this one only
Object = hou.node('/obj/L_UpArm_FK_CTRL/')
Object_parameter = Object.parm('/obj/L_UpArm_FK_CTRL/rx').eval()
...#Time to key some stuff
Current_Time=hou.intFrame()
myKey= hou.Keyframe(Current_Time)
Frame_Backwards=Current_Time-1
hou.setFrame(Frame_Backwards)
Object_parameter.setKeyframe(myKey)
Aaaand I get "AttributeError: 'float' object has no attribute 'setKeyframe'"
S**T ... This same approach works for BlendParents node's sliders... keys are created at a proper frame on timeline but on rotations looks like a bug to me... please tell me that I'm wrong...
...#Other parameters and objects bla bla bla
...#Let's focus on this one only
Object = hou.node('/obj/L_UpArm_FK_CTRL/')
Object_parameter = Object.parm('/obj/L_UpArm_FK_CTRL/rx').eval()
...#Time to key some stuff
Current_Time=hou.intFrame()
myKey= hou.Keyframe(Current_Time)
Frame_Backwards=Current_Time-1
hou.setFrame(Frame_Backwards)
Object_parameter.setKeyframe(myKey)
Aaaand I get "AttributeError: 'float' object has no attribute 'setKeyframe'"
S**T ... This same approach works for BlendParents node's sliders... keys are created at a proper frame on timeline but on rotations looks like a bug to me... please tell me that I'm wrong...
-
- tamte
- Member
- 8723 posts
- Joined: July 2007
- Offline
-
- kriegmesser74
- Member
- 41 posts
- Joined: May 2021
- Offline
Yes, i tried that. it works, but it copies/pastes current keyframe number on the timeline AS a new value for rotation... for example my time slider was on frame number 19 and my "new out of nowhere" rotation was 19... what a madness... do I need to set value with object_parameter as value? How would that look? myKey.setValue(object_parameter) maybe?
EDIT no. 1
YES! myKey.setValue(object_parameter) does the job!
Now the next thing arises... since I'm typing lazy (aren't we all) can I use parmTuple as a variable for setting value of a keyframe? Or to stick with "one by one" style?
Man I wish you are closer... I would buy you a six pack, or a Jack or something...
EDIT no. 1
YES! myKey.setValue(object_parameter) does the job!
Now the next thing arises... since I'm typing lazy (aren't we all) can I use parmTuple as a variable for setting value of a keyframe? Or to stick with "one by one" style?
Man I wish you are closer... I would buy you a six pack, or a Jack or something...
Edited by kriegmesser74 - Aug. 5, 2021 13:31:09
-
- tamte
- Member
- 8723 posts
- Joined: July 2007
- Offline
No hou.Keyframe can have just a single value
And as mentioned to use setKeyframe on ParmTuple using tuple of values is possible only since 18.0
But you can easily make function that works on tuples as shown here
https://www.sidefx.com/forum/topic/80258/?page=1#post-344889 [www.sidefx.com]
Which currently would key current values at current frame, but can easily be extended to specify value or even frame if needed
And as mentioned to use setKeyframe on ParmTuple using tuple of values is possible only since 18.0
But you can easily make function that works on tuples as shown here
https://www.sidefx.com/forum/topic/80258/?page=1#post-344889 [www.sidefx.com]
Which currently would key current values at current frame, but can easily be extended to specify value or even frame if needed
Edited by tamte - Aug. 5, 2021 13:50:30
Tomas Slancik
FX Supervisor
Method Studios, NY
FX Supervisor
Method Studios, NY
-
- kriegmesser74
- Member
- 41 posts
- Joined: May 2021
- Offline
Cheers man... thanks a lot... writing functions for setting keys is still beyond my skills in Python... I'm an old MEL Maya guy... this whole hou.blabla thing is sooo... cumbersome... IMHO... I didn't know that one cannot keyframe a value and that parameter won't be updated accordingly... here as it seems one keyframes parameter and updates values... well... sigh...
![](/static/djangobb_forum/img/smilies/sad.png)
-
- tamte
- Member
- 8723 posts
- Joined: July 2007
- Offline
one you get hang of it its not that difficult
just paste that function definition into your file and then whenever you need to set a key on parm or parm tuple do:
setKey(myParm)
or
setKey(myParmTuple)
as last 2 lines show, it will set a key at current frame and current values
just paste that function definition into your file and then whenever you need to set a key on parm or parm tuple do:
setKey(myParm)
or
setKey(myParmTuple)
as last 2 lines show, it will set a key at current frame and current values
Edited by tamte - Aug. 5, 2021 15:25:47
Tomas Slancik
FX Supervisor
Method Studios, NY
FX Supervisor
Method Studios, NY
-
- kriegmesser74
- Member
- 41 posts
- Joined: May 2021
- Offline
Well the main reason for all of this mumbo-jumbo with Houdini Python etc. is Houdini's Muscle system, I have a great model of a character (an Orc) in proper T pose (still in retopology phase, but not far from finish)... I could finish it in Maya (full body IKFK switch/match, muscles, facial rig etc.) but Maya's muscles are a bit... obsolete... If I'm particularly lazy I could kick it in Motionbuilder and just add a layer of muscles... but in my twisted mind that feels like cheating. So since you have (obviously) much more mileage in Houdini than me I would appreciate your opinion on torso muscles setup. Is anatomical skeleton (i.e. ribs, clavicles, shoulder blades models) "a must have" before setting up torso muscles, or a bunch of strategically placed and parented nulls can do the trick, or some approximation of a rib cage made of Houdini's bones will suffice? Everywhere I look everyone just makes legs, or arms or some quadrupeds... is torso really that scary?
-
- Quick Links