Old Electric Stove

Prop Breakdown

Danyil Kolesnyk

R_Main-Camera-3_FullQuality_001-scaled
34-1

Danyil Kolesnyk

3D Artist

Introduction

Hi! My name is Danyil Kolesnyk. I’m from Ukraine and I’m 20 years old. For now, I work as a 3D freelance artist.
My path in 3D has been starting 2 years ago and continues to this day.

Goals

The main goal of this project was to use the all my most relevant knowledge in practice. Also, to push my texturing skills upfront. For that I chose a simple model but with a wide and complex spectrum of materials (Paint, rubber, metal, scale etc.).

Software

  • Blender (modeling: high/low poly)
  • ZBrush (wear elements on high poly)
  • RizomUV (UV mapping)
  • Marmoset Toolbag 4 (baking & rendering)
  • Substance Painter(texturing)
  • PureRef (to collect references)
  • Photoshop (creating decals, alphas etc.)

References

The best reference is the object itself that you have at hand. You can better to evaluate an object, its forms, textures etc. My situation is exactly like this, I took some photos of stove, separated some interesting places that I’ll show on my textures. For collection of all photos I use a PureRef, excellent program for references.

Refs

Modeling

This stage I usually divide this into parts like:

  • Blockout
  • High poly
  • Low poly

Blockout

Before I start, I need to know the actual size of the object. In my situation, I just measured the dimensions with a ruler. If you don’t have the item on hand, you can find measurements online.

In this substep, I don’t bother with the wireframe, I just need to repeat the shape of the object using primitive shapes according to size and proportions.

If you’re working in Blender, I recommend using some tweaks that can improve your workflow.

Using different matcaps can help you better control the shading of your model.

settings

Cavity helps with visibility of your model highlighting the edges.

cavity

Use backface culling to hide back side of faces. To increase the speed of modeling you can use different modifiers such as Mirror, Solidify, Array etc.

High poly

The main high poly mesh without any micro details (edge wear, bended metal) I made in Blender. For high poly stage I used a standard Subdivision surface pipeline. While you are working with this pipeline important to know how to build a topology, use support loops/edges correctly, etc.

There are a lot of different tutorials on YouTube about how to work with Subdivision surface. To recreate the holes and not to destroy a wireframe I used floaters. Floaters are the best way to resolve concavities and extruded details.

Tape was created straight in Blender in Sculpt mode with cloth brush.

tape

To add some wear elements on plug I exported model in fbx format from Blender and imported by FBX Export/Import plugin in Zbrush. But important to duplicate collection before exporting in order to use mesh with unapplied modifiers on Low Poly stage.

zbrush_05

In ZBrush I used different variations of trim brushes, with square alpha and various size and focal shift.

zbrush_01

To avoid making unnecessary movements, I bent metal straight in Blender in Sculpt mode.

high_poly_detailed_01

Low Poly

As my one of the goals was to improve my texturing skills so I did not save polygons on rounded objects. I used polygons within reasonable limits, where I could delete or collapse them, I did it. I used collection that I’ve duplicated recently. I canceled Subdivision surface modifiers and deleted all unnecessary faces.

Since I am satisfied with my low poly I set a sharp edges and marked seams. Then I added a Weighted Normal modifier to correct my shading (turned on “Keep Sharp” checkbox). Also, I set auto smooth on 180 degrees on all objects.  After that added a Triangulate modifier (turned on “Keep Normal” checkbox). It is an important to do this before baking to avoid various issues.

UV Mapping

For UV Mapping I used a RizomUV. It is a great convenience program, which in combination with export/import addon for Blender really increase the speed of mapping.

First, I unwrapped my model in Blender, created a base UV. Then exported it to RizomUV.

UV

For this model I decided to use 2048×4096 resolution of textures, so I mapped my UV shells on half of the UV square and then scale it by x2 along the x-axis.

UV

While mapping important to set shells in right position according to their location on 3D model. It is also necessary to straighten the UV shells as much as possible to save much more UV space.

Baking

Before baking stage, we need to do some actions in Blender. First of all, important to rename all high poly meshes adding a suffix “_high” and do the same for low poly, adding a suffix “_low” according to the meshes.

baking_01

I also renamed our floaters adding another suffix “.###” to suffix that I’ve already had. Where ### is a number, which can be 001, 002, 003 etc.

baking_02

I put a separate material on the low mesh that will be for the glass.

glass

Then, I exported low and high poly meshes in fbx format separately and imported to Marmoset.

Marmoset_01

In Marmoset I baked all necessary maps with this settings:

Marmoset is very powerful soft for baking, which has some useful functions such as skew paint and cage offset that help to fix your maps.

geotest_01
baking

Texturing

Texturing part is the most important stage which needs to be given the most attention and time.

I imported the low poly mesh and all maps that have been baked recently in Substance Painter. Before that, I’ve copied some parts of the model and rotated it 180 degrees to see what’s going on underneath.

Below are also some basic settings:

Substance_02-1

ACES_UE4_Log can be downloaded from: https://bleleux.gumroad.com/l/lHiVg

For glass texture set I set an alpha-blending shader and added an Opacity channel:

Inside Substance Painter I baked another Ambient Occlusion map, which was baked from low poly on itself. It will help me to generate a global dirt that will be at the joints of two separate elements.

So, the first material I began to work was a paint.

First of all, I concentrate my attention on color variations, try to add more tints. Usually, It is just a different addition of grunge and noise textures with various overlay options.

base_color
base_color

Then I added relief and soft roughness to the paint.

reliefrough
reliefrough

During this process I tried to compare what I was doing with my references.

When texturing, I used a lot of anchor points, which are a really powerful tool.

For example, they were used to display the effect of peeled paint or just in order to add some color variations to certain places.

anchor_points
anchor_points

Gradually, I added more and more details, trying to repeat the references.

Paint
paint_group

According to this principle, I also made the other materials.

Main_metal

To add a global dirt I brought group with dirt forward the others and replaced an ambient occlusion map with the one I baked in Substance Painter.

global_dirt
global_dirt

The decals were made in Photoshop and imported into Substance as a single black&white texture. Then through the stencil, they were drawn with a paint.

alpha
decal

As I worked on this project, I learned how to better use different types of projections. This was a revelation for me, as I had not used this function much before.

For example, It helped me add a relief in enough difficult place:

It was made by Warp projection with adjustment of Projection Depth.

Therefore, it makes sense to sometimes play with projections to achieve better result.

 

Now we can switch to other texture set for glass. It’s very simple here. I turned on an opacity channel in fill layer and set it to 0.3. Also, I added some blur and soft roughess on glass. And finally, I copied a dirt from another texture set, replaced an AO map in generator and that’s all.

glass_texture_set

Also, it is a good habit to check the correctness of the PBR during texturing through PBR validate filter.

filter

Next step is to export the textures. The only important thing is to set textures size based on each Texture Set’s size since my textures are not square.

export

Rendering

In fact, this stage took quite a long time. I created a new project in Marmoset, imported the model and textures. In the sky settings, I selected the HDRI I needed.

hdri

Then I started to set up the lighting. Basically, I used directional light and in some cases spot light or omni light to show some highlights in certain places.

In the camera settings, I set the following parameters:

Render settings:

Conclusion

Thank you for reading this article. I hope this article will help someone to deal with some problems that arise during the entire pipeline of 3D model development.

I really had a lot of fun with the process during this project. For me, this work really helps to calm down and relax. Since I am only at the beginning of my journey, I plan not to stop there, but to learn and learn and learn more. I wish everyone good luck and perseverance to work further.

I want to thank the Games Artist team for the opportunity to share the experience with other people.