Marcos Silva has shared a comprehensive breakdown of the Living Room project, outlining the initial composition plan, detailing the modeling and texturing workflows, and offering insight into the decision to utilize Unreal Engine 5.1 for the project.
Hi everyone, I'm Marcos Silva, originally from Brazil and now based in the UK. I've been in the industry since 2008, with a passion for 3D art dating back to the early 2000s when I used to create maps for Counter-Strike as a hobby. I have a degree in Character Animation, but I largely learned on the job, from online tutorials and personal projects like this one. Although my career began in animation, I eventually shifted towards VFX and have worked on various projects, including commercials for Coca-Cola and Nike, and Disney films like The Lion King and Pinocchio. Around 2019, I decided to direct my career toward real-time rendering and virtual production, which is the area that I currently work in.
The Living Room Project
This project is actually a spin-off of a larger live-action short film called Sim. In the short film, the background environment, which is a living room, will be created digitally. Originally, I planned to use Maya and Arnold to complete the short film, but since I started working with Unreal, I realized that I could do much more with it. However, I wasn't entirely sure if I could achieve the same level of realism using a real-time engine. So I decided to use the Living Room in the UE5 project to further test the engine.
Sim is a short film that my partner and I are working on together. It tells the story of two characters living inside a real-life simulation game. Our main references were games like The Sims and SimCity, movies like Scott Pilgrim vs. the World and Fanboys, and short films like The Flying Car and Craig's Pathetic Freakout.
For the living room, I wanted to create a cozy place where the couple would spend their nights watching movies and playing games. So, having a digital set filled with references to their personalities was essential in helping to tell the characters' stories. These two characters served as the main references during the early stage of the project.
First, I started blocking in Maya where I tried to match the layout of the set that I had available to shoot the short film. After filming was complete, I created a new blockout that matched the plate area (such as the couch, armchair, and coffee table) more accurately.
For the modeling part, I created some assets because I couldn't find any for a reasonable price, and for others, I modeled them myself just for fun. For example, the easel – I wanted something very similar to the one from the original The Sims, so I ended up building it myself.
Modeling was never my primary skill. I'm not sure if my workflow is the best (probably not, haha), but I always have fun doing it. Sometimes, I even model random props, just to relax. Like the SNES controller – I could have found a free one to use, but I ended up modeling one just for fun. You can see more details of this prop on my ArtStation or download it for free on Sketchfab.
Speaking of Sketchfab, the free license assets there were super handy! I found many small props to populate the scene. If I had to model everything, it would have taken me years! You can find the complete list of assets and the links that I used here. In my Sketchfab account, you can also find a few that I created, which are free to download. I'll try to upload more soon!
The Megascans assets were also good, but they didn't have much for interior scenes. So I ended up using just a few textures from them. Another significant source of props was the Epic Marketplace. I used a lot of the Twinmotion packs, which have great assets and are all free to use!
For the human characters in the scene, I used the MetaHuman tool from Epic. It was incredibly easy to import and pose the characters. The only custom thing I did was to add tattoos to them using Photoshop, just to make them a bit more unique.
Regarding lookdev, I had three main master materials for the assets I created: one for the props that use virtual textures, one for the props that don't use them, and a third one that used subsurface as a shading model. The project also had a USD master material for the props imported from Sketchfab and another one that came with the props from the Twinmotion asset packs.
For the props I made, I used Substance 3D Painter and Photoshop to create the textures. For some of them, I also used ZBrush to create the UVs, but I ended up using Substance 3D Painter auto-unwrap for most of the assets.
An example was the texture of the wall lamps in the "Night" light setup. Unreal isn't suitable for translucent materials, so I faked it a bit. I took a picture of a lamp with the lights on, Photoshopped it to wrap it into the UV space, and changed the colors to match the colors of the Unreal light. For that specific light, it works. But for the "Sunny" and "Sunset" setups, where the lamp is off, I had to use a different texture.
The heaviest asset in terms of texture was definitely the walls. I decided to use as much resolution as possible to avoid low-quality textures. I think it was a bit overkill, but since the performance was not my priority, it was okay. I ended up using 16 UDIMs for this asset. The texture of the wall itself was from Megascans (Stucco Wall, th5keedew), and the wood part was a procedural smart material in Substance.
In addition to the texture work on my own props, I also did a lot of quick passes on third-party assets, such as this Monstera plant, where I re-organized the UVs and added a bit of color variation for a more realistic final pass.
For the texture in the frames on the walls, I used three Edgar Wright fanart posters by the artist Johnny Dombrowski, and two concept arts from The Last of Us Part II by Matteo Marjoram and Balazs Agonton.
Since I’m horrible at drawing, I also decided to use Midjourney to create a few AI-generated background art pieces, like the ones behind the workstation, to add a bit more character and complexity to the environment.
Assembling the Final Scene
After creating the basic layout for the set, which involved positioning the couch, coffee table, and TV, I imported the furniture models that I had already created. Then, I started searching on Sketchfab for new free props that fit the project's concept. For these props, I used the USD workflow to ingest them into the project. This was very convenient and much easier than importing the .fbx and manually plugging in all the textures.
The props from the Twinmotion packs were easy to ingest, but I had to import them first into an Unreal project using version 5.0, convert the project to 5.1, and then manually copy the assets over. It was a bit of a hassle, but the process was fairly straightforward.
Overall, the set dressing stage was quick because I knew what was needed, so it was just a matter of finding realistic props to use.
Final Lighting and Rendering Setup
The "Night" light setup was the most complex one. The primary light source was coming from the TV, for which I used a Rect light with a screen emissive material. The lamps used a small light source that contained a Point light to work as a fill and another Point light with an .IES Light Profile to create a more realistic effect. For the .IES files, I downloaded them from c4ddownload.com.
For the "Night" setup, I also worked on some shot-based lighting to add some final light details on the characters, such as the rim and back lights.
The "Night" lighting setup
Breakdown of Wall Lamp viewport screen grabs
The "Sunset" and "Sunny" light rigs were very similar. I had a Rect light to motivate the TV screen and a directional light for the sun. Additionally, I had three Rect light sources right outside the window glass to work as extra sunlight – these were the lights that mainly lit up the living room. For the TV and window lights, I turned on Ray Tracing Shadows to have better quality, smoother shadows.
Sunny Ambient Lights
Sunset Light Setup, Height Fog & PPV
As you can see mainly in the "Sunset" light rig, I also used the Exponential Height Fog to create the light fog coming from the window. For the "Sunny" and "Night" setups, the fog helped to create a bit more depth to the set.
For post-processing, I ended up using just one for the three light rigs. The main things I changed were increasing the Bloom effect to make the scene a bit more dreamy, and I changed the Lens Flare Bokeh Shape to a Heart to help with the romantic mood of the scene. My plan was also to change the Lens DOF Bokeh, but I couldn't find a way to do this yet. For Global Illumination, I made some small tweaks as you can see in the image below, mainly to get better-quality reflections.
And below you can check the Render Settings that I used to render the final sequence.
For more details you can check this Breakdown video of the level:
Unreal, as much as I hate to say it, still has some limitations with a VFX Workflow type of project. For example, dealing with assets with multiple UDIMS is still a bit annoying and buggy. One thing I learned the hard way was to always turn on the "Use Full Precision UVs" parameter of assets that use multiple UDIMs. Otherwise, we end up with ugly texture distortion near the mesh edges.
Lumen is a breakthrough tool, but I feel it is still in its early stages. I spent a lot of time trying to find the perfect command line to fix some bugs. At one point, I had one prop that was always flickering in the render. After searching on forums, I found that we needed to add these two command lines:
- r.Lumen.ScreenProbeGather.ScreenTraces 0
- r.Lumen.Reflections.ScreenTraces 0
Sometimes it's like we need a cheat code to unlock some of the hidden features.
For some reason that I still don't understand, some textures broke sometimes during render time, resulting in funny results like the micro skin details texture glitch in the example below. The only way I was able to fix it was by closing and reopening Unreal.
However, the most challenging part was actually importing the cat's fur that came from Maya's XGen. It was easy to bring the fur into Unreal, but I had a lot of problems trying to import the UV data with it. This meant that I could only use a flat color for the fur. But since the cat was mostly in the background, it was good enough for me. Next time, I will try to use the Houdini hair system instead, which I hear is easier to import into Unreal.
With Unreal, we are breaking new ground every day! As someone who has been working with 3D for a long time, I can't emphasize enough how amazing this tool is and how important it is for all of us to learn it. Working with new technology is always a bit tricky in the beginning, but I believe Unreal will play an even more significant role in the VFX industry.
Marcos Silva, Virtual Production Unreal Lead
Interview conducted by Theodore McKenzie
You may find these articles interesting