Alexander Örn Magnússon talks about the process of creating environments, shares his tips on designing props, and explains the importance of getting in touch with the 3D artist community as a beginner.
In case you missed it
You may find these articles interesting
My name is Alexander Örn Magnússon and I am currently studying at the Reykjavík Academy of Digital Entertainment in Iceland. I started my 2-year-long study in August 2019, meaning I will be graduating in May 2021. During this time, I have studied different disciplines related to the game and film industry before deciding to focus on environments and props for games in August 2020. Since then, I have always been busy working on something and consuming content every day to reach an Environment/Prop Artist industry standard.
Choosing the Concept and Planning
The start of the graduation semester is about creating our own semester-long projects that need to get the teachers' approval. To be able to create a project I had to find a concept that I wanted to work from. After searching for some time, I eventually came across Leo Aveiro's concepts and instantly fell in love with them. During the previous semester, I had burned out doing a concept that was too big considering how much time I had, and it taught me a lesson. With that in mind, I decided on a concept that felt more like a diorama, or a corner of a room, which is why I picked the Detective's Room concept.
Then I started breaking it down and asking myself what assets, materials, and shaders I had to create, what workflows I wanted to use, etc.
I created a Notion page where I would gather my answers and make a roadmap for the entire project. Scheduling everything was very important to me and it was something that kept me on track during the entire project, it also helped me see if the estimated timings I set for myself were on point or not. Some of it took less time and some of it took more time which ended up balancing everything out, however, I did go back after the initial deadline and polished it even more.
Another key aspect was reference gathering, something that should be pretty standard by now. I made a Pureref document and started gathering references for different categories such as:
- Target Quality: consists of images of the scenes that were in a similar setting as the concept and would establish the quality bar that I wanted for this project.
- Props Quality: contains the images of props that were similar to the props I have in the concept, that I wanted to match or surpass in quality.
- Lighting & Mood: included images of the scenes that had similar lighting and mood to the concept.
- Materials: images of tileable materials that I would need for the scene.
- Photo Reference: the final category containing photo references for everything I needed to make.
Blocking Out the Scene
I wanted to match the blockout of my scene to the concept as best as I could, so to do that I used an open-source program called fSpy which helps with matching the focal length and other camera settings. I would then import the camera into Maya after exporting it as a .fbx from Blender.
In Maya, you can view through the newly imported camera and import the concept image with "View → Image Plane → Import Image". Then I created a single wall and positioned it to match the height of the concept and used "Create → Measure Tools → Distance Tool" to measure the height. It was originally 390 cm in height, which is obviously too tall, so I selected everything in my scene, grouped it, and scaled it down until it was about 240 cm in height. Thus, I had everything in accordance with the real scale if I were to block out based on the concept. To zoom into the concept using the fSpy camera I went into "Display Option → 2D Pan/Zoom", and by holding Ctrl+Left Mouse on the Pan and Zoom, you can zoom in increments of 0.010 to be more precise.
I exported the blockout into Unreal Engine and set everything to a location of 0. When importing the camera into Unreal Engine, keep in mind that some of the transform values will differ between the two programs. Switching the Y and Z location values and the rotation values fixes most of the camera issues. When that was fixed, I took a screenshot of the environment and laid it on top of the concept in Photoshop to see how closely they matched, and from there it was only minor tweaking to get the camera into the right position.
When I went into this project, I planned on doing everything myself in terms of asset creation. As you have already seen, my modeling package of choice is Maya. I used pretty much the same process for all of my props so I will showcase the chest and the chair as examples.
The process begins with creating a mid-poly mesh. When creating bigger props, like furniture, they might be too big to reach the desired texel density. By thinking ahead I identified pieces on the models that could be duplicated after baking. This allowed me to cut down the number of pieces that needed to be sculpted and save UV space.
The last thing I do before exporting to ZBrush is assigning hard and soft edges before using a script that cuts the UVs based on the hard edges. I do this to be able to perform Auto groups by UV in ZBrush, dynamesh them afterward, and then smooth out the shapes relying heavily on the polish features, mainly Polish, Polish by Features, and Polish Crisp Edges in combination with Mask by Feature and also only ticking 'Groups'. All of these settings can be located in 'Deformation' and 'Masking' under the Tools menu. Then I go in and sculpt some cracks and chips around the edges where it makes sense with the help of my references.
The purple edges are the hard edges, while the green ones are soft edges:
After sculpting I bring all of the high-poly meshes back into Maya. Then I can duplicate the previous blockout mid-poly model and optimize it to create the low-poly. Admittedly, the low-poly models could have been a lot more optimized, but I decided to focus more on the quality rather than on the optimization first.
With the low- and high-poly meshes created, I could take it to Marmoset Toolbag to bake my Normal, Ambient Occlusion and Material ID maps. The reason I like Marmoset Toolbag is because of the interactive baking process where you can fix mistakes in your Normal Maps with simple brush strokes.
Then I import these maps into Substance Painter and bake out the rest of the Maps there. However, before going into Substance Painter, I go back into Maya and duplicate the baking prop and create a fully built version next to it. This helps me visualize the props and see what they are going to look like in the engine during the texturing process.
Texturing the Props
The pattern of the chest was the first thing I created using SVG nodes in Substance Designer. Luckily, I had a picture of the chest from the front side that allowed me to grab a picture of the pattern and with minor perspective tweaking in Photoshop I was able to use that as a background image to recreate the pattern.
I would then paint in small parts of the pattern and blend them together using SVG nodes.
When approaching wooden objects, the best way to approach them is using the images of the actual wood from websites like textures.com or texture.ninja. Using these images as a base to work from, adding HSL filters to change the colors, and even mixing different wood textures together with grunge masks, saves a lot of time. Since most of the furniture was almost entirely made of wood, this process was what I used the most.
Creating Tileable Textures
Going into this project I had only been using Substance Designer for about a month, so I had very minimal understanding of the software. I relied heavily on tutorials and digging through other people's graphs to create the tileable materials for my scene.
- Wood Planks: techniques learned from Ognyan Zahariev's Magical classroom course.
- Red Bricks: mixing techniques learned from Javier Perez's LearnSquared course and one of Stefan Oprisan's free brick graphs.
- Aged Wood and Plaster: going through Derk Elshof's and Daniel Thiger's Level-up Digital tutorials.
Filling the Scene With Details
The pinboard on the left plays a big role in the storytelling of the scene. I managed to find the same map that the concept artist used, which is the map of Singapore circa 1940–1950s, and used it to research crimes from that time frame. I then used a story of one of the crimes as a storytelling element in my scene, digging up old archived newspaper articles, an old documentary about the case, etc.
Another big part of filling the scene with details was adding the books. The entire scene has more than 100 books so I created a flipbook shader that changes the whole outlook of the book based on its position. This allowed me to easily place the books without getting the same-looking book next to it. Luckily, I found a free book cover generator by Michał Wawruch which helped me tremendously. Since there were so many books and some were in large stacks, I knew I needed a lot of different-looking books so I created 16 variations and compiled them all into a single texture with Photoshop.
Setting Up the Lighting
When I am ready to set up my lighting for the first pass I make sure to disable all of the default post-processing volumes in the project to start off with a clean slate. This includes deleting all of the lights in the level and going into "Project Settings → Rendering → Default Settings" and making sure to turn off Bloom, Ambient Occlusion, Auto Exposure, Motion Blur, and Lens Flares.
Another thing you need to have in your interior scene is Lightmass Importance Volume around your scene and Lightmass Portal in your windows to help Unreal Engine focus the lighting in the right areas.
Initially, I decided to bake my lighting and optimize everything to be as game-ready as I could. However, once I discovered Andrew Weidenhammer's resource on using ray-traced translucency and refractions to help create a bottle with liquid inside of it, I quickly changed to ray tracing for the entire scene.
The way I got the god rays mixed with ray-traced shadows was by using 2 directional lights, sunlight and fog/god ray light. The light controlling the god rays needs to have Cast Ray Tracing Shadows disabled and Volumetric Scattering Intensity increased.
If you want more detail on this technique, check out a recent video by William Faucher.
Here are all of the post-processing settings that I used.
I did end up making small changes in color correction in After Effects using a plugin called Magic Bullet Looks. It was mostly to add more glow to the god rays and a little bit of green to the colors in general. The reason I did it using After Effects and not Photoshop is that I had to color correct the video as well, so I decided to bring in the still frames, too.
The whole project took about 12 weeks in total. During this time I learned a ton of things and faced a lot of different challenges, some of them mentally. The biggest of them was overcoming the impostor syndrome that appeared during the late stages of the project, feeling like nothing was good enough, etc. Thankfully, I have made a lot of friends through various Discord servers such as Experience Points, and they had been helping me throughout the project. Taking screenshots of the scene regularly and looking back to see the progress and following a schedule also helped me stay motivated. Doing a mentorship at The Mentor Coalition with Kyle Bromley also helped to boost my motivation and productivity towards the end.
By far, the most time-consuming part was creating all of the models which ended up taking up a total of 4-5 weeks out of the overall 12 weeks. There were not a lot of repetitive models except for the books and cardboard boxes, so there were a lot of unique assets to make.
With graduation on the horizon, I am searching for a position as an Environment/Prop Artist in Europe.
I want to thank 80 Level for giving me the opportunity of writing this article. If you read through it all, I want to thank you for doing so and I hope it helps in any way. If you have any questions, do not hesitate to contact me through any of my social media accounts and I will try to get back to you as soon as possible.
You may find these articles interesting