The GDC clip is basically him talking on others people work completely unrelated to what he's supposed to sell. High five!
Michael Wu showed how he builds really busy everyday scenes with beautiful material setups.
My name is Michael Wu and I’m an environment artist in San Jose, California. I am currently working at Moback, a VR/AR studio in the Silicon Valley. I first was introduced to 3D art in high school where I was able to take a couple of 3D animation classes. I went to at San Jose State University to study Animation/Illustration and focused on 3D modeling.
Café Lucia is originally an environment for the short film The Moment. Diana Martinez and Kevin Maier, director and animator/story artist respectively, briefed me on the initial concept of the café and left me to fill in the blanks. I wanted the overall tone and mood of the café to be warm, mellow, and inviting; as if one was having a nice cup of coffee. I felt a slightly more stylized and softer aesthetic would go well with that tone. The café was designed to incorporate the most interesting elements of several local cafés. The warm color scheme was also planned to evoke the coziness of the space, with some dashes of cool colors for contrast. In the layout of the café, it was important to have a clearly accessible second floor, in order to convey a larger, more open space. After the film ended I wanted to make the café into a game ready environment.
When making an environment of any size it’s important to plan. Come up with an outline that details the vision and key points of your scene. What are the broad themes and mood? What style and design choices will you make to achieve those? What is the timeline for your project? When is your deadline? What can you realistically achieve in that time and do you have to adjust your scope to actually finish the environment? John Griffiths has a good video regarding project planning.
Create an asset list of meshes, textures, materials, etc. you may need to make. Feel free to add or remove these as the project continues. You can use a project management application like Trello to help you keep track.
I first started with a block-in inside Maya, to get the correct scale and functional placement in order to make the café a realistic business. That meant answering questions like what is the proper spacing between tables so people can walk past? How much kitchen space and equipment is required to serve a café full of customers? Where is the restroom located? Where are the electrical outlets? Where will the light fixtures be placed so the café can function at night? Using human scale models within the scene helped maintain a consistent and realistic scale in the environment.
Maya Block In
No prop was designed to be a hero piece. Rather, I approached the scene with the frame of mind that each asset would contribute to the scene as a cohesive whole. A majority of the pieces were modeled just in Maya, but if I needed to add some wrinkles or extra detail I took the base mesh into Zbrush to do so. I then brought the asset back to Maya in order to retopo and complete the low poly version.
Backpack Asset Pipeline
When set dressing the space, it’s important to have a few compositions and/or storytelling moments in mind. Having the camera angles selected for your glory shots will help you decide where to place props to fill in space. If you don’t have the camera positions decided on, then come up with some storytelling moments that can be interesting. Let the storytelling moments create the focal points and arrange the composition around that. I approached the café set dressing with the goal in mind of making the café feel like there were a bunch of customers going through their daily lives, right before they all were magically deleted from the scene. Different patrons doing different activities inside the café meant plenty of storytelling vignettes for me to find an interesting composition.
Creating a sense of depth is important for a more visually appealing image. An interior consisting of just one boxy room is boring. Building an interior with multiple rooms and verticality introduces complexity and variety. In my composition, I made the conscious choice of showing the stairwell and 2nd floor. Showing off that depth helped sell the café as open and inviting.
Multiple Rooms and Verticality
Café Lucia felt barren without artwork on the walls so I used some real-world art of my own and a little Photoshop magic to mockup art showcases one would normally see in local cafés.They add just enough visual noise to prevent the walls from feeling empty and are just abstract enough to allow the eye to not linger too much on them.
Make sure your texel density is correct for the scale you are planning for the scene. Look at Leonardo Lezzi’s tutorial for more information. My texel density was 10.24px/cm (a texel density common for First Person Shooters) because I wanted the texture detail on the assets to hold up when I had the camera close up.
When using the PBR method for texturing, they need to be authored properly so they can light properly. If this step isn’t done correctly then that can cause compounding problems inside the game engine, such as blowing out the lighting in an attempt to get super dark materials to catch light. Tilmann Milde’s Unreal 4 Lighting Academy Tutorials are great resources to watch on the subject. Too-dark albedo colors will absorb the indirect bounce lighting in the scene and everything will be darker as a result. A good way to check in Photoshop is to look at your texture’s median luminosity in the histogram. The luminosity should not be lower than 50 (or 20% darkness) or higher than 240 (or 95% lightness). For non-blacks, try to get it above 100 luminosity.
When checking albedo values, know that the eye perceives different colors as being lighter or darker than one another. For example, a 20% value brown, blue, and gray all have different luminosity values. Because of this, you need to double check what colors you use in a texture to ensure that they are above 50 luminosity. ORIANART had a good image explaining this.
Perceived Albedo Values vs Their Actual Luminosity
Roughness range plays a key role in defining the readability of your environment. When putting together your scene, make sure there is some roughness contrast between assets. If you look at your scene through the roughness visualization in UE4, you should be able to distinguish between objects. If everything’s the same shade of gray, the overall environment will feel flat and your materials won’t feel correct.
While working on this scene I looked through a number of PBR materials from Substance Source and Substance Painter to get a feel of what the roughness of a certain material would be. I later developed a chart of approximate material roughness values to help guide and keep my materials’ roughness values in the correct ballpark. Of course, roughness for each material will vary based on the condition and environment the material is in, so use this chart with a grain of salt.
Approximate Roughness Levels Based on Material Type
I recommend making several master materials for a scene. Master materials allow the scene to run smoother than having a bunch of individual materials applied to each asset. They also make global changes to the materials simpler. When making master materials use Parameter nodes in the material editor and create material instances from the master materials. Apply those material instances onto the meshes, not the master material itself. Gnomon has a great masterclass covering this topic (as well as a bunch of other UE4 topics).
Master Material Example
To push the dimensionality of the floorboards and bricks, I used parallax occlusion mapping in their materials. It really helped push the 3D definition of these tileable materials without having to use actual geometry for the floorboards and bricks. Keep in mind that parallax occlusion mapping is a relatively expensive function to use, so use sparingly.
Parallax Occlusion Mapping Master Material
Parallax Occlusion Mapping Comparison: Off vs On
Because a tiling texture will get super boring to look at over a large area, decals are essential to break up the
monotony. Use decals to add subtle wear on the floorboards, table tops, lower portions of furniture and walls where people place their shoes to help add a sense of believability to the scene. To enable Dbuffer Decals, decals that show up in baked lighting, open up the Project Settings and enable DBuffer Decals under Rendering.
Decal Comparison: With vs Without
I wanted to convey an inviting tone with two separate lighting situations, natural sunlight for the daytime, and a contrast of warm interior lights against cool moonlight for the evening. For this task, I used static lightmaps.
When utilizing static lighting in UE4 it’s important to make sure the lightmap resolution per mesh is consistent. To adjust these values go to the mesh’s Detail Panel and play with the Min Lightmap Resolution and Light Map Resolution values. In the scene view, you can check the lightmap density of the entire scene by clicking on the View Mode > Optimization Viewmodes > Lightmap Density. Getting everything down to blue is the way to go for an actual game; with yellow to red being too dense to bake quickly. I kept my lightmaps on the green spectrum to squeeze a bit more archviz-level light detail into my scene. Optimized lightmap UVs allow for quicker iteration times between tweaking light settings and baking to see the results. What would normally take hours to bake can be reduced to 15- 30 minutes, even on a mediocre 4-year-old laptop. When baking out lighting for tests, opt for Medium quality settings. I found Preview quality just didn’t have enough fidelity to reliably judge lighting for fine-tuning. Again, Tilmann Milde’s tutorial series is a great resource to learn more.
Lightmap Density Comparison: Bad vs Good
I used the 4.18 version of the Unreal Engine in order to leverage the Multi-bounce Indirect Lighting from Skylights feature. This is an important feature for an interior scene because, without it, the bounce lighting would not behave realistically and the café would be artificially dark as a result. Indirect bounce lighting only works properly if the albedo values aren’t too dark, which is why making sure your albedo values are correct is crucial for using indoor lighting.
World Settings Lightmass
I opted to create my own skysphere to light the skylight instead of using UE4’s stock sky. I initially wanted to use a golden hour/ sunset HDR but found that it would have made the whole scene way too warm. Instead, I went for a winter midday HDR to balance the warm interior with slightly cooler sky lighting. When making a custom skysphere, make sure that the skysphere scale is as big as the SkyLight’s Sky Distance Threshold. I adjusted the emissive intensity of the HDR to be slightly blown out to copy how a bright outdoors would look like through the lens of a camera placed indoors.
I designed the front of the café to be mainly windows in order to bathe the café in natural light. Large swaths of natural light complimented the warm, relaxed tone I was shooting for. The windows’ latticework would create interesting shadow shapes onto the floor, creating visual interest. To funnel as much lighting from the skylight as possible I used a Lightmass Portal at the front windows.
Lightmass Portal and Windows
For the daylight scene, I mainly used a stationary skylight for the bulk of the lighting, a stationary directional light to imitate the sun, and a few static point lights on the 2nd floor and stairwell.
Day Point Light Details
Day Detail Lighting
For the night time scene, I relied on the warm interior lights and used the cooler stationary skylight and stationary directional light to provide some contrast. I placed static point lights on each active light fixture in the scene and then added a few static spotlights to intensify the brightness in key focal areas of the scene.
Night Spot Light Details
Cameras in UE4 behave similarly to real life cameras, so having some photography knowledge is helpful. Because real life photographers increase the exposure on their cameras to compensate for darker interiors we have to as well. We can do so by increasing the Exposure Bias in the Post Process. In general, you must increase the exposure to increase the scene brightness instead of increasing the light intensity. In real life, you can’t adjust how bright the sun is or how bright a lamp is, but you can adjust how your camera handles the light coming in.
Post-Processing Exposure Bias
Prior to post-processing, Café Lucia had a lot of warm elements (albedo and lighting) to help push that coffee theme. However, the eye would get bored looking at just warm elements all the time so I used some post process effects to help cool down the image and provide contrast. I used a LUT to introduce cool tones in the shadows.
Day Post Processing, Without vs With
Night Post Processing, Without vs With
Working on an entire environment can feel very daunting. One way to avoid that anxiety is to think of your project as just making a string of props one after another. By breaking your project up into actionable chunks, your mind won’t be paralyzed at the thought of creating this one huge thing. Just be sure to reference back to your plan once in a while to make sure you are still lining up with your overall vision.
Join art communities to get feedback on your progress. Polycount, 80 Level’s Show and Tell Facebook group, or Jeremy Estrellado’s Discord are some great starting points.
Lastly, just realize that environments take a long time to properly build and you just have to sit down and put in the time. Keep going and just solve one problem after the other. Solve enough problems and you’ll have a nice shiny environment on your hands.