Mike Gomez did a breakdown of his realistic UE4 Dance Hall scene, discussed his workflow in Master Material and lighting approach and shared useful advice for other artists.
In case you missed it
you might find this interesting
I don’t have a brother or sister, so I’ve been playing a lot of video games since I was a little child, it’s where my love for video games showed up. Even if I didn’t know anything about it, I said when I will be a grown-up, I will make games. 20 years later, here I am, my passion is still there!
I studied at the “Haute Ecole Albert Jacquard” a university in Namur, Belgium, where I got 2 diplomas because I made an extra year to learn more.
After school, I was a 3D artist generalist in some studios in Belgium (Games and VR experience, video mapping, and so on).
After that, my partner and I decided to move to Canada. I got a job as a Lighting Artist at Beenox, where I had the opportunity to work on the development of Call Of Duty: Black Ops 4 and Call Of Duty: Modern Warfare (and more to come!).
I wanted to make a realistic project in Unreal Engine 4 with ray-tracing, and with all the new knowledge I learned so far as a lighting artist and environment artist.
This idea popped up in my head when I was in the plane to come back to Canada after my journey in Belgium, somebody watched “Step Up” movie in front of me, and even if never watch the entire movie, the dance room gave me the idea for this project.
After 1 or 2 weeks of thinking about it, I started making a reference folder about the dance room and some props.
I started by making a blockout in Unreal Engine 4 with cubes and the character mesh from Unreal to keep good proportions.
Then, I made a list of props that I will use in the level design, and I sort in different categories:
• The foundation meshes like walls, roofs, ceiling, ground, and so on, which will use tileable textures and vertex paint.
• The props that will be used for tileable textures.
• The props which will be baked into atlas textures.
When I finished the blocking, I exported from Unreal to Maya and started modeling all the props.
Even if I made a list, it’s not possible to think of everything, so I had to model some props after. Then, I model all the foundations mesh in a modular way, I export them into Unreal to see the result with some textures, I also made some tests to find a good sun angle, pitch, and mood for the scene.
After some time of producing the level, I wasn’t very satisfied because the environment felt empty and lifeless, so I think about a new context and background to add; I change the clean and modern room to a dirty and old room in the renovation.
So I model new props and think about the existing pack in my library like the construction pack from Dekogon in the Unreal Market place.
These packs allow me to focus on the rest and to save a lot of time for modeling and texturing!
For the texturing part, I use a lot of Megascans textures because Epic Games bought Quixel 2 or 3 days after I started the project and make them free. I was so excited to try it!
I could test Megascans textures in high resolution! That was so cool!
However I couldn’t find all the textures in the Quixel library, so I looked to the CG texture website to find the missing textures.
For all the baked props, I separated them into 3 atlases of 2048, I use xNormal to generate the AO, curvature and the normal map and Substance Painter to texture them.
Workflow In UE4
In Unreal Engine, I use the master material in every project now, it allows me to make a lot of things like:
- Parallax occlusion mapping.
- Having 4 textures sets, 1 for the base material, and 3 others I can paint in vertex on channels R, G, and B.
- Channel A allows painting water puddles in vertex, too.
- I can add ripples in water when it rains.
- I can add a random color on every instance in the base albedo.
- I have details texture for albedo and normal map and so on.
I add switching parameters to activate/deactivate some functionalities to optimize the material!
At the beginning of this project, I wanted to have very different moods, so I think about what time of the day I wanted to have (Day, dawn, overcast, and night).
I can alternate between all the moods with the level systems and the lighting scenario function.
The level system in Unreal is very cool and well made, it allows us to have a principal level and a lot of sub-levels streamed inside, this allows us to work in a sub-level and have the principal level still visible.
The lighting scenario function allows to have all the lightmaps baked in only one level, for example, you can have several moods of the same level!
I use this lighting scenario function for a long time now and for some projects, even if it’s for abandoned projects or projects still in production!
I don’t like to have only one lighting, in our job of lighting artists, we need to iterate a lot, and most of the time, we just keep only one version of our lighting.
For my personal projects, I love to make different moods, this changes the vision of the project and creates variety.
I started working on the lighting after I put my first assets in Unreal and build the entire scene. In lighting, we often start with PBR values, so I search for HDR skies in my library to find 4 different skies that matched what I wanted, after that, I put them into Unreal for the calibration.
When I had finished calibrating the skies and find a different good sun angle, I had a good idea for the different moods of this dance room.
Even if we start from PBR values, as lighting artists, we need to guide the player and create dreaming ambiances, for example, day time is often boring, so we can boost the color of the sky and the sun to have a better result!
So I modify some colors values and intensity to have a more distinct mood.
When I was baking the sun and the ambient, they made the most of the job, so I just add small light sources to add more details, colors, shine and to avoid pitch-black areas.
Most of the time, the small lamps on the walls were enough to light the posters and the trophies, but for the night and overcast mood, I needed more lights, so I turn on the spots in the ceiling to have a light pool which bounces in the whole room!
At the end of the project, I find that I don’t have enough to show with the dance room alone, so I started to make a bathroom with 2 different lightings.
I’ve already used ray-tracing with one of my previous projects but it was just a small scene, for this one, I just thought it would be cool to use ray-trace in a full environment.
The ray-trace comes with Unreal engine 4.22, to activate it we needed to go in the project settings, activate the raytracing and change the DirectX mode to DX12, after that, a simple restart of the project, and the ray-trace was active!
Within the 4.24 version, there are new the beginning set-up for projects, and we have the possibility to activate the ray-trace directly in the creation of the project.
There are many options available in the output log of Unreal, in the post-processor node in material, you need to set up correctly all the options for ray-tracing because it’s easy to lose a lot of performance with 2 or 3 options!
There are many functions for ray-trace, for example:
- Global illumination
- Ambient occlusion
- Even audio can have ray-trace!
Obviously, it’s important to choose which utility we want for raytracing, we cannot activate all the functions at the same time because our graphics cards aren’t powerful enough!
However, you can make a compromise, for example, if you have a sci-fi game with a lot of metal reflections, it will be very useful and wise to activate the reflection in ray-tracing. Another example, if you have a game in a forest, the reflections are less important than the GI, so you can activate the GI in ray-trace!
There are still bugs with raytracing in Unreal Engine, but in 4.24, a lot of functionalities work with ray-trace. The documentation for ray-tracing on Unreal website is very complete, you can check it!
For my project, it was just for my portfolio, so I didn’t check for the performance, I activate a lot of functionalities in ray-trace like the AO, shadows, and reflections.
For the final part in my project which is the post-prod, I add a look-up table (LUT) for the color grading, a chromatic aberration effect, some depth of field on rendering camera, a subtle lens flare, and dirt on the lens.
I used DaVinci Resolve to create the color grading for the LUT for every mood. Using this soft at my job, I just thought it would be great to use it for my personal projects.
This soft is very useful and efficient because it allows us to edit images and videos, create color grading, etc. Of course, Adobe Premiere does all of it but DaVinci Resolve do it better, faster and more precisely, especially, for the color grading part.
In the color grading part of the soft, we can create some kind of layers, thanks to the nodes, and every node has its own parameters.
A mask system is also available to isolate the parts we want to keep, it depends on the luminance, color, and saturation.
As a beginner, I create a simple setup made from 6 nodes, 2 lines with 3 nodes each. The first line is the luminance, the second is the color.
The first column is for the shadows, the second one is the mid-tones and the last one - the high- lights.
In the end, I added 2 nodes for the final adjustments, this way, I have overall control on the saturation and contrast if I want.
Finally, the last thing I did, is to set up the auto exposure for my camera, then it reacts the way it’s supposed to, no matter what happened.
We can visualize the EV in our level, go to “Show -> visualize -> HDR (Eye adaptation).
In the end, I can’t tell you how many hours I spent on this project, I began a few days before Epic bought Quixel, and I worked on it a few hours per week.
My wise pieces of advice to create a project from A to Z without losing motivation and having a persuasive result would be:
- Take your time! Take your time to make your stuff, and remember the knowledge you learned so far from not making the same mistakes again.
- Ask for feedback! Accept criticism and advice from people around you. I didn’t say to do everything they told you but sometimes it’s good to get some distance to know what’s best for our project.
- Don’t be too ambitious! When we began the project, we tend to see the thing way bigger than we can be able to do. So we give up pretty fast due to a lack of motivation, especially, when you are a junior.
- In practice, I would tell you:
Be careful with the details, having storytelling is always useful and a plus to your project.
- The lighting is very important (I don’t say that because I’m a lighting artist) but having the best environment in the world if your lighting sucks the entire scene will suck. Good lighting makes a big difference and gives your scene a “next-gen” look. If you don’t believe me, go look at all those empty environments made of simple concrete walls with stunning lighting.
- Use a lot of PBR values for the skylight, sun, and lights help your scene to be rendered more realistic (even for cartoon project). You can modify some values after but, at least, you will begin with good values.
- Take care of the colors you use, the good colors are the ones that match well together. The Adobe website is great for that, go have a look, it’s very useful!
If you can’t do it, if you’re stuck, go see some tutorials that will help you, ask the community for some advice to improve yourself. Unfortunately, I haven’t any tuts to show you for the lighting, the key is the practice.
I would like to thank the people who help me, by giving feedbacks and critics on Discord, friends, etc, that was very helpful!
And a special thanks to my soulmate, Christine Fioroni, who made the VFX for my scene and gave more life into it!
And of course big thanks to Arti, who asked for this interview, and thanks to you, who read this, I hope you like it!