Cre­ate a Mus­cu­lar bull

Khalil Khalil­ian shares his process for cre­at­ing a re­al­is­tic char­ac­ter sim­u­la­tion us­ing Ziva

3D World - - CONTENTS -

Learn how to model a pho­to­re­al­is­tic bull us­ing Ziva with this step-by-step tu­to­rial from Khalil Khalil­ian

O ne of the most com­plex parts of VFX pro­duc­tion is rig­ging, and it can be even more com­plex when you have to make anatom­i­cal body move­ments. Re­cently a plugin for Maya was re­leased by Ziva Dy­nam­ics called ZIVA VFX. It’s spe­cialised to help you make ev­ery­thing you want for the sim­u­la­tion of a char­ac­ter’s body, in­clud­ing mus­cles, fat, wrin­kles and so on, en­abling the cre­ation of ad­vanced de­for­ma­tions in a sim­ple and ac­cu­rate way. Re­cently I used Ziva for my mus­cu­lar bull project and in this tu­to­rial I’m go­ing to show you how I made it.

ZIVA VFX is a sim­u­la­tion en­gine based on real-world physics and it makes pre­cise col­li­sions and sim­u­la­tions. It uses real-world logic, so all the in­put data should fol­low the same prin­ci­ples. For ex­am­ple in the case of mod­el­ling, in the real world, two solid ob­jects can never pass through each other. For best re­sults, we want to lever­age Ziva’s col­li­sion sys­tem. In or­der to make the char­ac­ter sim­u­late cor­rectly, you should al­ways be care­ful with the in­ter­sec­tion be­tween ob­jects be­fore sim­u­la­tion. The bull char­ac­ter was mod­elled by Ghasem Mol­la­hasani, his knowl­edge of anatomy re­ally helped me reach this re­sult. Thanks to Hamed Behrouzi for an­i­ma­tion and Mi­lad Ghi­asi for ren­der­ing.

01 re­search AND ref­er­ence

The first step of char­ac­ter cre­ation was search­ing for ref­er­ence such as pic­tures, videos of real bulls and anatom­i­cal at­lases in or­der to make the fi­nal re­sult as re­al­is­tic as pos­si­ble. We didn't find all the nec­es­sary ma­te­ri­als so we watched sim­i­lar an­i­mals to com­pare them. When the model was com­pleted we cre­ated our bone ge­om­e­try and mus­cle lay­out based on our ref­er­ence data.

02 Model topol­ogy

One of the most im­por­tant mod­el­ling con­sid­er­a­tions for work­ing with char­ac­ter rig­ging and de­for­ma­tion is mesh topol­ogy. You should have clean quad poly­gon topol­ogy with­out any self-in­ter­sec­tions or man­i­fold con­fig­u­ra­tions. This will en­sure best re­sults when it comes to slid­ing and wrin­kling de­for­ma­tions. For much bet­ter re­sults the topol­ogy should be with no mus­cle def­i­ni­tion when it comes to slid­ing mus­cles be­neath the skin, oth­er­wise the mus­cles will sim­ply re­main in their shapes on the model.

03 Joint lay­out

As with tra­di­tional rig­ging, you should put joints in the best po­si­tions on your model. To de­ter­mine the cor­rect lo­ca­tions of joints you could use the skele­ton model. As men­tioned ear­lier, in­ter­sec­tions be­tween ob­jects can have neg­a­tive ef­fects on your re­sults. Test a range of mo­tion with the bone ge­ome­tries; aim to min­imise in­ter­sec­tions as much as pos­si­ble when they are an­i­mated. Be ready to spend a lot of time it­er­at­ing be­tween the mus­cle and bone rig. You'll want to spend a good amount of time mak­ing sure the joint lay­out is as good as you can make it, be­cause mis­takes at this stage can cause is­sues dur­ing the sub­se­quent sim­u­la­tion passes.

04 skin­ning

The com­plete skele­ton model should be skinned in a rigid way, be­cause in the real world the skele­ton is a hard sur­face and it shouldn't bend at all. For the spine and rib cage you can use Smooth Bind, but be care­ful that it doesn't be­have as a soft ob­ject. Your char­ac­ter's fi­nal skin mesh should be skinned for two main rea­sons: - the an­i­ma­tors will be able to re­alise their an­i­ma­tion. - usu­ally we don't sim­u­late all of the parts (like head, tail and foot) so we blend back to the skin­clus­ter re­sult for th­ese parts.

05 An­i­ma­tion AND run-up

To work with Ziva you need to add an an­i­ma­tion to your skele­ton to see how the mus­cles be­have in the sim­u­la­tion. A sim­ple walk cy­cle is the best move­ment to start with. The an­i­ma­tor does his or her work as usual. Be­cause we’re work­ing with a sim­u­la­tion, there is the con­cept of run-up to con­sider. Be­fore the ac­tual an­i­ma­tion starts, the char­ac­ter must tran­si­tion from ori­gin, to the world space po­si­tion, and then over some frames (I used 15), the char­ac­ter goes from de­fault pose into start pose, and then the an­i­ma­tion starts.

The tran­si­tion to world space can be done over one frame. One sim­ply has to move the solver at the same time as moving the char­ac­ter. Be­cause Ziva physics are solved rel­a­tive to the solver po­si­tion/ ori­en­ta­tion/scale, if the solver and char­ac­ter are be­ing moved in lock step, the char­ac­ter won’t be torn apart if you move it a long dis­tance over one frame.

let’s start with ZIVA

The only thing Ziva needs to start the sim­u­la­tion is to drive the skele­ton ob­jects with an­i­ma­tion by alem­bic cache. So in a new scene, im­port your alem­bic cache and then im­port mus­cles. From the Ziva menu as­sign bone to skele­ton and tis­sue to mus­cles. Af­ter you have done this Ziva gives you a zsolver, and you should scale it to the size of your char­ac­ter. In the solver pa­ram­e­ters you should en­able the col­li­sion and change the sub­steps to 2.

Mus­cle pass

One of the most im­por­tant el­e­ments in the process of char­ac­ter con­struc­tion are the mus­cles, be­cause the fol­low­ing sim­u­la­tion passes will be based on this step. Spend a lot of time (the same as joints place­ment) and try to make them in the best way you can. Dur­ing this part you should pay at­ten­tion to: - the mus­cle at­tach­ment. - the form of the mus­cles in static pose and also in move­ment. - mus­cle jig­gle. - how to change the shape for ten­sion and com­pres­sion.

where to be­gin

I usu­ally work on the mus­cles one by one be­cause I can op­ti­mise my sim­u­la­tion and make it more ac­cu­rate for each mus­cle (for this you can use Ziva Tog­gle En­abled in Ziva Tools to dis­able the tis­sues that you're not tweak­ing). When you set all of your mus­cles you can mir­ror them us­ing the Ziva scripts that you can find in the class doc­u­men­ta­tion of Ziva.

ZIVA FIX At­tach­ment

For trans­fer­ring the skele­ton's move­ment to the mus­cles you should use the Ziva at­tach­ment node. To use it, select the ver­tices of the area you want to at­tach to the bone. This at­tach­ment works by clos­est dis­tance. If you want to al­ter which ver­tices are at­tached af­ter you've made the at­tach­ment, you can right-click on the mesh and select Paint>[name of at­tach­ment]. As well as at­tach­ing mus­cles to bones, with the Ziva at­tach­ment node you can also at­tach mus­cles to mus­cles. Use this func­tion­al­ity when you re­ally need it, oth­er­wise your

mus­cles can look over-con­strained and rigid.

tis­sue set­tings

Af­ter you have started the sim­u­la­tion, if you do not ob­tain the re­sults you want you have to set some pa­ram­e­ters: - In the zma­te­rial node, there is a pa­ram­e­ter called youngsmod­u­lus in which you can set the amount of hard­ness or soft­ness of the mus­cles. - In the ztet node, there is a pa­ram­e­ter you can set for res­o­lu­tion, but be aware that a high res­o­lu­tion can make your sim­u­la­tion heavy.

slid­ing At­tach­ment

Af­ter set­ting pa­ram­e­ters, dur­ing the sim­u­la­tion it might be the case that some mus­cles take some dis­tance from the base body. To avoid this prob­lem you could use a slid­ing at­tach­ment. This is sim­i­lar to the fixed at­tach­ment, but the only dif­fer­ence is the mus­cle can slide on the ob­ject it is at­tached to.

Fiber AND Zli­ne­o­fac­tion (loa)

We added the zfiber to de­fine the di­rec­tion that the mus­cle will con­tract. To trig­ger the zfiber con­trac­tion we need to use a node that is called zli­ne­o­fac­tion. But first we need to make a curve with the start and the end point at the ex­trem­ity of the mus­cle, and then we at­tach this curve to our bone skele­ton with the riv­ets. Af­ter that we select the curve and the zfiber node on the mus­cle and add the zli­ne­o­fac­tion from the Ziva menu.

set Fiber AND loa

To set the ex­ten­sion or com­pres­sion of your mus­cles you can change the ‘strength’ pa­ram­e­ter in the zfiber node. The re­sult­ing ex­ci­ta­tion de­pends on the curve’s length (pos), the rate that the curve’s length is chang­ing (vel), and the ac­cel­er­a­tion of the curve’s length (acc). By in­creas­ing the sen­si­tiv­ity pa­ram­e­ter on LOA you can mul­ti­ply the mus­cle sen­si­bil­ity ef­fect – this value can be dif­fer­ent on ev­ery mus­cle.

Mus­cles: Fi­nal step

Once you start to be­come happy with your re­sults, you should ac­ti­vate the col­li­sion­de­tec­tion in the zsolver node and also change the sub­steps to three or four – it de­pends on how fast the in­put an­i­ma­tion is. By in­creas­ing sub­steps you can achieve a bet­ter sim­u­la­tion. At the end you should cache it like you have cached the skele­ton, with the alem­bic sys­tem.

Fas­cia pass

We make the fas­cia for two main rea­sons: - us­ing the fas­cia we can trans­fer all move­ment of the mus­cles and the skele­ton on only one mesh, and it could help us to op­ti­mise the re­sult. - we can get a slid­ing ef­fect be­tween mus­cles and skin.

To cre­ate the fas­cia mesh it­self, you should shrink the char­ac­ter mesh on a com­bined ver­sion of the mus­cle and bones mesh by us­ing Maya's shrinkwrap. You can also use the Ziva cloth solver and Maya ncloth to shrink your mesh. Then we smooth the hard edges and also fix any in­ter­sec­tions be­tween the fas­cia and the com­bined mesh. Af­ter that we should re­topol­o­gise it fol­low­ing the same con­cept as in step 2.

Fas­cia set­tings

We im­port the mus­cles cache, the bones cache, and the fas­cia

model with the new topol­ogy. We de­fine the com­bined mesh as a bone, and the fas­cia as a cloth on the Ziva sys­tem. In the zma­te­rial we have two im­por­tant pa­ram­e­ters: - restscale, de­fault 1 - pres­sure, de­fault 0 With th­ese two op­tions we sim­u­late Maya’s shrinkwrap de­former, but it will be dy­namic. To start we change the restscale to 0.9 and pres­sure to 40. If you are not happy with the re­sult you can test new val­ues.

pre­pare For sim­u­la­tion

Turn the grav­ity off, or keyframe it on over five frames as part of the run-up. Keyframe the restscale en­ve­lope and pres­sure en­ve­lope from 0 to 1 over five frames as the start of your sim­u­la­tion. Make sure col­li­sions aren't set higher than some­thing like 1 x 10^6 on the zcloth and all zbones. In­crease sub­steps to more than 7 – try to keep your fas­cia mesh res­o­lu­tion as low as pos­si­ble, but not so low that you lose lots of de­tails (the val­leys be­tween the mus­cles). This is be­cause cloth is slower than tis­sue, and af­fected pri­mar­ily by ver­tex count. As with the pre­vi­ous passes, you should ex­port your re­sult (the sim­u­lated fas­cia pass) by alem­bic cache.

FAT pass

A fat pass helps us to trans­fer all fas­cia move­ment to our char­ac­ter's model, plus it can sim­u­late ex­tra jig­gle on fat. First you should make the fat model. As I said we don't need to sim­u­late all parts of the char­ac­ter, so in this case, we delete the face of the horns, tail and feet in fas­cia and also the char­ac­ter model, then we com­bine them and with a poly­gon bridge we can fill the hole area. It's im­por­tant that the fat mesh is com­pletely closed and all the nor­mals are paint­ing out­ward.

sim­u­late the FAT

At first we im­port the fas­cia cache and fat in the new scene. Af­ter that we should de­fine our fas­cia as a bone and make the fat as tis­sue with a high-res tet mesh and soft ma­te­rial. You don't need col­li­sions in this pass so dis­able col­li­sion glob­ally.

For trans­fer re­sult of cached fas­cia, on the fat layer, we should con­nect them by fix at­tach­ment, but only the in­side of the fat model should be at­tached to the fas­cia.

skin pass

With a skin pass you can add wrin­kles on the body dur­ing the move­ment. The skin model is like the fat model but with­out the com­bi­na­tion with fas­cia. It should be set as zcloth and at­tached to the cached fat sim­u­la­tion by fix at­tach­ment. You will need to paint ma­te­ri­als and/or at­tach­ments in places where you don't want to see wrin­kling ef­fects. Just like with the fat pass you should dis­able col­li­sions. For bet­ter re­sults you should in­crease the sub­steps of zsolver.

the skin blend

Wrap a copy of the fi­nal skin geo to the skin solve bake (it will be quite messy for the hands, feet and head, but don't worry about that).

Make a blend shape from the an­i­ma­tion bake (skin clus­ter, fa­cial anim) to the skin wrapped to the solve that you made in step 4.

Paint the blend­shape en­ve­lope any­where that you want driven by skin­clus­ter. In this case we just painted the horns, tail and feet. •

Ghasem Mol­la­hasani Ghasem is a 3D artist with over 10 years’ experience in 3D an­i­ma­tion and the video game in­dus­try. His main experience is in mod­el­ling and tex­ture. He usu­ally likes to sculpt or­ganic mod­els and cur­rently works as a free­lancer. ghasem­mol­la­hasani.word­press.com

Khalil Khalil­ian Khalil is a rig­ging tech­ni­cal di­rec­tor at MPC with over 12 years of experience in CG. He also has much experience in hair groom­ing with Yeti. vimeo.com\khalil66

02

01

03

04

Newspapers in English

Newspapers from Australia

© PressReader. All rights reserved.