Hi Elliott, This is a great breakdown and very generous in sharing your process and insights, you came a long way from the vending machine days!
Are you planning on releasing the UE4 project to the public? Or only builds? I'd love to play around with it in the editor if possible!
We’ve had a little chat with the environment artist Meggie Rock. She talked about the production of her most recent environment in Unreal Engine 4. It’s a great set-piece with wonderful lighting, rich meshes and materials. Check it out!
My name is Meggie Rock (check out artstation and website pages) and I’m an environment artist from Austin, TX. My past work has been stylized, handpainted 3D environments and 2D illustration, most recently for KingsIsle Entertainment. While lowpoly art offers a fun challenge of meeting technical restrictions and preserving aesthetic quality, my goal with this project was to refocus my portfolio on a more mainstream, AAA pipeline. I wanted to challenge myself to utilize a modular set and a limited, cohesive texture palette within UE4 while focusing on lighting and foliage to make an lush, inviting environment.
I’ve always loved large, explorable environments. I was inspired by the style of Ryse: Son of Rome and the culture of Dragon Age: Inquisition. I also drew largely from real-world reference, including Byzantine, Roman, Greek, Syrian, and Tibetan (etc.) architecture and patterns. I knew I wanted to work with a water element from the beginning and I found a simple reference image of a Roman staircase that I liked, which informed the second floor and vertical space. I let the level design develop organically overtime and wasn’t afraid to make changes based on feedback. I continued to collected reference throughout the project and tried to work new ideas in as I went. Really its a scene built around flexibility in order to keep things interesting. Of course the trade-off with a large environment is that it’s easy to lose steam and focus.
Since I was coming back to 3D from 2D illustration, I started by warming up with small assets that I thought could be used to prop out the level later. This helped me solidify my pipeline and hone in on the style I was going for. My prop pipeline is this: block out in 3ds Max (or Zbrush), detail in Zbrush, retopo in Topogun if needed (utilize Max mesh if not), unwrap, texture in Substance Painter. Some of these steps can be combined or bypassed based on detail level, but Substance was probably the most useful tool for me since it allowed me to create Smart Materials that let me texture assets quickly and maintain a coherent style, color, and material palette.
The materials I used throughout the scene were created in Substance Designer. Not only did this allow me to reuse those materials in Substance Painter and tie the scene together, it also allowed me to make adjustments quickly and easily to the overall tone of the larger textures like the walls and floors. I try to make the more general textures, like a base terracotta or customizable marble, before I start creating tiles or patterns. Using exposable parameters and referencing graphs within Substance saves a lot of time in the long run!
I looked to Ryse quite a bit for guidance on how Roman-esque textures and tiles fit together in a game environment. Instead of going crazy with props in this scene I decided to focus on the floors and ceilings and allow them to carry a lot of the visual interest. I knew my materials needed to work together and not fight the overall scene so I tried to keep them subtle and not too noisy, ie not too much contrast or saturation, which was a challenge considering that I wanted a stark black and gold look. Some of my Substance Designer materials like the V-shaped marble tile have the golden pattern calculated within the material itself. For the larger patterns, like the courtyard ground, I used a simple trick to optimize texture use, and that is to simply cut and unwrap the mesh while using multi-sub object materials to texture it. This also lends itself later to vertex painting in blend materials and grunge by giving you more vertices to work with.
Approach to Production
I made my arches fairly early on since I knew they were going to be a big part of the scene. They helped me block out the flow and scale of the level and solidify my walls and floors. They evolved quite a bit throughout the project as I got more feedback, but since I was working with the Unreal grid within Max and had focused on unwrapping the different parts of the arches intelligently to tile and/or be used separately, the changes were pretty unobtrusive and nondestructive. Looking back I probably would have planned a more optimized unwrap, but as a test it worked well.
I decided after making the olive tree that using SpeedTree was overkill and that I would get better results from hand-making the rest of the foliage. They are mostly photobased with the help of B2M (the lily flower is a simple Max gradient texture baked down). The vines were a lot of fun despite also being a bit of a pain. It took me a couple of photoshoots to get the density and variation in the vine clusters right. I looked to Dragon Age to see how their vines were constructed since I love the foliage in that game. Small intersecting pieces give the mesh more volume.
While optimization is certainly something that has been instilled in me from my previous (lowpoly) jobs, I did try to allow myself some freedom in my technical restrictions, especially since I knew I wanted this to be a portfolio piece. I inherently try to minimize polycount and unwrap intelligently as I go, but there is still a lot of optimization that could be done to improve performance within UE4, specifically with the way my materials are set up. The Speedtree color variation node helps give some variation in foliage without having to make a bunch of unique meshes or textures. Similarly, utilizing vertex painting is a good way to get the most out of your base materials. Baking the lighting did help performance and the level runs great, but there’s always room for improvement!
A big change I made halfway through the project was to switch from dynamic lighting to static lighting. I liked the simplicity and quickness of dynamic lighting for such a large scene, but ultimately, quality and performance are what matter to me the most, so I really tried to learn the most I could about lighting in a short time to achieve these results, still it was a lot of trial and error. I pushed the bounced lighting, more-so in the directional light than in the sky light to fill the scene. The cool, light blue sky light helps balance out the warmness of the directional light.
I really didn’t like how point lights were behaving as fill lights so I used the technique of bouncing a spotlight off a white box to fill dark areas, both of which (light and mesh) were set to not cast shadows. I also didn’t shy away from using a lot of reflection spheres since I have quite a lot of reflective materials throughout the scene. Some problems I encountered were with the drapes in particular. The drapes are mostly composed of doubled sided plane meshes and the baked lighting was causing all sorts of errors. I ended up using a subsurface scattering shader to allow some light through as well as flipping the mesh faces so that the scattered light was effecting the correct side (interior). Lighting is hard and it’s a bunch of small things that contribute the larger scene as a whole, so be willing to make adjustments and compare the results often. Also always be looking for feedback. That’s the most important thing I took away from this project. Being open to critique and being willing to try different techniques is what will really take your art to the next level.