XSI.FIE.US

FIE Muscle System 2

Introduction

Skinning - An abstract term used to describe the process of binding a given skin (3d model) to an underlying armature system (rig). i.e. "I just skinned the model to the rig" or "the skinning on the rig could use some tweaking. I see some creasing I don't like" or "that skinning job is really rubbery"

note: Maya users may be familiar with the term "skinning" from maya. The meaning is a little different here. skinning in maya is used to describe a technique known as "matrix pallette skinning." In XSI, the same technique is called "eveloping." I have seen other programs refer to the whole shebang as an "Armature." Matrix Pallete skinning is a type (Class) of skinning. When I use the term I mean the abstract base class of skinning as defined above, not matrix pallete skinning. I will refer to matrix pallete skinning in short as "enveloping"

note: I like the term "armature" to refer to an abstract notion of a rig. My time at the jim henson company has given me a good appreciation of the word as well as the craft of puppety from which 3d animation pulls so much.

note: that last example usage is a nod to Todd Akita who called some of my early enveloping attempts rubbery. In otherwords, there were too many smooth influences and the whole area had little definition when it bent to the point that it looked kinda like rubber.

FIE Muscle System 2 is the next major revision to the FIE Muscle System. With the first version, I developed what I call a "muscle mini rig" and an easy way to create it from a single curve. The mini rig is self contained and latches onto any arbitrary rig as part of the creation process. I was very happy with this toolkit and still am. The mini rig works well, technically speaking, with a number of different skin binding techniques. However, the workflow for accomplishing a good skin binding on a final production worthy rig could be optmized better.

There are a number of ways to skin a muscle system rig. Some are similar to enveloping. Others are flesh simulations of varying types and complexities. Some simpler techniques are used to create effects in localized areas of a skin. An example of a localized effect would be a skin slide driven by a shrink wrap deformer in XSI.

While the toolkit supported all of these techniques technically (they all worked and a production quality rig could be built on a reasonable timetable), the tookit did not even attempt to optimize this workflow.

In my own experiences working with muscle system rigs with the toolkit, I've found that the most time is spent iterating in the following way:

  1. Make changes to the underlying muscle system
    1. delete muscles
    2. create muscles (often more than you delete)
    3. configure muscles
  2. Skin the rig
  3. Test the changes
  4. Unskin the rig
  5. Goto step 1

The toolkit creates muscles really well. But all the other steps in this process can often be tedius as XSI is optimized for enveloping as a rigging solution. Other skinning techniques are not nearly as optimized. For example: envelope weights can be exported as a preset and brought back in to a new envelope defomer. New deformers can be added to an envelope dynamically. However, the same can not be said for multiple cage deforms with different objects taking part in the different deformations. The result of this, is that the rigger must recreate new cage deforms and select the deformers for the new cage deforms, each time they re-skin. The cage deform attributes must then be set again. They are not saved. This results in quite a bit of tedium.

I have come up with a few feature ideas on how to accelerate this type of process procedurally. FIE Muscle System 2 is a complete rewrite of the muscle system toolkit to attempt to address the iteration cycle above.

  • It will create an abstract system for skinning that can be expanded to many different types of skinning.
    • It will implement a system for skinning via cage deforms
    • it may implement a system for skinning via Syflex 3, if I can get my hands on Syflex 3.
  • It will support multiple muscle types
    • it will implement a "SimplePolyMuscle" (the muscle rig from version 1)
    • it will implement a "SimpleNurbsMuscle" (similar to the rig from version 1 with a nurbs type geometry instead of a poly)
  • Muscles will be built around a "regeneration" model
    • Muscles will be dynamically recreated from their guides with their parameters, skinning attributes and flexors intact each time, making the regeneration common and trivial.

 

Muscle System Wizard Design

I've chosen a Wizard approach to the UI for the muscle system toolkit. The wizard will live as a synoptic on an object in a given model. Therefore, the rigger will just need to select the object and hit (F3) in order to bring it up at any given time.

View PDF copy of the wizard's flow design document.

Documentation

The documentation for the muscle system is in progress and accessible from the links below.

©2004 Brad Friedman