Jellyfish Rig (Drifter film) WIP 5/24/19
Updated: May 27, 2019
For the short Film Drifter, I am rigging a Jellyfish for animation. It's close to realistic in movement and looks, and presents some interesting challenges for a rig. This post will be updated as I work on the rig to cover my thought process and progress.
The main point of worry with this project is the tendrils and frilly tendrils that Jellyfish have, and how they move. Initially, I wasn't very familiar at all with simulations or many other methods for rigging this kind of thing. So I started doing some research and came across some really neat solutions for this kind of thing.
One of the potential solutions I found was for a procedural ribbon rig, using multiple deformers and blendshapes to influence the final shape of the geometry. This kind of setup seemed to be optimal for hand animated characters. I knew that animating all the tendrils for the entire film would be a massive undertaking. On top of that, seeing all this setup for a procedural type of rig reminded me that other things can be procedural or simulated. I wondered if I might be over complicating the solution. I took a step back from the problem and decided to try a broader approach and see if that got us most of the way there.
I took a quick stab at getting an nHair system to replicate the motion that underwater hairs have, and it turned out pretty good.
So I kept at it. I got some feedback on desired motion and some better reference footage of the target motion. I decided it was time to see if I could hook this up to a rig of sorts. I knew that the cap of the jellyfish had to contract like a sack bag and then extend again. I knew that this would change how the nHair simulated.
So I took the bottom ring off of my placeholder jellyfish mesh, and made the nHair system on that, and constrained it to the main mesh. I knew that this sim mesh wouldn't deform exactly like the main mesh but it was good enough to test some theories with.
After a lot of fiddling with the setup I got the tendrils to have the desired drag and float, and made sure that they could interact believably with the scene. In order to get the initial push out of the tendrils at each expansion point of the cap, I tried a few methods.
Initially I thought I could just take the simulation base mesh and make a few blendshapes. These were intended for pushing the follicles out and in, since the follicles were following the normal of the face they'd been created on. But this created an unintended effect where instead of moving just the first part of the follicle chain, it moved the whole follicle object on that axis. This meant that the tendrils fanned out way too wide and had no drag applied to this motion at the ends of the tendril. It was simply unbelievable in motion and totally unworkable. So I scrapped the blendshapes and tried again.
I did some research in applying a pulse force to just that small range and letting it naturally work it's way down the tendril. I quickly found out that this was also a dead end. I couldn't seem to get the force to follow the rig and apply the way that I wanted it to. Seeing as well that this couldn't be easily controlled by the end user I abandoned it as an option.
Finally I settled on a simpler method. I added a small sphere just under the cap and made it a passive collider for the nHair system. I then parented that under the cap itself, and as it followed the main cap it got scaled up and down to provide the small rounded push out that the tendrils needed to believably move near the base of the cap.
I might still change this if I find something that works better but for now this seems to work good. Sometimes simple is what's needed. I can then hide that sphere and it still collides as expected.
The next step of work will be taking these cached simulations and extracting the curve data onto locators, of which can drive the initial location of a simple FK rig on the tendrils. The idea here being that the FK will be available to fix any hiccups in the simulation, or push away a stray tendril from a key spot in a shot.
I will most likely be looking at scripting the process so that the animator has only to run the simulation and cache the data onto the rig once with a button.