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.

Yuriy Dulich’s Great Horned Owl

Yuriy Dulich kindly shared details about how he crafted his beautiful Great Horned Owl over the course of 4 months using Yeti, Maya, Arnold and Mari.


 

“I chose my typical approach with this type of character – to make it as realistic and anatomically correct as possible. The research process for this project included reading scientific literature, speaking with amateur keepers and meeting professional ornithologists including a live owl to study.”

“It all started with the collection of detailed references. There were no problems with photo-references as there are a lot of them from different angles and once I started gathering these the scale of the work became clear. But it was necessary to dig into more detail and problems started with the owl’s anatomy, the location of the feathers on the body and how their length and structure depend on their location and how the texture of the feathers varies themselves.”

“I decided to visit the zoo to talk with ornithologists and thanks to my friend Simon Andrew, who is a scientist fond of ornithology, I managed to study the living Ural owl very closely. This made it possible to better understand the volume of feathers in relation to the volume of the body itself, the location of the pterilium, the anatomy of the body, the structure of the feathers, and much more. The book “The Unfeathered Bird” by Katrina van Grouw helped me a lot with anatomy and additional feather textures were obtained from the online database of ornithologists: https://www.fws.gov/lab/featheratlas/ and https://www.featherbase.info/ru/home. The rest of the textures I hand-painting according to the reference with the whole process taking place in parallel with the sculpting and grooming.”

“Before sculpting I managed to find a scan of the skull of the desired owl and assembled the skeleton according to the reference while basing it on a modified skeleton of a parrot.”

“The next challenge was building the skin up to the intended volume, making a guess based on all of the reference as there are no photos of this specific owl without feathers. When the base model was built, the grooming and feather creation began. This is a very delicate and long work that requires attention and a large number of references.”

“I have implemented an iterative grooming method in my pipeline and with this method, literally in 2-3 passes, I get close to the desired shape of the strands. In Yeti, I used a new feature with a shader node which allowed me to visualize where the right layer of feathers is on the body by procedurally setting different colors for each layer. An expression based on the length and layer was used to automatically selected the necessary set of feathers with the required density.”

“To generate the feathers, I used both the Yeti built-in feather primitive along with the jcFeather plugin and divided the whole owl into zones.”

“Each region has from 3 to 9 variations of feathers. In total, there are 3,913 feathers on the body and 2362 feathers covering of the wings. The wing and tail feathers were based on photo references I took from the ornithological researchers – although their resolution wasn’t great their shape was clearly visible and creation was not difficult.”

“I want to note that I did not use polygonal planes in general, all of the the feathers based on fibres where the total number of feathers was 6327 which consisted of 2188922 fibres.”

“I tried to keep the Grooming as anatomically correct as possible following the so-called pterilium and the length of feathers while measuring and adjusting to my subjects proportions.”

“This is quite a laborious business as there is very little information or scientific articles on this topic. But the analysis of other birds and familiarity with the Ural owl allowed me to solve this problem.”

“I iterated on the grooming by repeatedly fitting to the body model, adjust wing positions and small tests with body deformation – once I was happy I finalized the basic shape of the owl. In ZBrush, I performed a highly detailed sculpt and together with the vector textures I finalized the body model.”

“Next was the final fit of the grooming, the angles of rotation of the feathers, the number of fibres in the feathers and their thickness with repeated test renders to try and match the feeling and look of the reference.”

“Having good success with my previous work I decided to perform the final visualization in the studio as well. By lighting nothing complicated, I used from 2-4 AreaLigth to simulate a soft box of light sources and one sky dome at a low exposure.”

“In the end the average render time on 2*Xeon E5-2695v3 (2*14core @ 2,8GHz) for 8k images was approximately 30h, and 4k images for the head was 14h.”


 

And here is a fantastic breakdown of how it came together – thank you Yuriy.