Reza Mortazavi walked us through the process of recreating the Nokia 3310, demonstrated the texturing steps, and explained how the surface details were made.
Introduction
Hello, I’m Reza Mortazavi, a 30-year-old 3D artist from Iran. I began my journey in 2015. After graduating from an Architecture university, I gained experience with various software such as 3ds Max and V-Ray for architectural visualizations. However, I eventually grew bored with arch viz and started learning other programs like Cinema 4D and Octane Render.
I’ve put many hours on tutorials mostly on YouTube and started experimenting the new skills in my personal projects. Since then, I have been freelancing and working for clients around the globe.
The Nokia 3310 Project
The Nokia 3310 model is a nostalgic cellphone that I've always admired for the quality and technology it offered back then. I decided to pay homage to this wonderful phone by creating it in 3D.
For references, I used a free program called PureRef, which has lots of cool features. I found many photos across the Internet, and since this was one of the well-known phones, it was not too hard to find good images!
I chose to poly model the phone since I wanted to unwrap it afterward to have clean UVs for the texturing process. Poly modeling is a slower method compared to CAD modeling, but in the end, you will have a cleaner topology instead.
The process starts after I align my main reference in all of the views in my viewport.
The process is straightforward like with any other model, involving extruding edges and moving vertices until you're satisfied with the result.
One thing I always bear in mind is to incorporate small details into my model since I already know that I'm going to render it in close-up shots.
I usually don't mind having triangles or N-gons in my topology as long as they don't ruin the shading on the model.
The phone's display includes two pieces of models: the front part, which will act as protective glass, and the actual screen, which is just a simple plane.
Once we're done with the modeling part, it's time for UV unwrapping.
The UV part is notorious for being uninteresting and challenging, but I use a program called RizomUV which makes this stage quite easy and enjoyable. It has many useful features for unwrapping and packing your UV islands.
For this model, since I knew I wanted close-up renders, I went with quite a high texel density and two UDIM tiles. As for the packing part, I'm not really particular about it since this is not a model for production.
Texturing
Now it's time for texturing. Whenever I begin the texturing process, I always have my reference images on my second monitor. For this part, it's crucial to have as many references as possible.
For the main plastic part, the first phase involves establishing the colors.
Next, it’s time to make the overall roughness map.
The last part is making the surface details like grunges, scratches, and dust.
Now, let's delve a bit deeper into how I created the dents on the plastic. I start with a fill layer with negative height values. Then, I mask the layer with a grunge map. In the next step, I add a Blur Slope filter to the mask to disrupt the uniform look. Finally, I add a Paint layer to erase some parts and manually paint the other parts that I like. For extra detail, I always tend to add an Anchor point on top of my mask to use for extracting the edges of the mask. This helps to push the edges of our dents a bit outwards, adding a touch of extra realism.
Display
For the glass display, I used a base fill layer and added a roughness layer on top. This might have been sufficient, but since we desired more intricate details, I decided to go further and include another fill layer (dust) on top. The dust layer had some base color values and a higher roughness compared to the base glass. This layer simulates tiny particles of dust in our textures.
In the final step, I added two more layers to give the corners of our glass an aged and dirty appearance. To create the mask for this dirt layer, I mostly hand-painted it. However, I did utilize some built-in generators and additional grunge maps to avoid uniformity.
At the end, I created the main screen at the shader level and completely disregarded the textures inside Substance 3D Painter.
Buttons
For the buttons and Nokia logo, I created an alpha map in Photoshop using a high-quality reference image that I found. The process involves converting the image to black and white and maximizing the contrast. Then, I imported the created textures into Substance 3D Painter and used them as a projection for the button layer's mask.
Lighting & Rendering
After finishing texturing, it's time to assemble everything and create our main scene. I typically begin with the lighting setup to get a sense of my model. It's worth noting that this is not a linear workflow, and I create shaders as I progress. In this case, I used a free HDRI from the Poly Haven website, which offers a variety of excellent options. I utilized it in OctaneSky.
After some adjustments, I added two additional small light sources with a high light power value. These lights will enhance the highlights in our model.
For the shading process, I always use the Octane Universal shader since it contains all of the necessary parameters. Creating the main shader is as easy as connecting the right textures that we obtained from Substance 3D Painter to their respective places. During this phase, I simply make small changes to our textures using the Color Correction node and Octane Gradient to fine-tune the values.
The glass shader received the same treatment, but to achieve an extra level of realism, I incorporated an additional grunge map into the roughness map obtained from Substance 3D Painter.
The screen shader, on the other hand, differed slightly from the other two shaders. I desired to display the classic Snake game on it, so I conducted an internet search for footage of that game. Afterward, I performed some basic editing within Davinci Resolve (which I am currently learning) and exported the footage as an image sequence.
The setup for the screen shader is incredibly simple. All you need to do is load the first image of your sequence and specify the end frame and frame rate in the Animation tab of the Image Texture node.
Now that our shader and lighting are complete, it is time for the final step before rendering. Adding dust particles to the model will enhance the desired level of realism. I scatter a collection of extruded lines across our main model using Octane Scatter.
The scene is now ready for rendering after setting up the AOVs for the composition stage. I save the image sequence as a 16-bit EXR file.
After the rendering is complete, it is time for the final step of the project, which involves compositing and post-production.
During this stage, I bring in my lighting passes and start creating the beauty pass from scratch. I combine the environment light with two other light passes that were rendered. This allows for fine-tuning of the lights after the rendering process. Next, I incorporate the dust pass to enhance the visibility of dust particles in the final render. Following this pass, I merge the remaining elements with a denoised version of the screen. These types of objects often produce noise, even with high sample numbers. Lastly, I add some film grain as a final touch, and the project is complete.
Conclusion
To create appealing props, you have to pay attention to the references as much as possible. One thing that people tend to forget is the importance of lighting. Without good lighting, it is close to impossible to get realistic results.
One piece of advice that I can give to beginners is to try photography and taking photos with whatever camera that you have. This will help you to understand how lighting works and to catch more details in objects.