logo80lv
Articlesclick_arrow
Research
Talentsclick_arrow
Events
Workshops
Aboutclick_arrow
profile_loginLogIn

Billie Eilish Imagined In 3D With ZBrush & Unreal Engine 5

Senior Character Artist ZhuTao showed us the workflow behind the 3D portrait of Billie Eilish, detailing the use of VFace's displacement map for ZBrush sculpt and rendering with Unreal Engine 5, modifying the materials of MetaHuman.

Introduction

Hi, I'm ZhuTao, a Senior Character Artist at Tencent. I have been doing 3D art for about nine years. For the past two years I've been working on a secret game project for Tencent in Chengdu, creating heroes and especially their faces.

The Eilish Project

The main inspiration for doing this project came from one of Billie Eilish's photos, which was a photo of her wearing a green t-shirt to a Spotify event.

I was drawn to the conspicuous fluorescent green t-shirt and the green gradient hair, I like the green color a lot. Also, Billie Eilish is a really great singer. She also has a very characteristic face.

Steve Granitz

During my research, I also collected references. First, I searched for the time when this photo was taken. Then, I determined that Billie was 21 years old at the time. After that, I used a search engine to find much more high-resolution images. In the process, I faced a problem because these pictures were taken at different times, Billie's age was different, and her face changed a lot.

It wasn't until I found a comparison chart of Billie's face at different ages that this issue was resolved. After that, I found many photos of her attending this event from different angles and in different poses, and I used those as my primary reference and the others as secondary references. Also, I mostly looked for references to her eyes, lips, nose, and eyelashes because they're all very unique.

Please note that I will always look for more references to help me be more accurate during the production process, which may continue until the end of the project.

Sculpting

After I had done my research and gathered my references, I went to sculpting in ZBrush. Because  I decided to render in Unreal Engine, I used the MetaHuman's head base model for sculpting. Vivian's facial structure and overall feel are closest to Billie's, so I chose Vivian as a base and downloaded her model by using QuixelBridge.

Based on the reference image, I tweaked Vivian's base model in ZBrush to make it as close as possible to Billie's facial structure. After sculpting it to a certain degree of resemblance, I used Maya's camera reference feature to further confirm the resemblance and returned to ZBrush to continue tweaking it, repeating this process until I was satisfied with the resemblance. The Maya camera reference function is very useful for confirming similarity.

After I was satisfied with the facial structure, I was ready to start creating the texture details for the face, and I chose the displacement map of TexturingXYZ VFace #31. Firstly, import Billie's low-level model and VFace base mesh into Maya. Then, overlap them in approximate positions and export. Then, open Wrap to initiate the wrapping process for the model and create SelectPointPairs to match the points. This time, you can connect the VFace mesh and diffuse to pick the best point to match.

After wrapping, you can add a Brush node to relax and project the mesh. You can also perform this step in ZBrush.

Then, I used Mari to bake the displacement map, and I chose VFace's fully calibrated displacement for the texture transfer. Of course, you can also watch the official TexturingXYZ tutorials:

Once the displacement map file had been exported, I used Nuke to modify the map grayscale, flip V, and convert the image into a 32-bit EXR map that can be used in ZBrush.

Then, I applied the displacement map to Billie's base model that I had already sculpted. As you can see, there is almost no loss of detail in the converted map.

Texturing

First, I used Marmoset Toolbag 4 to bake the Normal/AO/Cavity/Curvature map in 8K resolution, and then I brought all the textures into Substance 3D Painter. From there, I added layers to the texture maps to address any required touch-ups. At the end of the texturing process, I added some acne, dark spots, and blackheads to Billie's color map.

Then, I exported the Normal/Basecolor/Cavity map for Unreal.

Groom

I used XGen to create the hair. I've divided Billie's hair into four collections, starting with the main hair, then the loose strands on top of her head, the strands between her hair, and the face-hugging strand. During the hair-making process, thanks to Maya's camera reference feature, I was able to use the reference image as a basis for laying out and modifying the guidelines.

I also used XGen to create eyelashes, eyebrows, and the fuzz of the t-shirt. After that, I exported them as XGen cache files and imported into Unreal Engine.

Unreal Engine

In Unreal Engine 5.4, I set up the project using these settings for optimum results.

I first matched each model to the MetaHuman material, for example, I linked the Eyeshell to the Eyesocclusion material. Then, I brought in all the needed textures and substituted them for their respective texture maps within each material.

In the skin material, I added another normal map node to combine with the MetaHuman normal map, sculpted normal map, and micro surface normal map.

There is a nice way to fine-tune the look of the skin. I added this node setup to various parts of the skin shader, such as roughness. These material functions allow you to dial different regions of the face in Unreal Engine without the need to switch between Substance 3D Painter and UE5 constantly.

Because Billie's hair color changes from black to green to black, I modified the default groom material, added three DyeColor nodes, and added length adjustment and intensity adjustment nodes for each DyeColor node so that I could achieve the change from black to green to black and adjust the range and intensity of these three colors.

For the lighting system, I used the classic three-point lighting. The other three lights illuminate the glasses.

Rendering

I used Movie Render Queue to render the portrait and set up an array of console variables to ensure the highest-quality export from UE. Here's a look at the variables I used. It should be emphasized that in UE5.4, if you use Lumen, you must turn off Denoise for final rendering.

ZhuTao, Senior Character Artist

Interview conducted by Gloria Levine

Join discussion

Comments 0

    You might also like

    We need your consent

    We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more