The Magic VFX work for ‘The Witcher S2’

Bruxa

The Bruxa is a powerful vampire that can shapeshift into a young woman. It has the appearance of a bat with sharp fangs and claws.
To create the Bruxa we started with concept art. We tried to nail down the design before moving into CG. The design of the mouth was particularly important and one we took careover as it links to the character in its human form. We started by making an initial sculpt of the character in ZBrush. We focused on the proportions and made sure that it looked like it was capable of flight. We paid careful attention to its menacing look.

The Bruxa is an evil and dangerous creature and we continually iterated to make sure we captured its personality. While working on the face we would regularly cross reference the mouth with the mouth of the Bruxa in human form. We needed to make sure that the mouth looked grotesque but would also not feel out of place or fake on a human.

While the sculpting was being finalised we used our custom Maya rigging tools to set up animation controls. Several animation tests were done to discover the character and how it moved. The way it flies and the way it screams were going to be signature movements which we had to get right. We also did many technical animations to stress test both the animation rig and the cfx setup we simulated on top.

Once the modelling was done we went into Mari for texturing and Houdini for lookdev. It was important to make sure that the Bruxa looked organic with hard and soft areas and add subtle micro details. We built a muscle and skin system which was simulated on top of the animation. This simulated approach meant that we had some very realistic and organic movement which enhanced the performance. The setup was also very robust allowing us to
iterate on the animation and then run it through the system with only small changes.

Lighting and shot execution was done in Houdini and rendered in Arnold. Some of the environment around the Bruxa required cg top ups. This was a more straightforward task of matching the set with models done in Maya and textures generated in Substance Painter.
The top ups, combined with set geometry meant that we had a complete environment to use in our lighting scenes for accurate bounce lighting and shadows.

The integration of the renders and treatment of the plate were carefully done by the compositing team. The dark nature of the shots meant we had to strike a balance between showing enough to make the action clear and keeping things dark and hidden to reflect Geralt’s point of view.

Cintra

Cintra was a full cg build comprising hundreds of assets. With a combined approach of hero work and procedural techniques. This flexible approach allowed us to populate large areas quickly while still having artistic control over the assets and layout. It was also efficient as we spent more time working on the hero assets which were more visible.

Taking the design cues from season one we started by gathering references. Lots of references. We took a lot of inspiration from cities like Carcassonne and Dubrovnik for different parts of the city. The density and complexity of the roofline in Carcassonne paired well with the large, hard stone buildings from Dubrovnik, along with elements from some Mediterranean coastal towns, we reached a consistent design philosophy which satisfied the client’s requirements.

We were careful to consider logical areas of how cities were actually built and incorporated these ideas into our design and layout. Whether it’d be to have green areas around churches or offset doors on the walls to trap your enemies, this attention to detail brings a sense of realism to the work. We were also heavily driven by the events of season one and researched how the Nilfgard would have taken the city and how the devastation was spread.

It provided a great guide so we could create beautiful shots while telling the story effectively. Once designs were settling we started modelling the buildings and props. At the same time the procedural set up was started in Houdini. We were able to get an initial city by defining the assets, wall placement and terrain and our system would produce the city as a whole. It was a great start as we had a completely blocked out layout from the get-go. The layout continued on a per shot basis. Hero assets were used in hero layouts which were largely done by hand. We had to be very specific in the shapes we created with the buildings and which areas were destroyed, which were merely damaged and which were intact. It was a real collaboration between all of the departments ensuring that all of the components worked well together. Our workflow was very flexible. We were able to model in Maya or Zbrush, texture in Substance or Mari and the layout interchanged between Houdini and Maya. Shot execution was largely done in Maya but also included some Houdini setups.

Being able to switch between Maya and Houdini made the process easier. We could make custom models within a shot in Maya or have the entire layout available in Houdini for the FX and Crowd teams to do their work. The FX consisted of smoke coming from the fires in the park area and the sea leading off into the horizon. All done in Houdini. We utilised our in-house crowd system to populate large areas of Cintra with Nilfgard and Elves with the flexibility of adapting it to any layout changes. We were also able to manually place crowds or individuals to give us total control. Our crowd system integrates with Arnold to render very efficiently.

We had plates and dmp as backgrounds for our shots. Some shots also had a few dmp additions to add some extra detail. The comp team brought all of the elements together by juggling the plates, dmps, elements and cg renders into a cohesive and consistent city. We were able to use deep images and layout geometry to ensure that we were able to get the effects we needed. The Cintra shots were a real triumph in collaboration.

House

The house was an interesting challenge. A witch lives as part of the house and uses her magic to bring it to life before escaping it. It’s a large character with very limited mobility so capturing the essence of the character took some experimenting. We started with concepts of the house and the shots to establish the mood. We built some initial blocked out models and looked at the shots to ensure that the scale was appropriate.

We had to be quite strategic where we put the windows and how we constructed the roof as the shots were dark and the majority of the lighting would come from within the house. If we didn’t have enough gaps in the roof or the windows were in the wrong place, we wouldn’t be able to have enough light spill to illuminate the scene.

After iterating through the model, we asynchronously worked on the textures in Mari, and started the rigging and animation process. The rigging and animation were done in Maya with our in-house tools. When the house started to move, we made the ground break up around it and roots were torn from the ground. In the last shot, the roof of the house needed to start collapsing on itself in order for the witch’s essence, in the form of embers, to escape.

The embers were made by another vendor so it required coordination. As soon as we had enough information about the movement of the house we began working out the setup for the FX in Houdini. A combination of procedural techniques and simulations mean that we had a flexible system that could cope with changes in animation without requiring much additional work.

The backgrounds of these shots were painted and established very early on by one of our dmp artists. This, along with the concept art, provided a great target for our lighters to hit. The lighting was done entirely in Houdini from which point our incredible compositing team brought the renders into Nuke and began integrating them with the plate and dmp. As the shots evolved it became clear that we had to treat the plates a little to hit the lighting notes asked by the clients. We worked hard to retain details from the plate and make the integration as seamless as possible.

Written by: Felipe Canfora