Leopard

 
 

The main goal of the leopard project was to create a model that felt alive and real. We wanted to use Augmented Reality to make people feel like they had a real leopard right in their living room.

I was responsible for the modeling, surfacing, rigging process, and early iterations of the fur shader. A fur shader was very important to the leopard since without it, it’s really difficult for the texture of a leopard to look natural and real

The animations were done by the wonderful Liz Walcher, who helped me a lot with fine-tuning the rig.

Quads 6.3k

Total triangles 12.6k

 

 

Sculpting and design Process

My goal in the design process was not to create a realistic leopard completely true to life, but to create something that feels real and tactile.

Because I knew the leopard will be the first large project used to test fur shaders, there was a real chance that we decide to use another method to make the big cat feel furry in the end. That meant we needed a solid plan to fall back on.

I also wanted to avoid a situation where the fur completely erased some of the sharper features of the leopard, and that’s why some of the muscles are a bit exaggerated. The bonus is that if the fur hadn’t worked, having those muscle details as a normal map would pop out nicely against the leopard stripes.

Leopard High Detail for Krikey


 

Fur Texturing Process

Because I didn’t know whether we would end up using a fur shader at the very end, I wanted a contingency for if we didn’t. After looking around online for 3d models that other artists have made, I came to some conclusions after picking apart the things I appreciated or found lacking in other 3d leopard interpretations.

  • hand-painted and slightly stylized textures work a lot better than photo-realism, even on more naturalistic models.

  • smooth textures with no attempt at fuzziness of fur completely breaks naturalistic models, even at a distance

  • consistency is king. Super-realistic textures paired with low-detail models feel jarring, as does stylized textures paired with ultra-detailed models. This is especially true with an animal with such distinctive spots.

The final result isn’t photo-realistic, but I tried my best to make it consistent with the rest of the hand-painted texture.

To do this I used Ornatrix to create actual fur, and groomed it so there’s some gravity affecting the direction of the fur. Then I converted them to geometry, and then baked out black and white maps that I could blend on top of the hand-painted leopard spots in photoshop.


 

Rigging

I was still very much a beginner when it came to rigging at this point.

I used a 3dMotive guide for quadrupedal rigging and worked with my animator to create something from scratch. The back and forth was essential for me, since I have very little animation experience. I wanted to create something that gave Liz plenty of options.

Features:

  • the skin around the eyes follow the movement of the eyeballs

  • FK-IK switching

  • Stretchy ik back

  • FK tail

  • full custom channel movement for the feet, with heel pivot roll/rock, ball pivot roll/rock, toe pivot roll/rock, and auto options

  • custom ankle channel for added flexibility

  • Pole vectors for each leg

  • claw retraction

  • neck switch that allows head rotation to remain static when the rest of the body moves (for stalking animations)

  • paws that automatically react to an adjustable ground plane.


 

Animations

Originally we conceived of a modular way of adding animations, which is why some of the Idles have very few movements. We were planning to layer additive animations onto a base layer.

Again, animations were done by Liz Walcher.

This model doesn’t have any kind of fur shader on it, but it does have some manual shells I created in Maya initially to test out the effect. It’s no where close to how it looks with an actual fur shader though.


 

Fur Shader

While I can read and tweak code, I don’t have a good low-level understandings of memory allocation or optimization when it comes to shaders.

We didn’t have a coder who specialized in shaders back when I was making this leopard, so I found a recipe online and tweaked it to let me add normal mapping to bring some of the musculature out even with the fur. I also used vertex painting to mask out portions of the leopard so there’s shorter fur in some spots, and no fur in other places like on the nose. This is why the fur is much shorter on the face. I also added gravity to match the ornatrix grooming I did before, and altogether it adds up to one big fluffy cat.


 

Post-Mortem and Lessons Learned

One of the biggest roadblock I ran into was the time it took to do everything. Because I experimented with all kinds of workflows, almost nothing worked right away.

It took 3 different Ornatrix fur grooms for me to find a result I was happy with, and then it took me more than a day to come up with a way to bake the fur that felt satisfactory. One way I could have avoided some of that is if I did more simple experiments before jumping onto the leopard. I had only run one test on a flat plane to see if what I wanted to do was possible. In the future on similar problems, I should spend a little more time initially to get the settings how I liked it, and that would have saved a lot more time in the long run. It’s a lot quicker to render bakes of a small plane than a bake of a leopard with thousands of geometry representing the fur.

Another problem that I notice now looking back is the final texture file. There is no dilation/bleeding of the textures, which means seams will inevitably appear in any game engine due to mipmapping. Luckily, the fur shader hid it, but it was still bad practice to not have paid more attention to it from the beginning.