Rafał Pyra talked about the production of his nostalgic UE4 environment inspired by old hospitals in socialist Poland: modeling in Blender, texturing in Substance Painter and Designer, and more.
In case you missed it
You might find these articles interesting
Hi there! My name is Rafał Pyra, and I'm an Environment Artist from Warsaw, Poland. Currently, I work at Exit Plan Game, a very small indie studio where I am contributing to an unannounced stylized platformer game as a Lead Artist. So stay tuned! During my carrier, I also had a pleasure to work with Flying Wild Hog, Techland, and CI Games where I started as a Prop Artist and slowly switched to making environments.
My interest in 3D art came from painting miniatures and playing games, - combining these two things was only a matter of time. Making your own scenes is always a great opportunity for me to test out new knowledge, learn new things, and maintain old skills or just realize I have to learn something new.
Soviet Hospital: Inspiration
I didn't actually intend to make a scene. When I was talking with my friend, he gave me an idea to make a very simple medical stool. Probably, we all want something we can't have at the moment, it was true here - a semi-realistic prop or a scene was a treat to me since I'm mainly focused on super simple stylized art at work. My friend also mentioned an old hospital in his hometown, - Poland, as a former socialist country, is still full of the places of this type and I remember some of them, too. Of course, not exactly like that, - when you work on a game or just a scene you, have to exaggerate, it's a part of making a theme more pronounced.
But gathering references brought me some ideas. When I decided to make the scene, I gave myself 200 hours to finish the project. I love any type of challenge, and setting up a limit helped me to focus on making important things for the scene. I assumed 200 hours is enough to make something simple but well polished. Also, there was the second reason for it: I wanted to test out the Pareto principle. The Pareto principle says you can achieve roughly 80% of the final effect by doing 20% of work. Or as you will, 80% of work is done within 20% of the final time. To test it out,
I decided not to use any concept and work from my own memories and imagination instead, I think it helps to improve overall creativity and learn more in the end. I found a bunch of photos matching my vision of the scene and some cool-looking mood art, Metro Exodus was the main theme reference. To manage all the references I used PureRef.
It may seem very chaotic and unorganized but it's just the way I like to keep'em.
Modeling in Blender
All the meshes and UVs were made in Blender 2.83. Just to save time, I decided not to use ZBrush. Blender's sculpting features have been greatly improved in recent years, for simple models, it's just more than enough. Also using only one software means less time spent on exporting and importing your mesh back and forth, and it's a huge time saver!
When it comes to hard-surface modeling, I used Voxel Remesh to make a high poly out of my low poly. The first step is to make a low poly model, it doesn't need to be final; mark hard edges and use Subsurf Crease to maintain shape after using SubSurface modifier. Then, apply your modifier, make a remesh, and use Smooth modifier when you're happy with the result. Your low poly is almost done and you have a decent-looking high poly!
You can add missing details directly in Painter using heightmaps. For more difficult shapes like the speaker holes, BoolTool in Blender comes in handy.
The same technique was used to make the door; sculpting edges and wood structure is time-consuming, and you still have to make textures. But for simple objects, you actually don't have to do it! You can make round edges using remesh and then paint details directly in Painter using your Substance Designer textures.
In order to reuse this door texture, I adjusted the normals of my low poly so I could bake the Normal map without any weird gradients. Thanks to this simple trick, I could use this texture later as a simple trim sheet to make windows.
The bed was the hardest asset to make, that's why I decided to come back to it when all the props were done. It was easier and faster to make it with a well-developed pipeline. Of course, I used Blender and its new fantastic Cloth brush. Really, this brush is just perfect! I prepared basic bedding with correct UVs so I could bake base color fabric with pattern into low poly, preserving all distortions.
I always try to unwrap my models when I make hard edges. UV Squares addon is very useful in this process. To pack my UVs, I use UVPackMaster 2 Pro combined with Ryzen CPU. Probably without these things, it wouldn't be possible to make it in such a short amount of time.
To make topology of cloths, I used Quad Remesh along with ShrinkWrap modifier and manual adjustment for the best result.
I started with Substance Designer, making both simple environment materials and base materials that I could use in Painter. So let's dive into details:
Walls are super simple, I didn't want to make'em very complex with vertex paint and etc. In this case, I decided to use decals instead. It's just easier and faster. With Substance Designer, you can very easily mix your base materials in order to create a decal, for example. That's what I did.
Now, let's talk about base materials in Painter. If you want to use your materials with Painter, make'em as generic as possible. Don't try to add highlights or large unique features, you can do it later directly on your textured prop.
Substance Painter provides a super nice feature called Anchors. It's very useful when you have to create layered damage. I made a very simple smart material with empty folders masked by Anchor setup as a basis for other smart materials. Then, I used this setup to make layered Metal and Wood smart materials, etc.
The best example here is cardboard boxes. Using the voxel technique, I made a very simple high poly. After baking, I used my smart material with Anchor setup for layered damage with the cardboard materials. Using Height, you can create a better illusion of layers, height will be converted to normals during texture export anyway. To make it less generic, I used a simple multiply base color layer just to make a green mold, nothing fancy. It's a good way to add some highlights and break the generic nature of your material.
I also processed some vector graphics I did in order to make materials. I decided to make these in external software, just to save time.
When I think about a place of this type, I see a very warm, almost golden light. Due to time restrictions, I decided to use fully dynamic lights with Distance Field shadows. I ended up with a very simple setup: one main warm Rect Light from the top and one secondary warm Point Light. There is also a cold directional Moonlight and additional cold Fill Point Light just to add some nice fake GI to the scene.
I still had to counter the warmth of lights with a bit of Color Grading.
If you start tracking your time, you can realize that sometimes you spend a lot of time on things that aren't visible, or that you can do something easier. I used toggl to keep track of the time I spent on things and the entire scene. When you see how long it takes you to make something, you can tell what you need to improve in order to be faster.
What I'd recommend: learn shortcuts and make your own ones. They really speed up the whole process. Don't iterate one thing. If you are not happy with the result, leave it. Do something else and come back with fresh eyes and a bit more experience. And preview your textures in the engine, it really saves a lot of iterations.
Making a high poly, especially sculpting small details is the most time-consuming process. When you can avoid it and add these details using textures without sacrificing quality, you should definitely go for it.
For sure, there is a lot of things to improve and learn, starting with the lighting, post-processing, and meshing. I still think they are the weakest parts of the scene.
I would like to thank people that helped me out a lot with their great feedback: Dominika, Ambroży, Maxim, Paweł - Thanks!