Blender's Theoretical Muscle Rig System — Discussions & Ideas

I think you misunderstood, chipmasque - I would tend to agree with Toka and I don’t read their message as condescending - personal r&d is all well and good, and I do a lot of that myself (…I wouldn’t really say I code, but I explore and meddle with some different techniques), but at some point you have to try to bring the fruit of this research to your own client work, I mean why not ? Making a living in CG can be tiring enough already, and I can’t see why you wouldn’t be interested in going the extra mile in making your day job benefit from that research.

Anyway, I want to send all my money to Lukas Toenne now. I’m sure he can devise a nice muscle system. :slight_smile:

Hadrien

I am really sorry.

Perhaps I should have not posted while doing other tasks and taken a moment to think the wording more carefully. I wrote that they were impressive and commendable. As in really good work. But perhaps I should have been more clear. I will be much more careful with my words here in future.

I got the impression the thread was about the possible shape of an in built muscle solution within Blender and how it should be approached. I was just speaking from past personal experience.

Most people looking for an inbuilt muscle sim would need it to be an easily adaptable tool and to be able to fit it into a realistic animation pipeline. It’s true, I’ve not seen full blown muscle sims used in any small to mid scale productions I’m familiar with. And I have always normally always gone for a shape key driven method for the control and ease of use. I was trying to point out that whatever Blender adopts as a solution should be easily workable for most situations. It ideally should have the same ease of use as the armature system currently has. This would play to Blender animation tools main strength which is seems to be headed towards great potential for complexity but combined with great ease of use for artists.

The armature system as it is in Blender now seems quite unique to me and is very fast and robust in most cases. Seeing the incredible development in B Bones recently I’m wondering if they are the way to go for Blender for most things like this. Or something very like them that actually lives within the armature object itself. And as was pointed out, they can also be incorporated into Blenders automated rigging systems too.

Definitely is part of my plan, this isn’t just for the fun of it, I’d like to have this as a major tool in my kit. I’m already integrating the system into all my female figures even if explicit muscle reactions and/or definition are not a primary goal, and I’m in the process of adapting it to my male mesh as well. The tone of the comment seemed to be “yes that’s all well and good but if it’s not production-ready it’s not worthy of serious consideration.” New approaches (even if to older concepts) are never production-ready out of the box, and my work is still ongoing, but I see few other attempts to actually IMPLEMENT something. Even the thread title refers to “theoretical” systems. Talk is cheap. I’d love to see alternate ideas being developed, and those may be more efficient or user-friendly, but in a round-table chin-wag about the subject, I can’t see the value in discounting work done simply because it doesn’t appeal to another’s idea of a better way to do it.

Nobody has been discounting anyone’s work. Nor pointing out better ways. Just preferred ways in the past. These preferred ways have mostly been decided on and shaped by day to day working logistics, pipeline management needs and production time frames. Not to mention whats realistic and reasonable to ask of somebody’s own personal time and workload. The most important thing for me apart from trying to make things look as good as is possible, has normally just been that things just don’t brake. Or that when they do they are possible to quickly fix.

Surely what matters most of the time is not how it’s done but how it looks. It’s all of it an illusion. In the early days of creature CG the secondary movement was all animated by hand. Often still is.

And we are mostly all of us here, constant experimenters and tinkerers too I think.

Arghh, I had a long post ready to finish up that said, “OK, I get it,” but it very suddenly just vanished into the Internet aether. I hate that. In any case, more power to your “preferred ways” and your attitude that they are kings of the hill, no matter that they are currently theoretical, at least for Blender. I’ll just continue developing & actually using a working system, one that uses existing Blender tech and tools and does not invoke any need for new and as yet rather vaporous advancements, as I have since my earliest days with Blender.

Well I did just spend six long days last week working as a character TD in house. Two of them working until past midnight fixing a broken rig and pipeline. I’m always painfully aware of what can go wrong and the huge stresses and strains it can put on most people.

But I also love to experiment and have been pushing Blender in my own way, especially towards creature type work. I still hope to build things towards a short film. I don’t think I’ve become a total cynic just yet. But people often have different approaches and preferred ways of working, especially in creative fields. And peoples attitude can often understandably be shaped by working conditions and life experiences too.

Keep up the good work and keep above all keep experimenting and trying new things. Nobody is devaluing any of it.

THANK YOU HADRISCUS! Corrective Smoothing (CS) is da bomb (did I use that idiom correctly? I’m too old to tell lol), and I’m now incorporating CS into my first “production level” model. I only call it that because I will be doing extensive animated sequences with it, though I have been doing massive numbers of poses and renders throughout the development stages. The base mesh is straight from my Universal Figures generic female, adjusted to resemble Fay Wray (and other blonde bombshells I have crushes on lol) but otherwise nothing special. I’ll be adding a few more loops in the face region to help with expression details like forehead creases, but otherwise, exactly what I designed it to be, versatile and reasonably trouble-free.

In terms of stability, so far this muscle system has been a dream to use, since it relies SOLELY on established Blender tech – armature deformation of standard meshes using Transformation constraints for special purposes like specific muscular deformation and synergistic motions (as in the shoulder region), plus tweaks like the Corrective Smoothing modifier. In terms of animation, the system adds NO time overhead – I use a low-poly animation proxy as usual, and only address the muscle system once animation has been nailed, and then just to check for the occasional glitch like a trapped vertex or two. Hopefully the CS modifier will help there a great deal. By far more problematic and time consuming have been the necessary physics – Soft Body, Cloth & Hair (which is still not ready for prime time!), which are not only cranky but require constant baking and testing to fine-tune.

When it comes to implementing Muscle systems for Blender as the source-code level, I thought I saw a comment on these boards once saying that the main challenge would be the creation of a system that is fairly interactive while maintaining realism.

In a usual full-production case, a fully realistic muscle system needs a lot of computing time to fully calculate and as such you end up waiting for a while as it gets baked onto the animation.

So before a developer can even start on such a thing, you need to figure out whether you want a fully realistic system that is applied via non-interactive baking or a less realistic, but passable system that is fully interactive (depending on how far it can be pushed in that department).

A very good point, and in my case, passable and interactive are more than adequate. That’s why mine is a muscle emulation system, not a simulation. It uses existing tech to mimic muscle action and improve deformation and allow for simpler application of existing physics like Soft Body. But it is definitely still a muscle system, and it works, as the images I’ve produced illustrate.

A full-tilt simulation where physical and anatomical parameters and forces are embodied in the controls of specialized deformer tech is a very laudable goal, but, speaking metaphorically, does one need a Maserati to drive to the grocery store? And extending the same metaphor, such a vehicle for muscle simulation is bound to be very high-maintenance. If a Transformation constraint proves faulty, anyone can reset its parameters and move on, to use but one example of the benefits of using existing tech. But troubleshooting deeply-embedded code makes for many sleepless nights, I know, I’ve done some of that. My “VW” system is an animator’s solution, the “Maserati” is a coder’s solution.

In the long run, the choice Ace illuminates is a key decision, and it shows that there is not going to be a Swiss-Army-Sim solution to muscles in Blender. If a highly realistic sim is incorporated, it may very well put many Blender users out of the market so to speak, both because of its complexity and its technical requirements. Plus, the history of sims in Blender has shown that they are, to be fully honest, cranky as hell, horribly under-documented, and a source for great irritation in a production setup. This is not to say they are worthless; they are a stable of near-Maseratis that are wonderful to have available but not always the best solution for grocery shopping at the local Animations R Us.

OK, did I beat that poor horse to death, to abuse yet another metaphor? :wink:

That would be more the product of the longstanding design issues in Blender’s physics code than anything else, other 3D applications have very good simulation systems that are very intuitive, powerful, and reliable (see Houdini).

One of the purported 2.8x goals as of now is a complete overhaul of that system, so it may become much more of a joy to use once that is done. Though I will note that it still will probably not mean the possibility of having a realtime equivalent of Weta’s muscle simulation algorithms.

I do hope that “purported goal” is realized, but I have seen too many instances to the contrary in Blender development, in particular the hair system’s progress, or lack thereof. Hair has been around many years now and still no reliable collision – will a heavy-duty muscle sim also prove so problematic that it basically gets starved of attention? Give me “close enough and useable” any day.

One limitation when using the Corrective Smooth modifier: It will smooth shapekeys rendering them (nearly)useless. It’s not a problem if you use a vertex group to restrict the smoothing to specific areas. It’s best to do this anyways as different areas often need different factors and repeat levels.

Just something to be aware of.

It works very well with bone based rigging, but there can be some volume loss on the mesh if extreme factor and repeat levels are used. I’ve added some additional scaling for bones in those areas. I’m sure you have that under control already, Chip. Just thought I’d put my two cents in for anyone wanting to try it out.

Good luck!

Thanks, DanPro, always good to have pro information (yes, that was a pun). I noticed the volume reduction right off, but so far am using the CS mildly, less than 0.350 in most cases, and only 3 repeats. It’s like cooking with some spices, you can’t get too drastic or the dish is just ruinated. Ruinated!

And I never met a shape key that I liked, sooo… (just kidding).

Although using the Bind option seems to help in issues like that, no?

I don’t remember using that option nor can I recall why I settled on original over bind. I’ll need to do some more experimenting.

Can you describe what the difference is? The tooltip is not very helpful. :slight_smile: Maybe that is why I was having problems with shapekeys getting overwritten.

BTW, I’m not a fan of shapekeys either, but sometimes it’s the quickest way to get exactly what I want for an end result. After I’ve exhausted all other options, it’s my final tool in the shed.

I’m really new at this, like only today lol, so bear with me. As I see it, the Bind option lets you set a new target for the modifier to act from when doing its smoothing thing. So instead of the original mesh configuration you can specify a new one, say a frame from an animation, or in my case, a very weird situation: For some reason one portion of my Torso Muscle Layer had all its normals inverted, even after using Ctrl+N. When I flip these normals to conform with everything else (and make all my other modifiers work right), the CS modifier causes that portion of the mesh to buckle up and distort horribly. By trial & error I found that I can “Bind” the mesh to the modifier with the normals corrected, and it will accept it as it did the original, without distortion. Whether this Bind-ing includes active shape keys or not I cannot yet say.

Ironically my Ann Darrow model is one big ol’ Shape Key, built on my generic female mesh. That way I can recover portions that I mess up in trying to do a semi-portrait. They do have their uses, just not for expressions and correctives in my system. Interestingly, the CS modifier did not screw with that shape key much at all, actually helped clean up the face rig’s work a little.

I just did some more testing. It looks like I was using the wrong method all along. I did my bind while the rig and mesh where in a default state. The smoothing is not as strong, (nor is the volume loss, so that’s not all bad) but I can still apply shapekeys without them being smoothed over like the original coord option did.

I appears that original coords will keep trying to apply the smoothing every time the mesh is updated, regardless if it is by applying a shapekey or just moving a bone in the rig. The more extreme the rotations or movement, the more it tries to smooth the mesh and re-apply the details from the meshes original state.

Next up, I want to test some drivers on the factor and repeat values to see if I can come up with some good deformations at extreme poses. Maybe having it increase those values on a nonlinear curve will reduce the need for any corrective shapes, or at least reduce the number needed.

The ability to bind the mesh at any point has a lot of possibilities as well. I’ll need to look into those situations too. Maybe stacked corrective mods with drivers?

Even if my testing does not result in anything new, at least I know I can add the corrective smooth mod back into my workflow for characters that use shapekeys.

Thanks, Chip!

You just love playin’ with fire, eh? :smiley: Actually that is a very good idea, as the ability to exert dynamic control over the smoothing would be very useful.

I also stuck a CS mod in the stack for my Ann’s gown, to see how it plays with the Cloth sim. Turns out it is useful there as well, for things like modeled seams (I use 3 closely adjacent loops with the center one being recessed a bit into the mesh). Cloth will frequently disturb these loops in a less-than-desirable fashion, and CS helps tame the distortions. I will also try applying it differentially using vertex weighting to see if I can preserve these seams over the entire extent of the cloth deformations, while retaining the majority of cloth results.

And you are quite welcome, happy to return a favor to the community.

I don’t have any more reports for the Corrective Smooth Mod, but I have been playing with the new bendy bone options released today.

http://download.blender.org/release/Blender2.78/

It has a lot of possibilities for parts of a muscle system, not to mention a lot of simplification when using b-bones for all other projects. I like the new features and will find a use for them. (Belts/straps come to mind.) Being able to use a location constraint that follows the curve of the bone is cool.

The only downside to these changes have nothing to do with the new options, it has more to do with limitations on other constraints, namely the Action Constraint. I was hoping that the curve offsets, roll and easing values would be usable with an action constraint, but Action Constraints still only read transform channels only.

Action Constraints need some new love. I’m not sure why we are not able to drive any keyframe value that is located within the armature (any bone or constraint property) with an action constraint.

I was able to create drivers to control the new bendy bone properties, but that has it’s limits too. You can’t stack multiple drivers onto a single property. (Again, this could be fixed if we could drive those values with Action Cons.) More than likely, you’d want to have multiple controls affecting the same values on the bendy bones. That’s not possible yet until some other constraints are updated to allow that possibility.

Think for a minute on how an arm moves with all of the muscles. The new bendy bone option will allow you to make a bone for every muscle group and control how those muscles stretch, compress, expand and twist. ( It also allows a custom rest pose for the bones, bent and twisted anyway you wish.) But, this needs to be done manually because the other constraints can’t access those new values and properties.

I tried a copy transforms constraint to see if I could transfer the new properties to a different bone, but it did not update those values. Transfering those values with a transforms constraint would be a step backwards anyways, IMHO. The point of the new bendy bones was to simply how b-bones worked and give more direct control without having to parent a bone to the head and tail to get that bone to bend and twist the way we want it too.

Anyways, just some tests and things I’ve been playing with. Something to look into.

Good luck!

Edit: Here is a test file for 2.78 if you have it. Trying to figure out a eyelid rig. I had to hand animate all the “bendyness”.

Attachments

BendyBones.278.blend (1.06 MB)

I haven’t tested the new bendy bones yet but isn’t that just a matter of setting two variables and writing a short expression mixing those two variables ?

This is sounding very promising. Can’t wait to start looking into the new bendy bones myself once I get the time.

As soon as I saw the first demos at last years conference I just thought the rigging potential and the infinite uses and combinations possible could be huge. And the best thing is it looks to be developing into such an adaptable and flexible system. So you have the potential to build a control chain… a bone joint deform chain … and a muscle and secondary movement deform chain. All from the same basic building blocks and tool set. This would be fantastic.

Also being able to have as many divisions as needed per bone. But then only need to worry about one envelope for each bone. After years and years of smooth enveloping multiple twist bones in so many other scenarios this is going to be a godsend.