Petteri Torvinen told us how to create an old Grundig reel-to-reel tape recorder using 3ds Max, Substance 3D Painter, and Unreal Engine, discussed the baking and texturing processes, and showed the settings for the lighting setup.
Introduction
Hi, my name is Petteri Torvinen, I am a Hard Surface Artist from Finland. I studied 3D graphics and computer science at the university. After graduating, I worked for several years as a 3D modeler in different 3D research projects and in product visualization. A few years ago, I found Game School Online and started learning how to make 3D game assets and other gamedev stuff. Currently, I am working on asset packs in collaboration with Principal Lighting Artist Amit Ginni Patpatia also known as Lighting Bot.
The Old Tape Recorder Project
My approach to portfolio pieces is such that I want to create something unique that hasn't been done before. I remembered this funny little suitcase-like tape recorder I used to play with as a child. Old gadgets are always interesting and the lid and reels offered the chance of making many different renders.
Unfortunately, my dad had thrown away this beautiful machine a long time ago. However, I managed to find a good collection of reference pictures on the internet. Most photos are from eBay, some were found on museum pages, etc. I use PureRef to arrange my reference pictures.
The purpose of the reference photos is not only to figure out how all the parts look in terms of shape and material. To make the model look interesting we have to also find photos that show wear and tear unique to our portfolio object. Dirt and dust, discoloration, roughness variation, grease, and scratches for example. These are the things that will make the portfolio piece look realistic and interesting.
Modeling
For the modeling, I used 3ds Max and ZBrush. I like to spend quite a lot of time modeling the blockout. It's important to get all the proportions right at this stage. Making big changes to them later is much harder. It's also a big plus if you can construct the blockout model so that you can use it as a start when making the high poly model, it saves time. Below is the picture of the blockout model.
The high-poly model was mostly modeled using subdivision modeling. For some trickier parts, I used ZBrush to save time. I just tried to avoid shading errors and too-sharp edges. Below is one example picture of the sub-d modeling workflow in 3ds Max, one example of the ZBrush workflow, and the final high poly model.
Constructing the low-poly model from the high poly was pretty straightforward. First I removed all the support loops, then removed all other edges that didn't contribute to the silhouette of the model. Also, I had to add segments to some edge bevels to avoid a low poly look. Below is the picture of the low-poly model.
UV Unwrapping
I always start the unwrapping process in 3ds Max by assigning smoothing groups to meshes. Next, I use the ”Flatten By Smoothing Groups” button in the UV editor to separate and flatten the UV islands by smoothing groups. The rest of the unwrapping process I do in Rizom UV. The model has two UV sets: one 4096x4096 UV map for the opaque parts and one 2048x1024 map for translucent parts like the reels. In the unwrapping process, I try to keep UV islands straight and occupy as much of the UV space as possible. To further optimize, I decrease the size of the UV islands that are mostly hidden in the model and increase those that need a little more texel density to look crisp and detailed.
Baking and Texturing
All maps were baked in Marmoset Toolbag. The moving parts like the lid and hinges were moved away from the rest of the model to disable them affecting each other's ambient occlusion info.
To me, texturing is the most interesting part of from process. Along with the presentation phase, it is also the part where you can make your model stand out from other artists' work. Before I start the actual texturing process, I take a look at the references and make a list of all the different materials I find. I found about 30 different materials in this tape recorder: plastics of different colors and roughness, rubbers, metals, rusted metal, painted metal, tape, paper, and translucent plastic.
After importing the model and texture sets to Substance 3D Painter, I tweak the settings a bit, put on the ACES color profile, change the HDR image to a neutral one such as the Tomoco Studio, and max all the quality settings I can without slowing down my PC. I make a folder for every different material. I start the texturing by assigning base material layers to all materials, pick the color from the reference photos, and try to set the roughness value correctly. The next step for me is to add all the height details. I always add an anchor point to height details, so I can reference them later.
I usually start all my materials from scratch to give them a unique and realistic look. I have a bunch of layers that I use in almost every material. Once I have made them for the first material, I can copy them to others and just tweak the values. Here's a list of these material layers:
- Color variation small (white noise)
- Roughness variation small (white noise)
- Edges (metal edge wear generator + blur filter)
- Color variation (grunge maps and/or clouds)
- Roughness variation (grunge maps)
- Scratches
- Small spots
- Shavings (grunge shavings)
- Dirt/Dust
When I'm done with these layers, the real work starts: decals, edge damages, discoloration, custom roughness, grease, oil, rust, custom dirt, etc. I make the stickers, writings, and logos with Adobe Photoshop either from reference photos or from scratch. For unique details, I use a combination of procedurals, generators, alphas, and stencils. For the dirt, I use the dirt generator and then paint away dirt that is too much. Sometimes I use two layers of dirt: normal one and strong dirt to get some variation and add realism. The scratches are either Grunge Scratches Rough, procedural or some custom alphas. When I am done with all these layers, I add a Final Adjustments layer on top of everything and set the blending mode to Passthrough. In this layer, I add sharpen, contrast_luminosity, and hsl_perceptive filters to make the materials pop more.
Below, I will show a breakdown picture of the texturing of the hatch on the bottom of the player. The hatch is made of painted metal. I used 16 fill layers to make the material.
Next, I will show the material breakdown of the plastic lid. It was challenging to find the correct height detail patterns and realistic-looking dirt spots for both sides of the lid.
The hardest material to get to look right was the translucent plastic of the reels. Substance 3D Painter doesn't render translucent materials too well, so I had to switch between it and Unreal Engine 5 many times to get a decent-looking end result. I needed to tweak a lot of settings in UE5 too, but I will talk about that in the next chapter. Below is the breakdown of the translucent plastic material.
To conclude this chapter, I will show you a picture of the finished material with albedo, roughness, and metalness channels.
Lighting and Rendering
Lighting and rendering of the model was done in Unreal Engine 5. I used a curved plane with a simple texture as a background. CineCameraActor was used as a camera. The focal length of the camera for all renders was 40. The only lens effect I used was a mild vignette to help focus the viewer's eye on the model. For the main light source, I used a sky light with the same HDR map I used in Substance 3D Painter. The rest of the lights were area lights, larger area lights for fill, and back lights. Smaller area lights for small highlights or to show off some roughness variation.
In the Post Process Volume settings, I chose Lumen for the global illumination method, and Standalone Ray Traced was chosen for the reflections. Translucency was also handled by Ray Tracing. Area shadows were used and the Max Roughness setting was set to 1. Below is a picture of the settings I used.
These settings were quite heavy, but I managed to render high-resolution screenshots with screen percentage of 120. When I was done with the UE5 renders, I imported all of them to Photoshop for final adjustments. Unreal Engine renders are often a bit blurry so the first thing to do in Photoshop was to use the sharpen filter to sharpen the renders. Lastly, I used the Curves and Hue/Saturation adjustment layers to adjust the contrast and color saturation of the renders.
The translucent reels were hard to get to look good in UE5. I spent a lot of time figuring out how to get rid of the strong noise they were covered with in renders. What helped was to change the anti-aliasing method from Fast Approximate Anti-Aliasing (FXAA) to Temporal Anti-Aliasing (TAA). These settings can be found in the Project Settings and the Rendering section.
Conclusion
Thanks, 80 Level, for the opportunity to write this interview. I hope it will help someone or just give inspiration to create cool new props. Feel free to contact me if you have any other questions about making this asset.
Petteri Torvinen, Hard Surface Artist
Interview conducted by Theodore McKenzie
Keep reading
You may find these articles interesting