Anupam Awasthi shared some tips on how to make creature models in Ziva VFX and explained the process behind muscles and skin simulations for beginners.
Hi! My name's Anupam Awasthi and I'm a Creature FX Technical Director. I've been working in the motion pictures and film industry for the past 7 years. Beyond the realm of pixels and polygons, I find solace in the ethereal embrace of water.
As a devoted marathon swimmer, I believe I can navigate the depths with the same grace I conjure creatures from the depths of my imagination. Also, in the quiet corners of my life, I delve into the profound world of philosophical thought, seeking insights that resonate with the deeper currents of existence. I'm a gamer too, a digital explorer who thrives in virtual landscapes as much as I do in my creative atelier.
I got into the industry quite early. I always wanted to learn how to make games, that was my childhood dream. Besides, my elder sister was studying 2D animation, and she was the one who inspired me to learn it. As time passed, I got to college and had a chance to study movie magic.
I'm a Bachelor of Science in Animation and VFX, a Bachelor of Computer Application, and a Master of Computer Applications. My first company was Prana/Rhythm and Hues Studios where I learned Character FX from some of the most amazing lead artists and friends I ever had like Darshan Jain, Abhishek Dhar, and Christopher Macwana.
Once, when I saw some old muscle and skin simulation tests from The Incredible Hulk and Life of PI, I decided that I would learn creature FX in-depth because I was so fascinated by it. To date, I have contributed to a total of 32 projects, some notable ones being Disney's Little Mermaid (2023), Marvel's Moon Knight, Fantastic Beasts: The Secrets of Dumbledore, RRR, Hellboy, Netflix's Watership Down, Argylle, and Marvel's The Avengers Ride Film.
I also volunteered in various testing as Software Instructor, Software Testing Specialist, Technical Training Instructor, Visual Effects Specialist, Technical Documentation Specialist, and Lead Technical Training Specialist in companies like Prana/Rhythm and Hues Studios, DNEG/ReDefine, Framestore, etc.
When I joined Viskefi Studios, where I was under Dhanu Muddikuppam's supervision, I learned a lot about the neurons of subtle tissue movements and behavior. I think his approach was clear and straightforward, aimed at making the most anatomically/physiologically correct animations and simulations.
As you all know, my love for philosophy fuels all my discipline and inspiration. I find motivation in the exploration of life through disciplined examination, as "an unexamined life is not worth living." Without this discipline, I would be functionally illiterate by the end of the day. When seeking references, I prioritize observing live references whenever possible. If that is not feasible, I turn to this website for reference material.
Creature models should be anatomically correct, that's why it's crucial to dedicate time to find good live video/photo references and then thoroughly examine them. For example, if you are creating a dog, and you have one at home, you need to study it physically; check how bone and its joints are placed, and have a look at muscle deformations. Later, you can model the outer body and then start with the skeleton and muscles. Always check for penetrations/interpenetrations because they will affect the simulation.
Modeling artists always conduct a tech check (QC) with CFX artists as it is a trial-and-error process. Bones are not simulated; they are used for animation. Bones drive the muscle simulation because muscles are connected to bones through dynamic constraints. There are various methods to simulate tissue, such as XPBD (Position-Based Simulation of Compliant Constrained Dynamics), PBD (Position-Based Dynamics), CD-MPM (Continuum Damage Material Point Methods), MPM (Material Point Methods), FDM (Finite Difference Method), and the widely used FEM (Finite Element Method) employed in Ziva VFX.
In creature FX, I utilize tools like Maya, nCloth, nHair, Carbon Cloth, Qualoth, Houdini 19.5, Wrap4D, Marvelous Designer, Vellum, and Ziva VFX.
Animators should always check for bone-to-bone penetrations and bone discolorations from joints, as well as the animation should always be anatomically correct before they publish it for the CFX simulation.
In Ziva VFX, there are lots of simulation methods: you can simulate muscles independently, followed by the fat simulation, and then the skin separately. In this process, bones will be used for animation in the form of an ABC cache. Bones drive the muscles simulation because muscles are attached to bones through dynamic constraints. Later, you need to export the muscle simulation as an ABC cache that will become a collision for the fat simulation. The muscle will drive the fat simulation because fat is attached to muscles through dynamic constraints. The fat sim is exported as an ABC cache, which becomes the attachment for the skin simulation. The skin simulation is driven by the fat as the skin is attached to the fat through dynamic constraints, but in the skin simulation, the collision will be turned off. This is a distinct workflow that can be implemented.
Bone rig: The picture above contains the Maya joints, as well as the skeleton geometry (the Maya joints are what drive the skeleton geometry).
Muscle rig: The same skeleton geometries are now Ziva bones, and the muscle geometries are Ziva tissues. As a part of the authoring process, muscles are attached to bones through zAttachments. Curves that drive zLineOfAction are riveted to the skeleton geometry objects present in this scene. Start by creating a point cache of the moving skeleton geometry. Then, simply open the muscles setup, import the point cache, and use it to drive the skeleton in your muscles setup scene.
Skin rig: The picture above consists of the fat, which represents the volume between the muscles and bones, as well as the external skin. Both are solved as Ziva tissues. The external skin is also handled as the Ziva cloth. Similar to previous steps, the fat and external skin are driven by the point cache derived from the muscle solve in the previous pass. As the cloth deforms along the geometry edges (unlike tissues that deform at the tet level), solving the epidermis as cloth concurrently with the fat results in highly dynamic wrinkle deformations.
Final blend rig: The Skin Blend is a simple deformer rig that blends the skin cluster with the simulation results.
Procedure: Ziva characters are solved from the "inside out". In this example, the setup process starts with the bone rig and moves sequentially onto the muscles, skin, and the final blend. Each of these rigs is a dynamic, simulated object or collection of objects, and they are all driven by "kinematic inputs". These kinematic inputs are the point caches of each pass. So, for each step of the setup process, you will need the point cache of the previous setup.
We suggest that you use the Alembic for your point caches. To effectively run simulations and export the Alembic data at the same time, you need to render the Alembic over a number of frames, using the regular Maya interface. The start frame of the Alembic Export should always mirror the zSolver Start Frame. Although it may sound intuitive to use the Ziva cache to produce your point caches, the Ziva cache was designed to be exclusively an authoring tool. It is useful to scrub the timeline and see the solution happen from different angles with all the GL drawings inside the viewport. This is very different from exporting point caches.
Additionally, to drive Ziva bones with alembics from a previous pass, we recommend making a simple blend shape between the imported animated Alembic geometry and the corresponding Ziva bone geometry in the scene. A script would be helpful to do this, as it will be needed throughout the setup process.
Please, note that the illustrations below were taken from the Ziva Dynamic Community page.
1) We want to go from this (standard 'A' or 'T' pose) to this (some arbitrary pose). After animating the bones (the method is really not important), those bones with their animations are exported to an Alembic file, which is imported into Maya and assigned Ziva Bone object status:
2) To do this with Ziva VFX, we build a model of a skeleton inside the approved model, then we build muscle objects in the same manner:
3) Using the Ziva VFX tools, muscles are attached (loosely or firmly) to bones:
4) By painting the "start" and "end" of the muscle objects, the fiber direction of a muscle can be established, so that, when the Line of Action changes the length (by being riveted to adjacent bone objects), the muscle can "flex" and firm up axially:
5) A fascia object is made by the "shrink wrapping" (using the Ziva VFX simulation to do this by making it a Ziva Cloth object and applying one or more forces), a figure model around the bones and muscles in the base pose ('A', 'T', or other):
6) Having read and watched all the material available to me, I have observed the consistent utilization of this particular scenario:
7) A copy of this fascia object is Wrapped (we already use Wrap 3 in our pipeline) to the original approved model, and a skin/fat "glove" is made by bridging the open ends of the skin/fat object to the corresponding open ends of yet another copy of the fascia object. This makes a watertight, non-zero-volumed object that the Ziva tet mesh can populate volumetrically:
8) The muscles were simulated using Ziva VFX over the Alembic cache of the animated bones (Lines of Action, when applicable). Afterwards, they were also Alembic cached, becoming the "bones" for the fascia in the next step.
9) Since fascia and fat/skin can be created simultaneously in Ziva VFX 1.4, the fat/skin glove we made is now assigned Tissue status and simulated over the animated muscles and bone geometry. This geometry had been previously Alembic cached and is now represented by the Ziva Bone Objects.
10) We will drive a high-poly "hero" model with a low-poly model to get the final result. You can deform high-resolution models with Ziva VFX. We decouple the resolution of our tetrahedral meshes from the final deforming mesh anyway. Alternatively, you can rig with a lower-resolution mesh (so it is easier to paint attachments, materials, and whatnot), and then by using the Embedder, add your high-resolution mesh so that it can be driven by the same tetrahedral mesh (or you can use a Maya wrap).
11) Have three copies of the model with the head, hands, and feet attached.
If done correctly, the head, hands, and feet should now be deformed using the skinCluster, while the rest of the character is deformed using the result of the Ziva VFX simulation. Alternatively, you can choose to deform the entire character directly using Ziva VFX without removing the head, hands, and feet.
The coupled method used in Ziva VFX differs from other methods in that it simultaneously simulates muscle tissue and superficial fascia/subdermal fat as zTissue objects while simulating epidermal skin separately as a zCloth object. This methodology is not widely used due to its complexity and cost, but it provides stable and anatomically/physiologically correct results.
Let's break down the various components and concepts involved:
In summary, the approach presented shows the potential in enhancing our knowledge of how anatomical structures behave mechanically and how they interact with each other. It can be useful in various areas like biomechanics, medical research, and virtual surgery simulations, where the precise representation of tissue interactions is vital for obtaining authentic outcomes.
Speaking of the lightning, we use Arnold for Maya and, if it's a Houdini project, we use Katana.
Usually, for my personal projects, if everything goes smoothly with other departments, I can complete CFX in 20 to 25 days. However, for Cryolophosaurus, it took us 3 to 4 months due to extensive back and forth between departments for quality control.
I faced several challenges during the project. The animations were not proper, resulting in bone-to-bone penetrations. We had to remodel some of the muscles because the tissue volume was incorrect or the topology was not suitable. Proper placement of muscles is crucial during the modeling stage.
While there aren't many online tutorials available, you can find some basic ones here. Additionally, I recommend exploring the Ziva Dynamic Community here for further guidance and support.