Jump to content

FEM muscle external geo, Physical simulation

Recommended Posts

Hi everyone,


I started playing with muscle related features in H16 and it looks great so far. But i am not sure is workflow i want to achieve right way to go.

I am interested in custom poly modeled muscles, converted in FEM and simulated like that.

I spent lot of time working with Ziva FEM muscle system for maya, and i wonder if similar workflow is possible here.


Is possible to pin key muscle points to animated bones or other muscles, and have rest of the muscle simulated?

I would like to avoid generated muscle rig for input animation and use Physical Simulation mode.


Any tips? Picture should better describe what is my aim.

Later i would like to use low res simulated muscles to drive hiRes muscle geo, that will deform fascia / skin layers.







Share this post

Link to post
Share on other sites

there are currently a couple of options you have for using your custom models as muscles.

but first, it's important to note that rather than pinning points explicitly, we've decided to deploy control over the muscles with the notion of using a "rig" instead.  In Houdini16, Muscle Rigs and Muscle Pins can be used to "capture" regions of your muscle geometry and parent them to objects and bones in your character rig.  This provides you with a quick and easy set of tools in the same context as the rest of your character. The rig remains agnostic to the geometry making up your muscle.  This means you're able to model and remodel the muscle geometry without invalidating any of your constraints.

On the other end, your Muscle Rigs and Muscle Pins will seep constraint data into your custom modeled muscle as it's converted to a tetmesh so that the FEM solver can manipulate your geometry properly.  

The two ways you can bring external models into the muscle system are:

The Muscle shelf tool (riggedmuscle object node) creates a muscle with built-in geometry and a single, self-contained muscle rig.  This is adequate for most "bicep-style" muscles.  On the Geometry tab, the Build parameter can be switched to use External Geometry.  Once you've toggled that, you can specify the path to the geometry you want to use as your muscle.  Keep in mind that it will be captured and deformed by the single built-in rig.

The second way is to use a FrankenMuscle.  FrankeMuscles allow you to mix together any number of geometry sources with any number of Muscle Rigs and Muscle Pins to create a new custom muscle creation to suit your needs.  Here you can use multiple muscle rigs to attach your muscle to your character rig.  And because the system has this layer of separation between your muscle geometry and the solver, you can add, remove, or change your muscle rigging if you're not getting the desired results right away.


-it's also worth noting that the muscle rigs have built-in variable jiggle and "fake" volume preservation for additional artistic control.  This means your custom models can instantly have access to those features as well as soon as you string a muscle rig through them.



Share this post

Link to post
Share on other sites

John, thank you for reply and making these things clear.

So far i am still goofing around with different approaches and trying to find something that i am used to, so i was not sure is "my way", right way to go.

I will try with Franken muscles cluster as input, and see what i can get with that.

So far i just used one single muscle as rig for my custom shaped muscle, but that was far from what i need. It can work for some muscles, bicep and such, but for multy point attached muscles like pectoral muscles, it cant.

Also i managed to make "Ziva" way to work, with FEM muscles, and animated target geometry as input, but that was too much work to do per muscle, and a bit slow to calculate imho.


Thanx for help.



Share this post

Link to post
Share on other sites

I continued testing muscle / tissue system but now i have some new questions if someone with more experience can answer me.


First one is pretty strange. And it's about warning that i get if i reopen scene with Frankeen muscle, that give me message like this :

Problem with schronizing child node: Skipping unrecognized parameter "createvarmap" inside connectivity1 node in frankenMuscle.

Looks like some parameters are lost after scene is closed, and houdini cant find them on reopen.

Scene after that start getting really slow, and usually cant rebuild muscle properly... So it's kind of a problem to continue working on same setup.


Other thing that is somehow strange to me is that solve is slowed at least 20 times, if not more, if you have bone object inside tissue simulation.

Maybe i am doing something wrong. But i would not expect to get that much of slowing down in simulations like this. One physical muscle, in tissue solve... i get 60 fps solve. twice realtime.

If i add just one bone object in tissue sim, it takes 2-3 seconds per frame...


Here's simple scene that will recreate both problems...

If i open this, i will get 'ceatevarmap' warning...

second, if you toggle, 'include bones' in tissue solver, you can see difference in solve time.

Someone had same problems with this so far?






Share this post

Link to post
Share on other sites

I didn't get the ceatevarmap warning when I opened the file.


Adding bones slows the simulation down substantially for a few reasons.

One is that the static solver is now being used and there is one more then object in the simulation so collision detection is happening.

Two is that the bones are using a deforming geometry being recreated for each substep(worst case scenario) for collision detection, if you go to tissue_solver/dopnet1/BONES and uncheck "Use Deforming Geometry" things speed up a bit, and if you change "Collision Detection" to Use Surface Collisions it really speeds up, however if you were using a full skeleton and muscle system this would likely be much slower to solve.

Share this post

Link to post
Share on other sites

Is there any way to enforce Franken or standard muscles to follow already baked animation from alembic and external file ( anim done in Maya ) ?


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