Automatic Muscle Firing

Ziva Tutorials | 


Every tool in ZIVA VFX was purpose-built to fill the needs of character creators, and the Automatic Muscle Firing function is evidence of that. This capability allows creators to achieve natural muscle excitation results without any additional assistance from an animator or any inorganic shot sculpting. First, you must create a Muscle Fiber from a Maya object. 

  1. Select the Maya object
  2. Go to the Ziva Menu → “Add Simulation Component” → Fiber.

You’ll notice small lines going across your new Muscle Fiber object. This the “Fiber Field”. The orientation of the Fiber Field lines indicates the direction your new muscle will contract. Ziva will infer the correct fiber direction, but you can always alter the end point location or add endpoints, as needed.

How to Change or Alter the Fiber Direction:

  1. Select the Field.
  2. Right click for the Fiber menu.
  3. Go to ‘Paint’ → zFiber → End Points.

On either side of the muscle object you will see a black vertex point and a white vertex point. These are the opposite poles of the object. The rest of the vertices are painted 50% grey.

  1. Paint a point to add a new endpoint .
  2. Paint 50% grey to remove an endpoint. Keep in mind, you must have at least 2 endpoints at all times.

At this point, your object will fire equally across its entire surface. However, if your simulation will benefit from having the belly of the muscle object excite more its ends or sides, for example, you can use the zFiber Paint tool to distinguish the lesser excitable areas.

  1. Select the Fiber Field.
  2. Right click for the Fiber Menu.
  3. Go to 'Paint' → 'zFiber' → 'zFiber Weight'.
  4. Begin painting areas where you do not want the contraction to occur.
  5. In the 'zFiber Paint Node' you can alter the “strength exponent” to increase or decrease the amount of excitation which occurs in those areas. We recommend testing the default setting before changing this parameter.

Now that your muscle fiber is set up, it’s time to bring them to life! To achieve Ziva’s lifelike muscle firing, you can either keyframe the excitation or, if you already have animations prepared for the scene, use the “Line of Action” tool to automate the excitation.

How to Keyframe Muscle Excitations

  1. Go to a specific frame in your scene where you want to excitation to occur.
  2. Change the “Excitation” parameter from 0 to 1 ( 1 = 100% excitation).
  3. Then, right-click the 'Excitation' parameter to make the Excitation Menu appear.
  4. Click  “Key Excitation”. This will cause that frame and all subsequent frames to be set to Excitation = 1.
  5. Then, select another frame and repeat these steps with Excitation = 0 to make the muscle firing stop.
  6. Finally, play back your scene. The muscle will naturally bulge and become more rigid at the intended frames.

How to Setup Automatic Muscle Firing

Although keyframing can be useful for simple scenes and minor adjustments, you can simulate lifelike muscle firing automatically using Ziva’s powerful Line of Action command alongside your existing animation.

The Line of Action function calculates the distance between two points on an animatable curve to identify when muscle excitations should occur. You can imagine, if you were to put a point on your forearm and a point on your bicep, when the two points get closer together via joint bending, your bicep muscle will fire as a result. If the distance between point C and point B reduces by 10%, the muscle fiber will undergo roughly 10% excitation.

  1. Select your Fiber tissue.
  2. Go to 'Ziva Menu' → 'Create Line of Action Curve'. This will generate a 2-point C-B curve.
  3. Align the curve with the origin points of the muscle.

TIP: If modelled correctly, your muscle object should connect after the bone joint, allowing for it to be affected when the joint bends. You should be able to align the LoA Curve exactly with the muscle object. The flexible parameter settings in the Fiber Nodes should allow you to increase and decrease muscle firing effects without misaligning the LoA Curve with the muscle origin points.

  1. Use any Maya rigging technique, such as a skinCluster, to connect the LoA Curve to the bone.
  2. Select the curve and Shift+Select the fiber tissue object.
  3. Go to 'Ziva Menu' → 'Add Tissue Property' → 'Muscle Line of Action'.
  4. When you play the simulation, you can see the muscle change when the animation causes the.

TIP: You can add additional muscle fibres to your single LoA Curve by simply repeating points 6 & 7 with your second fiber object. You do not need to duplicate the curve.

How to Increase or Decrease Muscle Firing:

Position Sensitivity:

The Position Sensitivity prescribes how receptive the muscle object is to the changes in LoA Curve length. As default, the muscle fires to the same percentage as the LoA Curve length shortens. However, you can increase that relationship ratio freely. We recommend tweaking this parameters rather than changing the location of the LoA Curve.

In the new zLineofAction Node in the “outputs” section of the fiber, you can change the “Position Sensitivity”. The sensitivity is calculated by multiples of the input, so 2 = 2x as sensitive. We recommend initially testing the default “Position Sensitivity = 1” results and adjusting by increments of .5, as needed.

Contraction Limitation:

The “contraction limitation” function, located on the Fiber node, sets a maximum contraction amount on your muscle. However, if the LoA length reduces 90%, you do not want your muscle to contract by 90%. We recommend changing the Contraction Limitation from 0 to anywhere between 0.3–0.6 for simulating lifelike firing results.

February 8, 2018

What causes the bicep to contract immediately upon starting simulation?Is it the painted area of the zFiber? Driven by the rotation of the elbow? I am trying to figure out how the zFiber works. Can barely see a difference when I turn it on and off on a test muscle. Haven't tried painting the weights yet. Thanks!

December 19, 2017

Can you explain what is the different between zFiber excitation setup with locator what we have in tutorial and setup with zLineOfAction skinning to 2 joints and connecting to zFiber. It looks same but just zLineOfAction have more setting to play with. And for biceps, when we move elbow back and forward biceps should become bigger and smaller, for this setup you will use zLineOfAction? But what if it not enough (shape is not become bigger enough, still looks too small) ?