How to use "poseblend" autorig component?

   1689   18   3
User Avatar
Member
373 posts
Joined: 6月 2023
Offline
https://www.sidefx.com/docs/houdini/character/kinefx/rig_components/poseblend.html [www.sidefx.com]

It says:

It’s necessary to add the pose deltas as well as blend shape geometry in separate shapes, as defined by the pose_shape and blendshape_name parameters

It's... just too vague. Does it mean I have to add something into the packed folder along side Base.skel? In what format? Is there an example that uses this poseblend component?
User Avatar
スタッフ
48 posts
Joined: 10月 2023
Offline
The Toucan example uses this for the wing open and closed pose.
User Avatar
Member
9 posts
Joined: 5月 2019
Offline
william_harley
The Toucan example uses this for the wing open and closed pose.

Hello, first, let me say that your tutorials and example files are very helpful. Thank you and SideFx team for those, truely.

But I was diving into the toucan scene file, and I didn't find it using "poseblend" auto rig component. Only the blendshape component. Also didn't see the rig to have a wing open/close functionality? Maybe I missed something, but I really checked...
User Avatar
Member
373 posts
Joined: 6月 2023
Offline
michaelyang0627
william_harley
The Toucan example uses this for the wing open and closed pose.

Hello, first, let me say that your tutorials and example files are very helpful. Thank you and SideFx team for those, truely.

But I was diving into the toucan scene file, and I didn't find it using "poseblend" auto rig component. Only the blendshape component. Also didn't see the rig to have a wing open/close functionality? Maybe I missed something, but I really checked...

Yeah, I checked as well. The wing open/closed rig doesn't seem to be there. It's in the demo

william_harley
The Toucan example uses this for the wing open and closed pose.

Could you please check if the wrong file was uploaded to content library?


Rig from demo video:



The rig from demo video has AbstractControl for wing open/close. But they're missing in the rig from content library:

Edited by kodra - 2024年7月20日 07:52:02

Attachments:
Screenshot 2024-07-20 194940.jpg (184.0 KB)
Screenshot 2024-07-20 194951.jpg (106.6 KB)

User Avatar
スタッフ
48 posts
Joined: 10月 2023
Offline
Ah, sorry about the confusion. It does indeed look like the pose blend wasnt included in the toucan. I will see if we can get that added to the example.
User Avatar
Member
9 posts
Joined: 5月 2019
Offline
Thank you. Also, will the steam engine rig showcased in Hive be uploaded in the content library in the future as well?
I would like to dig into that and understand how the collision was setup.
User Avatar
スタッフ
653 posts
Joined: 8月 2013
Offline
Hi all, I'll try to update the example soon.

This was left out somehwat intentionally to get it out quick. The rig was updated between our demo shots and preparing it for the content library, which broke the poses and blend shapes. I'll have to regenerate both again and add them to the example.
Edited by KaiStavginski - 2024年7月22日 09:30:27
Kai Stavginski
Senior Technical Director
SideFX
User Avatar
Member
9 posts
Joined: 5月 2019
Offline
KaiStavginski
Hi all, I'll try to update the example soon.

This was left out somehwat intentionally to get it out quick. The rig was updated between our demo shots and preparing it for the content library, which broke the poses and blend shapes. I'll have to regenerate both again and add them to the example.


Thank you for the swift response
Following up on another question, are there plans to upload the steam engine rig to the content library in the future as well?
User Avatar
Member
529 posts
Joined: 8月 2019
Offline
Well... it seems to take a lot of time to update the example file. Could someone brieftly share how to use poseblend component?

Here is my attemp to make it work (and failed).

Edited by raincole - 2024年7月29日 15:28:40

Attachments:
poseblend.hiplc (373.9 KB)
Screenshot 2024-07-30 032808.jpg (94.2 KB)

User Avatar
Member
529 posts
Joined: 8月 2019
Offline
I briefly checked how poseblend is implemented and it takes the pose shape's t, rand sattribute??

How are we supposed to generate such a pose shape... I don't think either Rig Pose or APEX Scene Invoke output these. They output transformin world space. What's the intended workflow?
Edited by raincole - 2024年7月29日 15:42:26
User Avatar
Member
9 posts
Joined: 5月 2019
Offline
raincole
I briefly checked how poseblend is implemented and it takes the pose shape's t, rand sattribute??

How are we supposed to generate such a pose shape... I don't think either Rig Pose or APEX Scene Invoke output these. They output transformin world space. What's the intended workflow?

I don't know if this will help, or if it's relevant. (I haven't use poseblend either)But rig pose can output t,r,s attriubutes. In the settings tab, you can turn on "Output Parameters as Attributes"
"When turned on, the node will output the selected Translate, Rotate, Scale and Pivots parameters as vector attributes on the points."
User Avatar
Member
529 posts
Joined: 8月 2019
Offline
michaelyang0627
raincole
I briefly checked how poseblend is implemented and it takes the pose shape's t, rand sattribute??

How are we supposed to generate such a pose shape... I don't think either Rig Pose or APEX Scene Invoke output these. They output transformin world space. What's the intended workflow?

I don't know if this will help, or if it's relevant. (I haven't use poseblend either)But rig pose can output t,r,s attriubutes. In the settings tab, you can turn on "Output Parameters as Attributes"
"When turned on, the node will output the selected Translate, Rotate, Scale and Pivots parameters as vector attributes on the points."

Oh.

Ohhh.

Thank you. Now it works. My above file is (almost) the proper way to use poseblend component. I just need to turn on "Output Parameters as Attributes".

However it's not the end of story. pose_shape work,s but not blendshape. :S

Actually, it looks like that poseblend uses sop::blendshapes instead of setting the skeleton's blendshape channels; therefore even if I could make it work, the result can't be exported to a game engine or something... it'd be a Houdini-only rig.
Edited by raincole - 2024年7月29日 17:56:46

Attachments:
poseblend.hiplc (382.8 KB)

User Avatar
Member
529 posts
Joined: 8月 2019
Offline
Any... update...?
User Avatar
Member
7855 posts
Joined: 7月 2005
Offline
Kai's on vacation so it'll take a while to return to this. Just to address the "the result can't be exported to a game engine or something... it'd be a Houdini-only rig" comment: This is true in general for any APEX rig, and any rig in a DCC that use custom deformations.
User Avatar
Member
9 posts
Joined: 5月 2019
Offline
edward
Kai's on vacation so it'll take a while to return to this. Just to address the "the result can't be exported to a game engine or something... it'd be a Houdini-only rig" comment: This is true in general for any APEX rig, and any rig in a DCC that use custom deformations.

Thank you for the update, can you also shed some light on my previous question,
are there plans to upload the steam engine rig to the content library in the future as well?
User Avatar
Member
7855 posts
Joined: 7月 2005
Offline
The steam engine rig is rather complicated so we didn't post it because there would need to be a lot of effort to clean it up before its comprehensible. And even then, we didn't feel it added anything new in terms of of showing off the concepts that the other examples didn't already provide.
User Avatar
Member
9 posts
Joined: 5月 2019
Offline
edward
The steam engine rig is rather complicated so we didn't post it because there would need to be a lot of effort to clean it up before its comprehensible. And even then, we didn't feel it added anything new in terms of of showing off the concepts that the other examples didn't already provide.

I was in particular curious about how the collision part is done. everything else is quite clear from dissecting other example files.
In this case can you tell us more about how it was done? thank you.
Edited by michaelyang0627 - 2024年8月12日 10:18:54
User Avatar
スタッフ
75 posts
Joined: 5月 2021
Offline
I used various triangular math function to create the setup. Both for the lower and the upper moving gearing elements.

Its a bit hard to describe but I hope the text below helps to get a better idea of the process.

The lower gearing compares the difference in length of the adjectant side of a triangle from the lower gearing joint to the connecting point on the wheel and to the point parallel to the start point. We know that our elementat can not change lengths so we always know how long the hypothenus of that triangle needs to be. We also always know here the end point of our gear will be since we have a control there that sits exactly at that position. if i know calculate a triangle with exactly the same hypothenus lenght and the given height deduced from our point going through that new upper position i can automatically calculate the length of the adjectant and add that to the current position of my lower gearing.

Our lower gearing is not properly moves the piston pointing up to our upper gearing since we have an aim there.

That already gives us a lot of info to calculate new positions to based on triangles again. Based on the root position of piston pointing upward and the position of the middle pivot we can first calculate the angle that the piston is currently at. We also now the rest positions of out upper gearing elements. We calculate now the vertical distance of our middle pivot point to the upper gearing, with thoses positions. The angle and the hight allow us to calculate the distance the upper gearing would move if it would be 'glued' to the upper gearing.

Next we take the direction of the movement into account. We can calculate the direction based on the cosine of your weel rotation.

The offset behavior which represents the collision behavior is set up based on and if-else setup. We use the min and max positions that our upper gearing could be and that if-else setup together with the direction. So if your piston moves in the forward direction and is moving beyond a given max value we need to move our upper gearing along, otherwise it doesnt move for example. You can also calculate those min and max position automatically based on triangular math if you want to be fully procedural and adaptive to your pivots. For time reasions i simply positioned them by hand.


So all the math described here is based on pivots and rest pivots and one rotation value from our main control. This gives us the advantage, that you can very nicely change the proportions of elements in your model and the rig can adapt to those new proportions.
User Avatar
Member
9 posts
Joined: 5月 2019
Offline
esttri
I used various triangular math function to create the setup. Both for the lower and the upper moving gearing elements.

Its a bit hard to describe but I hope the text below helps to get a better idea of the process.

The lower gearing compares the difference in length of the adjectant side of a triangle from the lower gearing joint to the connecting point on the wheel and to the point parallel to the start point. We know that our elementat can not change lengths so we always know how long the hypothenus of that triangle needs to be. We also always know here the end point of our gear will be since we have a control there that sits exactly at that position. if i know calculate a triangle with exactly the same hypothenus lenght and the given height deduced from our point going through that new upper position i can automatically calculate the length of the adjectant and add that to the current position of my lower gearing.

Our lower gearing is not properly moves the piston pointing up to our upper gearing since we have an aim there.

That already gives us a lot of info to calculate new positions to based on triangles again. Based on the root position of piston pointing upward and the position of the middle pivot we can first calculate the angle that the piston is currently at. We also now the rest positions of out upper gearing elements. We calculate now the vertical distance of our middle pivot point to the upper gearing, with thoses positions. The angle and the hight allow us to calculate the distance the upper gearing would move if it would be 'glued' to the upper gearing.

Next we take the direction of the movement into account. We can calculate the direction based on the cosine of your weel rotation.

The offset behavior which represents the collision behavior is set up based on and if-else setup. We use the min and max positions that our upper gearing could be and that if-else setup together with the direction. So if your piston moves in the forward direction and is moving beyond a given max value we need to move our upper gearing along, otherwise it doesnt move for example. You can also calculate those min and max position automatically based on triangular math if you want to be fully procedural and adaptive to your pivots. For time reasions i simply positioned them by hand.


So all the math described here is based on pivots and rest pivots and one rotation value from our main control. This gives us the advantage, that you can very nicely change the proportions of elements in your model and the rig can adapt to those new proportions.

Thank you for the explanation, it's definitely helpful. I had thought originally that the collision behavior is base on some other kinds of collision detection dynamics.
  • Quick Links