Overview

I was interviewing for a lot of new jobs at once, two of which were Niantic and Visual Concepts. I wanted to put together some more work on my reel that would be relevant to them so I picked a character that was 1) a Pokemon obviously and 2) showed use of a muscle system that might be relevant to characters in NBA2K. Not that Maya’s muscle would be directly related to game engines, but decided on something muscular nonetheless. After I built the rig I had some time left so I built some environment and lighting and did an animation.

Drag Left/Right to Spin

  
  

Resources

I honestly had a heck of a time building out the muscles with the default system in Maya, so I can’t recommend it as a solution at this point. Next time I need muscles, I will be looking for 3rd party solutions. However, here is the tutorial series I learned from: https://www.youtube.com/watch?v=tBl44b9ndaI

New Ground

  • First time using a muscle system to deform instead of blend shapes.
  • First time using Arnold renderer. Hadn’t lit or rendered anything for at least ten years, at which time it was all Mental Ray for me.
  • Learned to use a render farm, and the pitfalls of making sure the muscle cache is uploaded.
  • Bifrost fluid simulation for the dust when togepi runs away.

Mistakes/Lessons Learned

  • RENDERING… As I was lighting the scene at low quality and half res, frame renders were looking like 45 seconds each. I figured I could manage rendering all my layers in time for the presentation if the render time reached 3 minutes per frame, and just accept whatever quality that ended up being. Welp, it ended up being a consistent 15 minutes per frame. I managed to get it down to 10 minutes per if I lowered a lot of the settings. But those settings didn’t look great and I had already spent a serious amount of time on this project. 10 minutes per frame was barely going to cut it anyway, and leave me almost no time for comp and editing. 15 per was literally more time than I had until the presentation. So I rented out a renderfarm in China to knock it out in a night on 200 cores. I would recommend them. https://www.foxrenderfarm.com/ Their customer service was very quick. The rates looked reasonable compared to other render farm services but as you can see below, it was EXPENSIVE. All in all, it cost me almost 340 bucks to get it rendered in time. I clearly really wanted either of those jobs. Ultimately both worked out with both Niantic and Visual Concepts, and I loved both teams, but decided on VC. At the time of writing this, I start next week and am really looking forward to it.
No description available.
  • Using Maya’s default muscle system… Nah, a poor workman blames his tools. But jeez I had a hard time with this one. My medium complexity setup quickly ballooned into a barely manageable set of muscles. There were just so many controls in each muscle’s setup. Each of which is really a rig in itself. It was very difficult to manage groups for the muscles and edit the shapes and positions. Setting muscle shapes for the extremes led to results that were very easy to make look wonky at their in-betweens. I had some really odd problems skinning muscle weights. If I ever smoothed or weight hammered any of those layers, it would put influences onto dozens of other muscles and I ended up not being able to erase those influences. Mirroring the muscles didn’t work properly. Some of the controls remained in an odd orientation, and I ended up having to eyeball a lot of the positions just to get it done. Lastly, it was really difficult to make sure that the render farm had the correct cache. I don’t have any tips on how to make sure of that other than just doing many test renders. At one point it seemingly just started working, and I’m not sure what I did to get it to actually come through. And speaking of caches, I had many problems trying to clear out my local cache, leading to a lot of crazy shaking and having to reload the file.
My Niantic interview was remote, so to make sure I could make a good lag-free impression I uploaded my intro/overview for real time viewing before giving the actual presentation live.

Pokeball Effect

To create the effect for feraligatr coming out of the ball, it started with locking down the animation first. I really wanted to make his rolling feel like a continuation of the rotation of the pokeball. Next, I rendered a few different passes for the frame range in which it is appearing:

First, a pass containing only the pokeball for that range.
Next, a pass with feraligatr. These elements could have been broken into pokeball, feraligatr, background, and shadow to save some money, but it was a short frame range so I opted to just render full scenes for these elements since I had really locked in the look I wanted already.
Then I made a sort of “dissolve threshold” pass. I put a noise texture on the model. I also used this as an ID pass to cut the subject from the previous pass. But most importantly I used that noise texture as a threshold to animate a dissolve that actually moved in 3d space instead of screen space. For instance, if part of the growing effect was on its arm but the arm moved, it would not stay with that part of the arm while it moved and look a bit amateur in my opinion. If this text does not explain it well enough, the next image should make it more understandable.

The shape starts as just the traditional pinkish red, but parts of the real texture grow in, starting from small pin pricks. The pink-red is just a Solid masked by the alpha of the dissolve pass. The growing texture in our main footage masked by the dissolve pass’s inverted alpha, but it is luma keyed with an animated threshold. That way, the black areas appear first and grow out until the entire form is revealed as all luma values of the dissolve pass become keyed out.
To bridge between the ball and the character, I simply animated masks on a solid to make an effect similar to the energetic lines in the anime. I start with these two ghostly shapes until they come together in roughly the same shape as the mask, and it takes over from there seamlessly.
To create the background effect in feraligatr’s introduction, I rendered out an ID pass (below) for that section of animation and simply overlayed the graphics on top using the ID as an inverted luma matte. So the graphics show up wherever there is black, and looks like they are behind the subject.