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.
In case you missed it
You may find these articles interesting
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.
The Cryolophosaurus Animation
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.
Making Creature Models
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.
The Animation Workflow
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.
The Step-By-Step Process For Beginners
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.
- Either use Ziva's embedder Ziva ->Embedded Mesh or Maya's wrap deformer to deform the first intact mesh with the Ziva simulated mesh.
- With the joint hierarchy used to pose the Ziva bones, apply a basic skinCluster to the second intact mesh. Focus on ensuring good quality results on the head, hands, and feet.
- Select the second mesh and then the third mesh and add a blend shape deformer. Make sure to set the Origin to "Local" and the Deformation Order to "After". Set the blend weight to 1.0.
- Select the first mesh and then the third mesh and add another blend shape deformer using the same settings. Set the blend weight to 1.0.
- Right-click on the third mesh, go to the paint option and paint the weights for the second blendShape deformer.
- Use the paint context tool to reveal the deformations of the head, hands, and feet by painting a blend weight value of 0.0 (similar to masking in Photoshop).
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 Ziva VFX Coupled Methodology
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:
- Finite Element Analysis (FEA): FEA is a numerical technique used to solve complex engineering and scientific problems. It is particularly useful for simulating physical systems with intricate geometries and boundary conditions. FEA breaks down a complex system into smaller interconnected elements and uses mathematical equations to model the behavior of each element. When applied to anatomical structures, FEA can simulate how these structures respond to different forces, loads, or deformations.
- Coupled Methodology: In the context of Ziva VFX, coupled methodology refers to the integration of multiple physical phenomena or different types of materials in a single simulation. In this case, it involves simulating different layers of tissue (muscle tissue, superficial fascia/subdermal fat) together and simulating epidermal skin separately. This allows for accurate capture of interactions and influences between these layers.
- Muscle Tissue and Superficial Fascia/Subdermal Fat: Muscle tissue and superficial fascia/subdermal fat are essential components of the human body. Muscle tissue provides movement and support, while subdermal fat and superficial fascia play roles in insulation, protection, and connective support. Simulating these structures together using FEA helps analyze their behavior under various conditions, such as mechanical loading or deformation.
- Epidermal Skin: The epidermis is the outermost layer of the skin. It acts as a protective barrier against the external environment and helps regulate body temperature. Simulating the epidermal skin separately using a zCloth object suggests that this layer is treated as a flexible, cloth-like material in the simulation. This approach captures the interactions between the skin and underlying tissues as they move or deform.
- Anatomically/Physiologically Correct Results: One of the advantages of using a coupled FEA methodology is that it can provide more accurate and realistic results compared to simpler models. By simulating the interactions between muscle tissue, fascia, fat, and skin, insights can be gained into how these layers behave together in response to various forces or conditions.
- Complex and Expensive Simulation: While the coupled FEA methodology can yield accurate results, it can also be computationally expensive and time-consuming. The complexity arises from simulating multiple interacting layers with different material properties and behaviors. However, advancements in computational resources and simulation techniques have made it more feasible to perform such simulations.
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.
The Final Words and Advice
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.