Crafting wings for Good Omens

We are huge fans of both Neil Gaiman and Terry Pratchett here at Peregrine HQ, so were thrilled when Amazon / BBC announced that a new Good Omens mini series was coming to their respective platforms.

The fine artists at Milk Visual Effects were involved in bringing the the authors prose to life on screen – including the wings for the leading characters.

The teams CG Supervisor, Adrian Williams and Senior Groom Artist, Matt Bell kindly shared details on how Yeti was used in the design and creation of these digital supernatural plumages.

“Demon Crowley (David Tennant) and angel Aziraphale (Micheal Sheen) both have large and impressive black and white wings (respectively) when seen in their real forms in the Amazon /BBC’s new comedy-drama Good Omens adapted for the screen and helmed by Neil Gaiman. Initially, our concept artist Grant Bonser designed bat-style wings for Crowley but Neil Gaiman preferred to have feathers for both the demons and angels.”

“We built each feather based on swan wings – which was most appropriate to the concept. We started building the feathers in geometry so that we had a map for our groom team to develop each feather. The wings were laid out in an anatomically correct way, with primary feathers (the long finger like feathers that feature at ends of wings); secondaries (above those on the ends of the wings) and coverts (top wings / fluffier wings). The wings were then re-groomed into feathers using Yeti. We modelled in a swan’s wing bone structure and this was then all passed to the rigging team to ensure the feathers folded correctly and worked well together. Working together, the groom, modelling and rigging and animation teams refined the wings, referencing heavily the way a swan’s wing physically folds and behaves to ensure that when doing our wing simulations, everything behaved realistically.”

“To help with rigging we extracted curves down the centre of each of the geometry feathers and converted these to fibres. The feathers were instanced to these fibres and scale determined by the curves length. A duplicate of the wing curves was then incorporated into the rig and our groom curves blended to these so as to match our animation. We created over 20 separate feather variations so as to give realism to the groom and feather orientation controlled by using the geometry’s surface normal as our up vector in conjunction with curves Yeti twist attribute.”

“We decided to create the wing texturing in the look development phase. It was all shader based so that we could have complete control over colour variants and no one feather was the same hue, to break up the overall look making it more realistic.”

“Getting the right balance of iridescence on the black feathers and then ensuring the white feathers had enough detail and variation to stand out was challenging. We spent time in the look development stages tweaking the shaders and then when we got to actual shot production we were working very closely with Neil and our groom and creature effects team so that we were able to get a look that he and Douglas were really happy with.”

“Some of the shots needed to have a bespoke groom set up as we soon realised that when the animators were posing the wings at some angles they would not capture the correct shape or volume that was required for that specific shot, but this gave us the freedom to sculpt the groom and make sure that none of the detail was lost and so the wings looked and felt a part of the actors as they progressed thought the scene.”

Yeti was also used for the digital neck and head extension of Adam’s lovable pet, the Hell Hound.  A big thank you to the Milk team and you can watch Good Omens on Amazon’s Prime Video now.

Dinosaurs in the Wild

Milk created a ground-breaking range of CG Dinosaurs and their environment for ‘Dinosaurs In The Wild’ – an immersive, UK theatrical special venue experience which transports audiences 67 million years back in time to the Cretaceous period, to experience dinosaurs in their own environment!

The focus for the team was a digital ‘dinosaur safari’ – creating all of the external views of the dinosaurs seen through four ‘observatory windows’; and one windscreen-view for a ‘simulated drive’ sequence, all in Stereoscopic 3D.

“We created eight different species of Dinosaur for the show, which appear in every frame.” Explains Matt Bell, the lead grooming TD on the project – “Almost all of the Dinosaurs used Yeti to one extent or another and it was my responsibility to groom each one and help integrate the creature FX into our pipeline. Each dinosaur species had differing groom characteristics and each of these had multiple variations.”

©Dinosaurs in the Wild UK Ltd 2017 – Images supplied by Milk Visual Effects

This challenging workload was broken down into 4 X 12,000 frame continuous eight-minute shots and one x 6,000 frame, 4-minute drive sequence with Yeti being chosen for its ease of use and integration into the studios Maya/Renderman pipeline which was used for Dinosaurs in the Wild.

Matt continues “It was an incredibly challenging project given the large number of dinosaur variations and the length of the animation sequences. We rendered almost 80 million frames in the cloud using Google Cloud platform to accommodate the scale of the project. We are very happy with results we achieved.”

“Yeti achieves great results quickly and the flexibility allowed us to come up with workarounds to achieve specific looks, for example on the feathered Dakotaraptor we used a combination of heavily clumped fur blended with Yeti feathers which was layered into geometry feathers.”

“Yeti was perfect for such a complex and large-scale job such as Dinosaurs In The Wild.”


©Dinosaurs in the Wild UK Ltd 2017 – Images supplied by Milk Visual Effects

Case Study: Milk VFX, Beowulf and CG fur using Yeti

We are very excited to share this detailed case study prepared by the team at Milk VFX who used Yeti to bring almost every creature to life for the new series, Beowulf.

Incredible work, Milk!


“ITV’s new series Beowulf, helmed by Walking with Dinosaurs producer Tim Haines, is based on the oldest English poem of the same name. Milk was awarded all vfx work which meant we were responsible for bringing all of the creatures to life. We collaborated closely with Tim Haines and knew that from concept stage that we’d be having to add fur and hair to nearly every creature on the show from the protagonist Grendl to the wolf like Wulfingdogs.”


Choosing a fur tool.

“CG fur and hair has until recently been very much a luxury of film work given the time and research required to get it looking believable (i.e., Life of Pi, Tangled, and The Planet of the Apes films). Given fur is a real world asset, there are certain rules and behaviours we have to abide by in order to convince audiences that what they are seeing is real. We needed to find a tool that could help us achieve this. We had used Yeti previously on the feature film Hercules with great success.”

“At that time we were using the feather features introduced in Yeti 1.3 which were still quite a new asset to the Yeti toolset. Anytime we ran into a problem or requested a feature, the Yeti team were quick to respond and help out. The support we received and the features available to us made using Yeti in Beowulf a no brainer. A lot of the creatures in Beowulf also required varying fur/hair styles on different parts of their bodies and this was easy with Yeti. We could create multiple graphs inside one node and then simply duplicate setups and even reuse them on other creatures if necessary leaving us with just a small amount of tweaking, this flexibility was key.”



“In episode one alone, we are introduced to three very different looking creatures and they would appear in no less than 100 shots, fur and all. I can’t think of another TV show to date that required such a heavy need for CG fur, which meant we had our work cut out.

The first part of the fur development was to take each creature model, create a fur groom which would roughly take 2 to 3 days and then attach it to the look development scene so we could test how the fur would look as part of the final creature design. We’d create turntables for client reviews and make changes according to their notes.

Once a groom had been finalled, we needed to figure out how we would populate each shot with fur. Each groom needs to be attached to the animated creature mesh on a per shot basis, then cached to file and loaded into the final creature template scene that had all the working shaders and lighting. This meant a lot of manual time would be required. At this stage we hadn’t even considered dynamics, and we wanted to avoid heavy dynamic tweaks being done on each shot. It became clear that we had to figure out a way to streamline the fur dynamics and caching process for each shot.”


Fur Dynamics

“To test the dynamics, we ran our groom lookdev scenes through a number of different animation cycles all the while adjusting the dynamic settings until we felt we had something that would work in all circumstances. Our goal was to have just enough dynamics to add a nice amount of weight to the fur as it collided with the body, horns, etc. whilst still maintaining the original groom pose. These settings were then stored for each creature.”

“In summary, our Yeti pipeline consisted of a 3 step process for each shot.

  1. Bake the tension displacement to a single tile map sequence.
  2. Add displacement to the animated mesh thus offsetting the Yeti node that is attached
    to this mesh.
  3. Set a pre­roll, assign the optimal dynamic settings and bake Yeti to file (cache).”

“To simplify things further, our in-house technician, Alexandre Pavot, created a UI which ran all these steps automatically on the farm. All we had to do was provide the UI with the animated creature alembic cache (which stored all shot information in the filename) and it would automate all the steps and deliver them to the farm leaving us with a final Yeti cache.”


Getting Dirty

“On previous projects, due to software limitations, it was a challenge to attach dirt or snow for example to fur and have it move with the fur as though stuck within it. With Yeti, we knew we could add instance geometry into the Yeti graph on the same groom curves. So we created four distinctive dirt objects and scattered these through the fur by introducing instance nodes to the graph. We could then randomise quantity, size, rotation and position along the groom curves.”


Shading and Lighting

“For Beowulf we decided to use the AL shaders (a group of shaders created for Arnold by Anders Langlands) for all the CG creature look development. This meant we could use the included hair shader allowing us to take advantage of the extra features absent in the current Arnold hair shader. For example, we could add kajiya­kay scattering, dual specularity (a broad and tight specular at different locations along the length of the hair) and transmission to bleed light through the hair giving us nice rim light results. It also made creating ID’s much easier (they are built into the shader) because often you struggle to retain the opacity in fur when creating ID’s. All of our renders required that we create deep aov’s and this shader set worked perfectly with Yeti for this purpose. For the dirt we were able to create custom attributes in the Yeti graph that fed into our shading networks allowing us to further adjust their look separate to the main fur shader.”


You can watch a breakdown of the Troll creation and sequences here and the Grendl here.

The Team

VFX Supervisor – JC Deguara
CG Supervisor – Nicolas Hernandez
Lead Modellers – Sam Lucas and Jason Brown
Lighting & Look Dev – Bastien Mortelecque, Adrian Williams, Dominic Alderson
Grooming – Dominic Alderson
Lead Animator – David Bennett
Lead Rigging – Neil Roche
2D Supervisor – Sara Bennett
Tracking Lead – Amy Felce
Effects Lead – James Reid
Lead Concept Artist – Grant Bonser
Texture Artist – Henry South