Could you explain how you made the custom grunge generator?
Amazing work sir! Congratulations
Lighting artist Mike Marra talked about his recent environment, showing how he created the lights, produced vegetation, ivy, and architectural elements.
Hey there! My name is Mike Marra and I’m an Associate Lighting Artist at Sledgehammer Games. I graduated from Ringling College of Art and Design in May of 2016 and have spent my first year in the industry working on the upcoming Call of Duty: WWII, a game that I’m extremely proud to have been apart of creating.
The majority of my day-to-day as a lighting artist consists of lighting interiors, exteriors, and in-game cutscenes. My additional responsibilities include, color correction with lookup tables, fog adjustments, capturing skyboxes, and scripting lighting related events like flickering lights, interior to exterior transitions, depth of field changes, and exposure shifts.
The barn environment started out as a series of tests in what I call my “Whitebox” level. A Whitebox is basically a controlled lighting environment with minimal geo in which you can test things without having to compile a full map. It’s a great tool for rapid prototyping and quick idea generation. I used my Whitebox to test materials, skyboxes, and work out exactly what I wanted to create. Think of it like sketching for a 3D artist!
During my research I was surprised by the lack of information about realistic skyboxes inside of Unreal Engine. So I’d say my biggest takeaway from this entire project was figuring it out on my own with trial and error.
After watching a few tutorials I decided to try bringing in a panoramic sky and using it as a skybox. I brought in the pano as an HDR to be used in the skylight and a TGA to be used as the skybox texture. For the skybox geo, I used the default skysphere and applied my own material to it. Here was my first result:
This was not the result I was hoping for. The texture was flat and lacked subtle variation in the colors that you would expect to see in the real world. Then, by chance I stumbled upon a node that completely changed the game, “DeriveHDRfromLDR”.
From my understanding this node takes lighting information from an LDR image and converts it into a “fake” HDR image. With a little tweaking to the material, white balance, and exposure, I achieved the result I was looking for. The most important input here is the HDR Intensity. This basically controls the exposure/brightness of the sky. As you can see, the sky actually became brighter than the rest of the scene and the depth of the clouds was tremendously enhanced!
Keep in mind that this material isn’t a quick fix. In order to get a truly accurate sky inside Unreal you need a multilayer solution. The three most important factors that contribute to the overall look of a sky are in my opinion exposure, scene color, and white balance. If you can get these 3 things and the sky material correct, you will be in good shape.
The ground started from an awesome Gumroad tutorial video I watched a while back by Aaron Kaminer. He breaks down this shader in a way that’s easy to understand and shows you how to make it parameterized. You can find it here.
I made a few changes to the material, mainly altering the textures/roughness to be much more wet and muddy. From here, I just applied the material to a ground plane and used the mesh paint tool to paint in my puddles! I used a high poly plane for this and utilized tessellation. This material is designed around using heightmaps so tessellation is key here.
I spent a good amount of time online looking for moody images. Being a Lighting Artist, I’m naturally obsessed with creating moods in my own artwork. I really loved how the foliage and water looked together so I thought it would be fun to play off those elements and build a scene around them.
Spending time gathering good reference is crucial to setting up a solid foundation for your artwork. I spent easily a few hours trying to find the right images. Take the time to research and it will pay for itself in the end.
The next step was to make the barn. Utilizing the reference I gathered, I was able to progress quickly. A big part of my workflow is reusing assets I’ve made for other projects. This frees up time so I can focus on what I love, Lighting! I created the barn by painstakingly placing each wooden plank until I was happy with the shape and silhouette. The material for the plank consisted of a basic tiling texture and a simple single value for both the spec and roughness. Nothing fancy here.
The one issue I ran into while kitbashing was that it was obvious I was using the same plank everywhere. To combat this I rotated and flipped the geo in areas where I felt it was obvious so that the texture would be somewhat offset.
With the barn kitbashing complete, the next step was to bring in foliage. I am lucky enough to have a 3D Artist friend named Sarah Lynn Reynolds who allowed me to use the awesome plants she had created in a previous project. You can some of her work here. I placed all 4 variations she made into the Foliage Paint Tool and went to work.
The next step once I was happy with the placement of foliage was to take another quick pass at the sun direction. I tried a few variations to see how different sun directions affected the overall mood of the scene.
As you can see, changing the sun direction had a huge impact on the mood. While the sun direction in these two shots gave more form to the barn, I feel like I lost the ominous/creepy vibe the original lighting had. I decided to keep the original and use spotlights in key areas to “fake” the light in an artistic way, adding rim lights to objects in the scene to give them more form and enhance the depth.
I used spotlights to rim light the hay barrels (1) and left side of the barn (2). I also added a large spotlight behind the barn (3) to break up the lighting on the ground.
Once I was happy with the Lighting, I moved onto the polish phase of the project. I knew I wanted to add some sort of overgrowth to the barn but I wasn’t sure how to go about it. Then, I remembered this neat little tool an old instructor told me about called Ivy Generator. You can find it here.
This program allows you to bring in an OBJ, set a growth point, and generate procedural vines on it. Once it’s done you can export the mesh and use it how you see fit.
The only downside is that the vines are extremely high poly and need cleanup if you care about optimization. I wasn’t concerned with the poly count so I brought them in as is. Aside from altering the diffuse textures to some I found on the Ivy Generator website, I used the same shader as the grass in the scene.
With the ivy placed, I did one last tweak to the diffuse texture of the barn to get a little more color variation in the scene. This was my final result:
I hope this breakdown helped you understand my process and you’ll be able to apply some of what I’ve shown here to your next project. If you’re interested in seeing more of my work or just saying hello, you can visit my website or ArtStation!