Tim Burroughs shared the workflow behind the Laundromat project made for the ArtStation Medieval Back & Forth challenge, explaining how to save time when modeling and demonstrating the lighting and rendering stages.
Introduction
My name is Tim Burroughs and I have been working professionally as a 3D environment artist for around 3 years. I started my game art journey studying Computer Games Art at Anglia Ruskin University in Cambridge, UK, and after graduation, I struggled to find a role in the industry. I ended up landing a QA job at Frontier and worked there for a bit over a year. While working in QA, I focused on my portfolio in my spare time and made friends with some artists at the studio who gave me feedback and helped me develop my art. On the side, I worked on a few freelance jobs to build some experience including some outsource work for Dekogon and working on a vertical slice prototype for the game Tempest Rising, which I would later work on again once the game was funded.
My first full-time art job was Kena: Bridge of Spirits for Ember Lab. I worked remotely on this game through the pandemic for a year up to the release and after that returned to work on Tempest Rising making mostly hard-surface vehicles for the upcoming RTS game.
After this, I got my job at Rare, where I currently work. My work on Sea of Thieves was a big inspiration for the style of the scene.
The Laundromat Project
I created this piece for the ArtStation Challenge, Medieval: Back and Forth, in which I was fortunate enough to pick up 3rd place. These challenges run a few times a year and offer a chance for artists to enter various categories and compete to make awesome art with a preset theme. I love these challenges for a few reasons. Firstly they have two stages, concept and production, which means you get loads of beautiful and inspiring concepts to choose from. Secondly, these challenges have a time limit of around 2 months (7-8 weeks). Making portfolio projects can be a tough task, and often they end up dragging on for a while; having a tight timeline forces you to be smart with how you work and really focus to complete the piece in time. This is not my first challenge, so I had some idea of what to expect and planned the scope with the deadline in mind.
I chose Delpin Casado’s gorgeous “Medieval Laundromat” concept mostly because of the bright, vibrant colours and the contained interior with a limited set of dressing props. I felt that this concept would allow me to really focus on my sculpting and lighting.
When choosing a concept, I think it is really important to consider how many assets you need to make. Asset production is the longest and slowest part of making a scene and by choosing a concept with a limited set of props and a lot of reuse, you will have much more time to focus on the presentation and lighting.
For references, I worked with only a handful. I used the main concept and call-out sheet and also referenced various assets from across Sea of Thieves and the work of Glen Fox. Working with limited references really helps to keep your work cohesive, and this is especially important with stylised work.
Blockout
As I was working from a concept, the composition was set for me. One change that I did choose to make was to flesh out the rear of the building behind the camera. Making the interior a complete room gave me much more freedom to find supporting shots for my main composition and opened up the possibilities of what I can present and show.
I started by blocking out my assets. I like to create early versions of my assets that have the general shape and form of my final models but without the details. I ensure these are scaled correctly and I build the scene with these.
I get these blockout assets imported into my scene using their final naming, e.g., SM_bottle_01_a. This way I can just reimport the mesh with the final model and it will update all the instances in the scene at once.
I did the early blockout in Maya to try and get my scale and the building pieces that I would need organised. I then imported the whole building as one mesh into Unreal Engine 5.
This is different from how I usually work, which is doing the greybox in UE5 using primitives and then replacing that with meshes as I go. A complication of my working the way I did on this project was that I needed to update the building shell and remove parts as I replaced them with meshes. UE5 does not like rooms that are all one mesh for Lumen, so I needed to make sure that I replaced this shell with various parts such as the walls, floor planks, and beams.
Something I really liked about the concept that I was careful to push was the use of leading lines in the composition. All the lines point toward the open door, and it makes the composition very striking.
Modeling
I knew that I would be using Nanite in UE5, and this meant I could use my decimated ZBrush sculpt and so the basic approach was:
Block out in Maya, making sure to separate all the parts I wanted to be a different sculpt such as the back plate and the trim for the button panels on the washing machine.
Make sure each part is a separate mesh and then scale up any small parts. When using DynaMesh in ZBrush, it takes the mesh size into account for the resolution, so very small meshes become harder to work with.
Import the meshes into ZBrush using the FBX importer and subdivide or dynamic subdivide to smooth out the mesh and then dynamesh them all. I work at 4096 resolution with Polish turned on.
My approach to sculpting all the assets was basically the same. I used Clip Curve to carve into the mesh and then Orb Flatten Edge Protect to fix any artifacts and smooth the surfaces. I then apply Clay Polish and Normal Polish from the Deformation menu or Smooth with Shift depending on the material type.
Once the sculpt is done, I decimate it slightly and name each part with x_high. This is exported as my high poly. I apply a second decimation and name each part x_low, then I take that mesh back to Maya to UV and export that again as the low poly.
Every mesh was treated this way with the exception of the background buildings, which were mostly assembled from other assets with the walls and roof being planes to fill in between the beams.
The trees were also made in ZBrush. I started with a sphere and pulled it into shape with move elastic, the trunk was ZSpheres, which I then used Clay Tubes and Trim Smooth Border on to make a bark-like texture. I knew they were a background asset and would not be super important, so I tried to make them very simply and quickly.
The biggest trick to save time is to really keep things simple, use fewer brushes, and be consistent in the workflow. This sped up the process as I was not spending ages per asset on every tiny detail. I find that a ClipCurve and a few Orb brushes go a long way with the style I was aiming for. Finding ways to cut parts of your workflow down or simplify is a great time saver. Another tip is to make a very limited kit and be smart about how you reuse things. I made a single washing machine but with a few edits, I was able to make them feel much more distinct. I will go into some detail on the setup of the BP and how I achieved this later on.
Texturing
I textured the majority of my assets in Substance 3D Painter. I really wanted to keep everything simple but painterly.
Here is a breakdown of the setup for the washing machine. This is the same approach I took to all the assets. The important thing for me was to make it simple so that it was easy to keep consistent.
I start with a base layer of a solid colour, and after that, I build up four layers of colour variation. I use fill layers for these so that I can tweak the colours easily and then use a mask where I paint them in. I used the watercolour spots and a brush called Kyle’s Splatter Beautiful Mess, but any painterly splatter brushes work. The first two variation layers are to paint in value and tone and the second two are splatter to inject that surface detail.
I then layer on an AO tint and curvature to darken the recesses and make the edges pop. After that, it is just a case of using a passthrough layer with HSL to make any tweaks. All materials were made with this approach with the exception of the wood.
The wood was a hand-painted albedo in Photoshop where I painted the strokes in layers of different colours. I then took that into Substance 3D Designer to create the roughness and normal maps.
The material setup in UE5 was again quite simple with a few important controls.
I like to add controls for a gradient on all my assets so that I can add that darker transition where needed, this really helps soften where assets intersect or connect and add some subtle wear. You can learn more about the setup for gradients here:
One tip for Unreal Engine: I brightness-adjusted most of my base colour maps 1.5-2 times, this really helped make the lighting pop and ensure nothing was too dark.
Final Scene
When working from a concept, you have composition, details, and design solved, thankfully. The hardest part is translating it into 3D when you have things very far away from the camera. It is really easy to make your scene feel super flat by using too low of a focal length on the camera or by having your assets too close together. I find that when building my backgrounds I really push the space between pieces to force the atmosphere.
While filling out the areas of my scene outside of the concept, I looked a lot at real-world laundromats and emulated the layouts that I was seeing. Areas like the shelf were a great excuse to reuse my assets while adding interest, storytelling, and density. I generally try to group my assets in ways that feel more natural. I think about why something is where it is and what its use is, how someone would have used it, and why they would have put it or left it where it is. You can get a long way by looking at references and asking yourself those what-, when-, why-, and how-style questions. It helps to cluster props together in little groups as well and vary which props sit near which other props. In this image, I highlight the six main props that I used and where I placed them in the scene to show the spread and clustering more clearly.
Lighting & Rendering
Lighting was an area that I iterated on heavily and it was a work in progress right up until the end. With UE5 came Lumen, a new system that makes dynamic lighting and global illumination much more accurate. At the start of the project, I was using UE 5.0 but switched to 5.1 about halfway through. The updates to Lumen in 5.1 massively impacted the quality of the global illumination, and it looks like 5.2 makes further improvements.
Lumen really changed the way I approached my lighting. I was able to use a fully dynamic setup and still achieve some great vibrant results.
Here is a breakdown of the kind of lights I used.
EasyFog from William Faucher was used to help create atmosphere and is super adjustable. I layered up the fog cards to build depth in the exterior. This ArtStation learning tutorial from Peter Tran shows how this can be achieved.
Post-processing is also a really important step to get the painterly feel. Here are the main settings that I used.
I also used a colour-graded LUT to make it pop. It is subtle but by pushing the mids in a curve, tweaking the brightness, contrast, and saturation, I was able to refine the image colours.
I like to use a Sharpen post-process material as well, which you can find a breakdown of here.
Animations were all done in Blueprints. I will show you how the washing machine was set up:
All the animations used the same timeline technique to drive rotation.
VFX also helps to bring the scene to life. I created a smoke particle using this tutorial with some modifications and a dust particle based on this tutorial.
I highly recommend adding a few particles to build atmosphere and movement to your scene. I also threw in the old reliable bird particles effect from the Epic Zen Garden demo. I use these birds in most of my scenes as they bring some easy life to the scene and are really performant and flexible.
Conclusion
The tight deadline is always a challenge. Seven weeks for a full environment, especially when you only have evenings and weekends, is not a lot of time. Breaking things down early and nailing the block out really helps to keep you on track. I always suggest doing as much as you can in ways that are as low time investment as possible. Blocking out using simple meshes in Maya or Unreal for example. Making sure to nail the composition and solve any areas that you need behind your camera or outside of the field of view. The lower the investment of work that you do early, the easier it is to change or scrap when it is not working. The biggest mistake I see in learners is committing to things far too early and locking in the mistakes. Working fast and loose at the start speeds up everything after.
I talked briefly about it earlier but proxy meshes are one of my favourite ways to work which saves me so much time. By making quick meshes that are the correct size and rough shape and importing them with the final naming into the scene I can just replace the mesh with the final model and materials and every instance will update. Take for example the jugs in my scene. I make a rough model that serves as the block out for my sculpt, I import it named SM_jug_01_a and use it to dress my blockout. Once I have the finished model, I can save it over the top in my files and then just re-import in the engine. Now every jug in the scene will update to the final model.
My biggest piece of advice is to just keep going! In Tor Frick’s GDC talk on the world of The Ascent he mentions how they just did not want to do certain things and so found ways to make what they needed in ways that avoided those. I carry this mentality through to my work now and just try to cut down on the parts that I do not enjoy or skip things that I do not want to do in favour of investing more time into what I love doing. This helps keep me on track and motivated and allows my passion to come through in the final result.
Hope you found this useful and I look forward to seeing the amazing work of everyone on ArtStation!