Jump to content
ForeverMovement

Muscles, and how to get them...

Recommended Posts

Hello all, 

   I've been searching around for a while and I can't seem to find much on muscle simulation that doesn't already have a rig that was made in Houdini. The animation I have is from Maya, so I can bring in the cached and cleaned geo no problem. But I do need the rig to be able to attach muscles to the model to be able to move with it. It seems counter intuitive to bring in cached geo just to make a rig ontop of it, with the added problem of attaching it to the already moving skin. I might also not be looking at it properly, so it comes down to this; Does somebody have a good workflow for getting muscles to move with the cached geo in Houdini, or how to export an animated skeleton from Maya to Houdini?  

 

I'm properly confused, even documentation help would be good at this point, maybe a secret blog post somewhere

Share this post


Link to post
Share on other sites
8 minutes ago, kleer001 said:

Yes, I've watched both masterclasses on the subject but my rig comes from maya, and I can't find a lot of helpful stuff of how to get those rigs out with the animation and imported into Houdini. The amount of stuff that exists out there doesn't seem to be much, but I know theres a blog post buried somewhere with the information haha. 

Share this post


Link to post
Share on other sites

How are you bringing in your mesh animation? Is the topogy changing? Are you creating Locators for each bone's ends?

That'll get you muscle anchors which you can offset from them for more defined muscle attachment.

 

Here's a dead simple example attached. (just follow the muscle displace shelf instructions)

 

muscleTest.hip

Share this post


Link to post
Share on other sites

I guess a better version of my question would be then how would I get locators onto my rig in maya to export? Just constraining them to the joints and saving them out as an fbx? I can get the mesh out just fine, nice and clean in either an allembic cache that can get unpacked or fbx if I wanted to bake the animation instead of cache. But I can't figure out a way attach the muscle over moving geometry if I only have the geo. 

Share this post


Link to post
Share on other sites

Iirc exporting locators from Maya was a bit iffy (I don't have Maya in front of me but I vaguely recall there being issues). Off the top of my head there are two ways to get info out from Maya:

1. Constraint some geo to the rig and export it as an alembic. Then in Houdini you can simply load that geo (or alternately load in its transforms) and parent muscle handles to that. 

2. Export an FBX and load it in using the agent node. You can then unpack the agent rig using the agent unpack to get the skeleton transforms as points.

Kinda leaning towards 2 myself; you get points with an orient and a bone names which are all pretty handy.

Share this post


Link to post
Share on other sites
10 hours ago, jujoje said:

Iirc exporting locators from Maya was a bit iffy (I don't have Maya in front of me but I vaguely recall there being issues). Off the top of my head there are two ways to get info out from Maya:

1. Constraint some geo to the rig and export it as an alembic. Then in Houdini you can simply load that geo (or alternately load in its transforms) and parent muscle handles to that. 

2. Export an FBX and load it in using the agent node. You can then unpack the agent rig using the agent unpack to get the skeleton transforms as points.

Kinda leaning towards 2 myself; you get points with an orient and a bone names which are all pretty handy.

Perfect, an agent node, so I was going in the right direction but I seem to hit a problem with it's import. Through a file node it will load only the mesh in it's rest pose. Through an agent node it will load the rig(almost success!) but then it will collapse the skin to the hip joint of the skeleton as seen on the first photo. Should I be baking the animation to the skin or the joints before taking it out through .fbx? I figured if it's bringing in animation through the rig it would be fine. 

dinohalp2.PNG

dinohalp1.PNG

Share this post


Link to post
Share on other sites

mm.. I think the safest option would, as you say, be to bake out the skin deformation before exporting the fbx (been a while since I looked at exporting fbx's). Should fix most weirdness hopefully :)

Share this post


Link to post
Share on other sites
10 hours ago, jujoje said:

mm.. I think the safest option would, as you say, be to bake out the skin deformation before exporting the fbx (been a while since I looked at exporting fbx's). Should fix most weirdness hopefully :)

Thanks for the advice, I have tried to both cache and bake the animation before exporting remembering to make the values keyable. Even with just exporting the skin or trying to it doesn't want to work. So I'm pretty lost. I think it may be because of how the rig is developed, with a weird use of joints. In any case, I have the Maya scene here with just the rig if it helps anybody. I'm just stuck on it, I need to find a way to do muscles with just the moving geo, if that's at all possible. 

tresxwalkcycle.mb

Share this post


Link to post
Share on other sites

Glad to atleast have an update. I managed to rip the rig out of Maya but when cleaning it only has the points, which is fine but I am again stuck. I'm happy they're both in there but now I don't know where to really go. Do I merge them together and pray? So then to pin the muscles to those points is there a way that I could connect the end muscles to points so it will actually move with the geo? I've used and abused the shelf tools and I still can't figure it outttt. 

dinohalp1.PNG

dinohalp2.PNG

Share this post


Link to post
Share on other sites

It might be worth exporting just the skin as an alembic.

Wrt to connecting the muscles, the general idea is that you attatch it to the points. I've attached a quick example which uses the agent node to load the skeleton transforms as points and uses the rivet node to attach the muscle to those points. Basically we prep the points by:

1) Load the joints from the fbx using the agent node
2) Rename the joints to something more reasonable and get rid of points we don't need. The joint name is in the @agenttransformname attribute.
3) Create a @N and @up attribute from the quaternion provided by the agent node.
4) Create a group from each @agenttransformname attribute using the partition node.

Then we have our points with groups and orientation. We can then simply use the rivet SOP to fetch the correct point and use it to attach the muscle. 

There are probably better ways of doing this (CHOPs and/or Python), but this was seems pretty straightforward and direct. Hope that helps :)

 

dino.zip

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×