Patrick Ziegler talked about his scene Old Pharmacy made in UE4 and focused on prop production, materials, and lighting.
Patrick Ziegler talked about his scene Old Pharmacy made in UE4 and focused on prop production, materials, and lighting.
Introduction
My name is Patrick Ziegler and I am a self-taught 3D Environment Artist from Zurich, Switzerland. Currently, I am looking for my first job in the games industry.
My first contact with 3D was when a friend of mine introduced me to Unreal Engine. I was always interested in level design but I discovered quickly that Environment Art is where my true passion lies. The possibility to create one’s own worlds in 3D for a player to experience is something I find truly fascinating. In order to improve my skills, I took courses such as modeling fundamentals at CG Spectrum and CGMA Modular Environments with Clinton Crumpler. What pushed me further was Joshua Lynch mentorship at The Mentor Coalition.
Old Pharmacy
Goals, Inspiration & Reference
My goal was to create a victorian-age pharmacy. I really enjoy the wooden structures and warm feelings you get when looking at Victorian Age interiors and I stumbled upon this idea while browsing concept art for this time period. I usually check a lot of concept art when tackling a new project to get some ideas. Once I was set with the idea, I started to search for all the reference of old pharmacies that I could find. I mostly use Google Images, Pinterest, and also Instagram. When looking for references, I was also searching for mood and atmosphere to get a feeling of what kind of lighting I want to have in the end. I decided to go for a warm and welcoming feeling. The wand store from Harry Potter was very influential because the layout and style of the room suit the general look I wanted for my own scene. I use Pureref to create my mood boards because it is flexible and fun to use.
With this scene, I wanted to focus on propping and dressing. An old pharmacy is perfect for this because it has lots of bottles, vases, jars, and boxes.
Blockout, Scale & Planning
I feel it’s very important to first nail the overall structure of the room. With that, I mean walls, floor, windows, and ceiling. If the room as a whole feels weird and improperly scaled, everything you do afterward won’t really fit in and will just feel out of place. First, I made an asset list using Notion where I wrote down every structural element of the room and all the props I wanted to create sorted by priority. The bigger the asset, the more space it takes in the scene and therefore, the higher the priority. For example, the bottles were the top-priority-props in this scene, because they take a lot of space and are placed directly in front of the viewer.
I did the first block out in Maya where I measured the height of the walls to get the dimensions right. I make frequent use of the built-in measure tool: it’s simple to use and can certainly save you a lot of time trying to get the scale right. An important thing to note: I wanted to make a smaller environment as my previous environments were always too big and ambitious. The problem with that is that I lost motivation quicker and found it harder to focus on quality because I had to populate a large space. Creating smaller environments makes it more achievable and keeps the whole process fun.
After I was happy with the blockout in Maya, I brought it into UE4 to get a feeling of how it would look in-game.
I always check the reference to see how differently the rooms are structured. Slight variations can prevent the scene from looking too blocky. After bringing it into Unreal, I quickly did the first lighting pass to set the mood and establish some camera angles that I liked.
Populating Structural Elements & Texturing
After finishing the blockout, I started thinking about the materials and a general approach to detailing the scene. For the main structural elements (walls, windows, floor, ceiling) I used tiling textures I made in Substance Designer. Tiling textures are really useful for getting details and good resolution across larger objects. I could have also made a trim sheet but at the moment I didn’t feel like I needed one. Thinking about it now, it would’ve made a cool addition to some details. When you use tiling textures, edges can look really cheap if you just slap them on there, so I used custom vertex normals to get a nice edge highlight on the structural elements. It requires you to have more geometry on your models, but that’s not really an issue if it’s reasonable.
When making the furniture for the scene like the cabinets, shelves, counter, and cupboards, I mostly split them up into different parts that could be reused in the engine. Let’s take the main big shelf in the corner behind the counter as an example. I modeled out the main part of the shelf and created 5 different drawers. The drawers share the same texture sheet while the shelf uses a different one. That way I could keep texel density consistent and also bring in a lot of variation. The drawers were all individually placed in the engine.
For the cupboards and cabinets, I used a lot of UV-Mirroring to get a good resolution across the whole model.
To break the process down and make it easy, just think what elements in the scene could be reusable. Create different variations of one element and then place them around as you please. I find it a fast and efficient way to get a lot of variation in an environment. To make it even quicker, you could use tiling textures to produce assets very fast and you wouldn’t even have to bake.
Smaller Elements: Bottles, Drawers, Curtain
For the bottles and small drawers, the same principles apply. All the bottles and the drawers were hand-placed. It actually didn’t take a lot of time. Once you have some bottle variations going, you can just group them and duplicate grouped bottles around. Very basic. The variations of the bottles themselves took me more time. To get different bottle shapes and different labels on them, I modeled out different shapes found in the reference and then created a texture sheet for the labels. None of the bottles are baked, they all use tiling textures (one for the cork and one for the glass) + a polygon decal sheet with the label texture.
To get the texture on the bottle label, I mapped the UVs of each label to the texture.
In Maya, I applied one material for the cork (orange), one material for the glass (grey), and one material for the label (dark gray). In the engine, the labels use an alpha mask to get the desired octagonal shape.
It takes some time but once you get used to the workflow it’s pretty fast. It would be very time consuming to bake all the bottles individually to get the unique details in. This exact workflow can be used for paper, notes, posters, and more. I used the same process for the jars and for the paper on the table and on the floor.
There are some very advanced shader techniques where you can offset vertex position in the engine based on world position, but I didn’t want to spend too much time looking into that. If you do know that method it would be even faster and more flexible.
For most of the other props, it was a standard high-to-lowpoly workflow. Lots of props were just duplicates of each other with slightly altered silhouette and shape to make them look different.
Besides, I always wanted to try out Marvelous Designer, and the door curtain felt like a perfect opportunity. I simulated the curtain and then brought it back to Maya to optimize. I textured it in Substance Painter and applied a tiling normal in Unreal Engine to make it look more detailed than it actually is. If you haven’t looked into detail-normals, I urge you to do so. They are awesome!
One of the hardest parts about this environment was the glass shader. It is very tricky to make glass look good. It gets expensive very quickly, but for this scene I wanted it to look nice, so I wasn’t too worried about the performance. In an actual game though, I would optimize it a lot more.
To get the glass shader to look good, I played around a lot with the different values to get a nice result. There was no process to it, just trial and error and introducing some new parameters if needed.
From then on, I just changed the roughness values, color, opacity, etc. to get different glass variations which I then applied to the individual bottles.
Paper Rolls, Painting & Smart Materials
For the paper rolls, I created a plane in Maya and manually wrapped it so that it looked rolled up. I searched for some old medical illustrations and applied them in Substance Painter. I also added some dust and dirt to make the rolls look like they were lying around for some time. For the pictures, I used a similar approach. I modeled out the wooden frames and put the images into the frame. All the images except one were drawn by Albert Bierstadt who was an amazing artist. I admire his approach to natural painting.
To quickly iterate over different props and materials, I heavily used my own smart materials in Substance Painter. This allowed me to texture different props with the same materials and I didn’t spend too much time texturing everything from scratch. For the ceramic bottles, for example, I created a ceramic material, made it into a smart material and applied it to all the different bottles changing values to get unique looks. It works really well and I think that’s the beauty of procedural texturing. To get the details right, I used a lot of generators and noises that come with Painter and adjusted them until I felt it looked good. You always have to find a balance so that the grunge on your props doesn’t look repetitive or robotic.
Wood Material
To get the mood and atmosphere right, I made sure that I was happy with my materials from the beginning. This adds to the point I made above when it comes to creating smart materials. For the first wood texture, I checked a lot of references to see which direction I wanted to move in. Substance Designer was a very good base for creating the mahogany wood. After a few tries, I got a version I quite liked.
For the props like the shelves, counter, and wooden frames, I had a smart material that I once found in my library (can’t remember where I got it from, unfortunately). However, it only made up 10-20% of the material. I really like to bring in color and roughness variation and I heavily use dirt, dust, and edge damage to really give the material character. Then, once satisfied with it, I transform it into a smart material. Don’t just slap a smart material on your mesh and call it a day. Always check if you can make it more realistic and give it more character to really bring the prop alive, even if it’s just some subtle wear and tear.
This is a typical wood material I made with added layers and variation. In the beginning, I browsed through the internet to find props with wood aging and wear to see how old wood behaves and transforms. It’s very important when it comes to wood to observe the color variations. Wood comes with lots of subtle differences in light and dark tones. Try to bring that into the texture as much as possible. To bring some overall color variation to the scene I made a painted-wood version and also applied some color to the jars, glass bottles, and tin cans. A good Master-Prop-Material can certainly help to change some attributes on the fly.
Lighting
The lighting took the most time. Even if it’s just a simple room, to get the lighting settings right can be quite a challenge. Lighting can come with a lot of technical difficulties, so I had to fix those as I went along.
For the main light, the sunlight, I used one directional light with a slightly orange tone to simulate early sunset. I also played around with the “Indirect Lighting Intensity” a lot to brighten up the fill light in the room. To get the god rays to look the way I wanted, I had to use a small hack: I placed another directional light which was set to moveable. It doesn’t cast shadows or affect the lighting bake but work correctly with the volumetric fog and therefore, gives those nice ray shadows.
The directional light didn’t fill the room enough (plus, I missed some blue light that would be reflected off the sky at that time of day). To fill the room with more light and generate some nice color contrast I used bounce cards.
It’s the same principle people use in photography to get extra highlights. It works great in Unreal to fill up your room with some extra fill-light. Just create a plane (default plane from UE4 works just fine) and place it right in front of your window. Then use spotlights and play around with the settings (intensity, radius, angle, and indirect lighting intensity) until you get the desired effect. You can change the colors of either the spotlights or the plane itself to get the color you want.
After that, there was just a lot of playing around with the settings and tweaking until I was satisfied with the result. In the end, some corners were still a little bit too dark so I used a very weak point light to fill those areas up. It’s a very subtle change but it helps to get a bit more realistic look.
To get nice soft shadows, make sure to crank all your world settings up to max. It increases the build time a lot, but it’s worth it. You get more realistic shadows and it makes your whole environment feel more grounded.
There is an amazing 80.lv article by Abigail Jameson about lighting that I really recommend if you look for lighting tips. Also, Kemal Günel’s YouTube channel helped me out a lot.
In the end, I was pretty satisfied with the lighting, so I didn’t do much post-processing. To slightly bring out the blue tones, I used the color grading features that are built in the engine. You have to get used to it but it’s actually quite simple once you get the hang of it. I mainly played around with saturation, contrast, and offset, and there was no particular process to it. Just jump in, take your time and adjust the values until you like it.
Conclusion
The biggest challenge of this environment was definitely to get the lighting right and to keep consistency across all the props so that they fit into the environment properly. It really helped me to take smaller breaks during production and come back to the environment with fresh eyes. Sometimes, you don’t really see the changes you make, so it helps to take breaks. My main piece of advice, especially for students, is to get a mentor if you can. A mentor can push you further than you expect and if you have trouble figuring something out, someone’s guidance will save you so much time. It can cut your learning curve in half.
A shout out to Chris Radsby and the DiNusty Community for their feedback and great tips!
If you have any questions about my workflow, the scene or general topics, feel free to message me on Artstation. I’ll respond as soon as I can!
Patrick Ziegler, Environment Artist
Interview conducted by Kirill Tokarev