Vintage Movie Light

Prop Breakdown

David Makarov


David Makarov

Hard-Surface Artist


Hello there! My name is David Makarov. I am a Hard-Surface 3D artist in the game and cinematic industry.

Mostly I specialize in weapon, prop and environment art. I got to know the industry in 2018 and since then my passion has never faded. So, every day I continue to grow and improve my skills.


  • Blender – Modeling, UV packing, assembling
  • Zbrush – Sculpting, Detailing
  • RizomUV – UV unwrapping
  • Marmoset – Rendering
  • Substance Painter – Texturing, Bake refinement
  • PureRef – Reference board
  • Luminar Neo – Postprocessing
  • Photoshop


The main inspiration for this project was vintage film lighting equipment. “Bardwell and McAlister” products, in particular, caught my attention because they have a nice design and elegant shapes.

I didn’t want to 100% copy any lamp, so I collected a lot of ideas and details that I liked from different samples and tried to combine them in the best possible way.

Not all the details that I wanted to see in the final model could be implemented, so I had to choose favor of one detail or another.

In my mind, a new clean lamp could look boring, so I decided to make a worn version of it to show that the lamp had been in use for a long time and had perhaps been gathering dust for some time without use after.



In this project, my main goal was to focus on combining different ideas into one project, developing a story through textures and making an interesting presentation.

Also, I planned to make several close-ups, so the texture resolution should match this goal. I optimized the polycount within reason but didn’t do too much so as not to sacrifice quality, to save good close renderings.

I could make a detailed process for creating an asset, but the article would be too long and boring, so I decided to highlight the main points that I pay attention to and give tips at each stage. I hope you find this useful for your projects.


At the beginning of any project, I do 2 main things:

  1. Gather as many references for the object as possible (object, materials, details, presentation, etc.)
  2. Analyze the object (mechanics, design, variety of materials, historical elements, repeating/mirroring details, etc.) If you are creating a large project, I recommend collecting a lot of references for each detail, material, presentation, different angles, etc.During the analysis, it is recommended to mark all those details on the model and on the textures that you liked the most and place them in a separate category for quick access.Not all marked details will be in the finished model and textures, but you definitely won’t forget any of them and you will always have them in quick access.

Mostly, I use Google and Pinterest to find references. I especially recommend paying attention to auction sites or Amazon, where the object you are looking for maybe for sale.

Advice: Never save time on gathering references and analyzing. In my opinion, this is the most important stage in the pipeline and development of any asset.

By expanding your visual library and getting to know the object at all levels, you better understand how to realize any asset. “If I had eight hours to chop down a tree, I’d spend six hours sharpening my axe.” (Abraham Lincoln) – Spend enough time preparing.


At the beginning of work on any model, I try to determine its actual dimensions.

If you were able to find the exact dimensions of an object on the Internet then this makes it easier but sometimes this is not possible, and I recommend using similar objects to determine the dimensions.

It is not necessary to maintain exact dimensions, but the object must be realistic, so try to determine approximate values.

Next, I create the basic proportions of the object without working out the details. At the Blockout stage, the most important thing is to determine the general and relative proportions and dimensions so that the object is as close as possible to the real world.

If you have an orthogonal image, then you can use it by loading it into a 3D viewport but if you don’t have and you are working by eye then be especially careful.

I always start with large shapes. Once I’m satisfied with it, I move towards the middle shapes and only then add details. At the Blockout stage, I don’t spend time on fine detailing which doesn’t affect the silhouette – only silhouette-forming shapes.

Remember that it is very important to go from big to small shapes: Large shapes – medium shapes – details. This way you will save your time and will not constantly correct forms at different stages.

Also, I recommend keeping your topology as simple as possible for easy transform and modify.

Many novice artists sew/cut or extrude geometry, which makes further manipulations with the object more difficult, so I recommend using only primitives without complex shapes.


After the Blockout is ready, I check the working of the mechanical parts, once again look at those details I wanted to add at the reference stage and try to combine different ideas into one object in the most logical way.

Sometimes I remove some unnecessary parts or add some more details. The main thing – it should look organically logical and interesting.


Once you’ve completed a Blockout, try to assign a completely black material to a model and check a silhouette with different angles.

It should be clear what kind of object it is in the silhouette and there should be a variety of medium and small shapes. The first thing a human eye reads is a silhouette, so your model’s silhouette should be interesting and attractive.

High Poly

At this stage, I generally use two techniques:  Clean subdivision surface – Edge crease with polishing in Zbrush.

I usually start creating high poly in the same way – from large shapes to smaller ones. But at the high poly stage, this is not as important as at Blockout, so you can do it as you wish.

First, I deeply study the references of the part I am modeling on high poly and decide which technique will be used. I create parts that require a smooth form and don’t have a lot of complex transitions using a standard subdivision surface pipeline.

This allows you to get a super smooth and neat result without leaving the main 3D program.

I use the second technique for parts that it doesn’t make sense to do with subdivision surface since they have a lot of complex transitions and setting up good topology would take a lot of time.

I use the Crease Tool in Blender, but you can use a similar tool in your program. All I do is limit the smoothing of all hard edges and smooth all cylinders applying the smoothing modifier to avoid the angular effect in the future.

Then I export the mesh to Zbrush and use the Dynamesh and Edge Polish tools to achieve the desired result. In the end, I use the Decimation tool to optimize the mesh and export it back to the main program.

Don’t forget to pay attention to the thickness of the bevels you create.

It is important to maintain a balance between realism and readability from a distance. For games, the chamfers are sometimes exaggerated so they are better visible from a distance.

In the end, I moved the model to Zbrush and added the necessary damage and dents that I would to see on the model.
The main thing is not to overdo it with the number of details, but also to keep enough to be visible from every angle.

I used a set of standard brushes: Dam Standard, Standard, Trim Dynamic, and Polish.


If you are making a big asset with small details and patterns, it is advisable to exaggerate them so they can be readable from a distance.

This is especially important when you are making an asset for games because fine details like patterns, welds, grids, lines, etc. can turn into noise at a distance.


Low Poly

For creating an optimized model, I use the Blockout as a source and add or remove extra polygons where required. The main thing is to keep in mind what shots you are making the model for.

If you are making a model for a personal portfolio and are going to make not only renderings with a general shot but also close-ups, then do not skimp on extra polygons for edges and corners.

Otherwise, it may look low-poly and ruin the impression. When I do a project for my portfolio, I try not to save a lot of polycount.

The main thing to consider is:

  • No unnecessary polygons that are not visible to the player/viewer.
  • No long thin polygons (this negatively affects the rendering of the object in the engine).
  • A sufficient number of polygons for curved surfaces and cylinders.
  • No unnecessary polygons on flat straight surfaces.
  • Proper polycount distribution If you are creating a working project, the optimization stage is especially important.

Depending on the working requirements of the project there may be fewer or more polygons, don’t forget that. Among newbies, I often see the mistake of properly distributing polycount to models.

Try to correctly estimate the size of the part and the number of polygons for it.


Also, I always try to estimate where and how the model will be placed in the game/scene.

Depending on that I remove all those polygons that no one will ever see.


At the end of working on LowPoly, I always check for Ngons, unused vertices, and bugs.

After making sure the model is optimized and polished, I move on.


Everyone makes cylinder caps differently. But I advise you to make the cap number 4.

It is the best option in terms of the number of polygons, the convenience of working with topology, and the absence of long thin polygons.


UV Mapping

In this project, I used a combined pipeline in the creation of the UV.

There are several techniques for creating buildings, structures, large objects, and big props:

  • Trims (vertical or horizontal tileable).
  • Tiles (full tileable).
  • Unique with Bake.

To save texture resolution and not pack a long lamp wire into a unique texture, I decided to use a combined Pipeline (unique bake + trim).

To do this, I simply straightened the wire shell into a single line and positioned it at the bottom of the UV set. I also tried to set the size of the shell so the texel density would be about the same as the rest of the shells.


For all other shells, I apply the standard unwrapping rules:

  • Shell straightening – Scale up and scale down of shells.
  • Check for stretching.
  • Setting the correct shell’s direction.

Try to straighten all the shells possible to avoid the aliasing effect. This hurts the quality of textures. So, try to straighten all cylinders and circle shells in line.


Also, I always adjust the size of the shells.

Scale up the shells for parts with more details and scale down for the least visible areas. This helps to improve the quality and saves texture space.

Once all the shells are unwrapped, straightened, and scaled I go to Blender and pack into texture sets. I pack using an amazing UVPackmaster 3 addon.

You can pack wherever you like, but I love the flexible customization functionality in UVPackmaster, so that’s why I use it.

In this case, I have two texture sets. One for the hull and one for the inner parts and the stand.

In addition. If you have a lot of mirrored areas or repeating parts, you can use overlaps. This will save texture space and your time so you don’t have to texture each repeating part separately.

I’m not going deep into this topic or the narrative will be even further, but you can check it on your own. These are very useful techniques especially for your working projects.


To increase some texture quality, you can reduce the distance between shells when packing (padding).

In work tasks, this is not allowed, but in personal projects, it can be useful if you lack a bit of resolution.


There is nothing complicated about baking. But several points are worth paying close attention to.

Immediately after I finished creating the HighPoly, LowPoly, and UV, I did some things to make the baking process more convenient and correct:

  • Assign materials to LowPoly (by future texture sets).
  • Setting up naming for HighPoly and LowPoly (suffix for HighPoly “_high”; suffix for LowPoly “_low”).
  • Check the matching of all geometry on LowPoly and HighPoly.

Next, I move the High Poly and Low Poly models into Marmoset, set some basic settings and bake textures. Here are a few basic settings that I set for baking in Marmoset:

  • Set 64 samples.
  • 16-bit format.
  • 4000 ray count for AO.
  • “Exclude When Ignoring Groups” for some parts.

After the baking is completed and I am satisfied with the result, I get a set of basic textures that will be used further.


Next, I move to Substance Painter, import the normal map and AO and start making adjustments and improvements.

I usually have no bugs in the normal map if everything was done correctly before. But I most often modify the AO map, especially if a model has some moving parts.

This is what I do mainly at the stage of finalizing the Normal map and AO:

  • Check for any bugs in the normal map.
  • Removing black or white seams in the AO map.
  • Remove illogical shadings.
  • Reduce or remove shading on moving parts.
  • Finishing up the shading in some places – Adding shadows for small details.

In the end, I have all the necessary maps and can move on to the texturing process.


I prefer to make baking in Marmoset because it allows you to edit the normals and align those details that were baked with distortions.

This can also be fixed in SP but I prefer the faster and convenient option.


This is the most interesting and creative part of the entire pipeline. I will try to briefly describe my approach to creating textures and what I pay attention to first of all.

First of all, I set up the scene in SP for convenient work. I turn on some functions, load a color profile for more correct display of textures in the viewport, configure a camera and set the HDRI map.


I also used some resources from Megascans. Specifically, I used imperfection maps and a rope texture. I often turn to Megascans during the texturing process, because it’s not always possible to understand what you’ll need ahead of time.


Primarily I add small details such text, factures, logos, etc. in different places on the model.

Before I start creating and detailing individual materials, I create base materials with color and roughness for the whole model. Then I send this model to the engine (UE, Unity, or Marmoset) and check how it looks.

The model should look interesting already at this stage because all other improvements like dirt, wear and history elements will be built on this basis.

Next, I move on to working through each material. Demonstrating the whole process of creating each material would take a lot of time, so I will describe some general steps of creating materials that I follow.

This process is always approximately the same.

I would like to note that this is just how I see the process of creating materials, you can work as you wish and in the order you want.

I follow these steps:

  • I always start with the surface structure. I carefully study the references and try to convey the surface of the material as accurately as possible.Small noise, distortion, facture, patterns, etc. At this stage, I am only working with Bump/Normal channels.
  • The next step is to work on the roughness. Here I am trying to support the previously created facture by distorting the highlights on the surface.I also try to convey the slight surface wear that I see in the references. All I need at this stage is to make the roughness look clean but interesting at the same time.
  • After I add variety to the color and make it more interesting. I always look carefully at the references and try to take color details like: wear on the flat surfaces, gradients, darkening in the hollows and wear on the edges.Any spots of color that could break up a boring monochromatic color map can help you.
  • Next, I move on to adding damages to the bump/normal and showing it on the color and roughness maps. These may be small chips, scratches, and other surface damage.
  • The next step is adding general wear and tear like scuffs, corrosion, cracks, scratches, damage, stains, rust, smudges, leaks, etc. The amount of wear each time depends on the task and goals.
  • In the end, I added some story elements that can tell more specifically how our asset was used. These could be some paint stains, large imperfection spots, large chips, graffiti, stickers/marks, dust, hand or finger stains, writing and engravings, etc.


At the beginning of work on any asset, try to create a test preview scene in the engine and export textures to it during the whole texturing process (UE, Unity, Marmoset).

This will allow you to always keep track of how your object will look in the final.


Next, I move on to the presentation. Most often I use a standard three-point lighting setup. That’s how it works:


Here are some examples of how this is works in movie and animation:

Now let’s move on to how I created the lighting for the lamp.

First of all, I just added an omni light to the inside of the lamp for illuminating the glass so that it doesn’t look so boring and flat.

Here are the settings I used for the glass material in Marmoset:


Most often I use standard spotlights and a base HDRI map for the key light. It looks like this:

  • Base/Key light (HDRI map).
  • Directional lights for fill light.
  • Spotlights for rim light and highlights.

Depending on the material your object is made of, your lighting setup will vary.

If you are working with metal, be especially careful to avoid strong overexposure or black shadows. Also, don’t forget to reflect glare on metals or glare able plastic and glass.

Here are the base settings I use for rendering:


I usually use a 35-50mm and sometimes an 80mm camera. Also try to use as many angles for rendering as possible to make the choice wider.

Once the rendering is complete, I move on to the last step – post-processing. I don’t use too many effects, only the main ones to freshen up the renders.

Here are the effects I used:

  • Brightness.
  • Highlights.
  • Shadows.
  • Details.
  • Sharpness.
  • Vignette.


This concludes my work on the asset.

Thank you for taking time to read this article! I hope you learned something useful from this one and it will help you make your work more convenient, enjoyable and better.

Don’t be too hard on yourself and don’t feel sorry for yourself guys. This balance is very important. Just remember that growth takes time.

So, don’t forget to constantly study and try something new. This will help you maintain the fire within you and allow you to sincerely enjoy what you have done for many years.

Good luck and take care!