Ryan Dao, a 3D Artist, has shared with us the details of the Laundrowave Project made with Unreal Engine, revealing the secret of how stylized filters help create a cyberpunk sense and a painterly look.
Introduction
Hello! My name is Ryan Dao and I’m a 3D Artist focusing on environment art. I developed my skills way back in college at the Art Institute, and kept working on my skills after graduating. I learned a variety of things in college, from fundamentals, game design, coding, and 3D art, but ended up specializing in environment art. I have contributed to many projects throughout my career, from small freelance gigs to indie games, and AAA games.
Why Unreal Engine?
I chose to work with the Unreal Engine because it is free and there are a lot of resources for it. I have also created older work in earlier versions of the engine in the past. I really like the Unreal Engine for composing and lighting my work.
About the Laundrowave Project
My Laundrowave project has been something I’ve been thinking about for a long time. I like laundromats and taking pictures of them, so over time, I had a good amount of references to draw from. Though the primary reference was from a laundromat I visited in Japan, I also looked up reference images on Google. The references provide a foundation and starting point for me to draw from, and then from there think about stylization.
Blockout and Modeling
The blockout process was fairly simple. I first created basic assets that generally match the footprint of the asset it will eventually become. I then export those blockout assets to Unreal and compose the scene with them. As I work and iterate on an asset, I export over the initial blockout mesh so it updates in the engine, and I do not have to delete blockouts or place new assets in its stead. For this project, I focused on making mid-poly assets. All the 3D modeling was done in 3ds Max.
Texturing
This project uses a standard metal/rough PBR workflow. But stylistic choices were made for the color map. I knew that I wanted a splattered color look to my scene. Areas of rest combined with areas of more noisy, splattered color. The whole style and process revolve around my world space normal to stylize filter. It is inspired by Cino Lai’s technical material work, so all credit goes to them.
It essentially takes a world space normal as an input, quantizes the colors down, and then runs through a few slope blur nodes. The slope blur noise is where a lot of variation can come from depending on noise input. From there, various quantized world space normal colors are selected and masked out. And each of those different masks has a color input.
This Substance 3D Designer file is then exported out to Substance 3D Painter as a filter, which I utilized on almost every asset. In the engine, the splattered color look is accented by a free outline shader I got on Unreal Marketplace.
Sticker Creator
The sticker process was actually pretty straightforward. I used a Substance 3D Painter smart material called Sticker Creator 2, made by Dylan Abernethy, so a lot of credit goes to them.
I studied a lot of my references and used Google Translate to recreate the stickers seen on the washer. Not only so I knew what the stickers said, but so I could copy the Japanese text and paste it into a Photoshop text tool font that supported Japanese. Sometimes, Google Translate couldn’t give me an accurate translation, so I took some liberties with some of the text.
This is where prior graphic design skills come into play in terms of layout and typography. The stickers were created cleanly in Photoshop, but once applied in Substance 3D Painter, I added wear and tear. Other stickers follow a similar process. Most of those were taken from my street photography photos and modified to be usable with Sticker Creator 2.
Lighting
The lighting setup is fairly simple. There is a directional light as the main light, and then color lights coming from behind the washers, to the side of the stools, and from the neon sign. The lighting was blocked early on, so it was close to what I wanted, and I refined it as I progressed on the various assets.
For the camera animation and light flickers, I never did anything like that in Unreal before, so I looked up guides and tutorials online. I set up various cinematic cameras with sequences and keyframes. I did the same with the emissive material on the sign, so I could animate it. For the spinning clothes in the washer, it was a simple panning material of a horizontal tiled texture.
Summary
Overall this piece took about a month and a half, but I wasn’t working on it consistently or even every day. So it is tough to remember the actual time spent working on it. A lot of time was spent just developing the stylized filter and thinking about how to make a workflow around it, which was the biggest challenge.
Originally I had the idea to make a stylize filter that takes finished assets, such as megascans assets, and running them through my filter which would quickly get something stylized. Originally, it was designed with that in mind. So one challenge was that my filter takes into account height, AO, roughness, and world space normal. It couldn't really work on an asset that is a work in progress in Substance 3D Painter. Therefore, I basically would create the assets in a realistic way surfacing-wise, and export the textures my filter needed.
I would then re-import the exported maps, apply my filter, and plug the necessary input maps in. From there, I would tweak the parameters in my filter, and then this final export would be my final desired look. In the future, I will make a second version that works better for assets that don’t already have complete input maps.
Advice to Beginners
I wanted to make something cool, but there is also intent and meaning to it. It doesn’t matter if others notice it, but I know I put it in there.
My advice to beginner artists would be to make something that means something to you. Whether it’s a look, tone, vibe, or message. Whether people notice or not, there should be meaning to the work beyond just looking cool.