Recreating Vintage Dynamite Blasting Machine In 3D
Kyryl Zlotnyk walks us through the full process of creating an authentic DuPont Blasting Machine No. 20 in 3D, covering everything from reference gathering to rendering and animation, along with practical tips and resources.
Introduction
My name is Kyryl Zlotnyk. I'm a 3D Prop Artist from Ukraine, currently living in the Netherlands.
My journey in 3D art began when I was 13, when I started attending art school. That's where I learned to create my first 3D models. In college, I studied computer game development, where I worked with friends on our own projects and participated in game jams. Later, I had the opportunity to complete internships at two studios, where I gained valuable hands-on experience and gained a better understanding of workflows in the gaming industry.
Currently, I'm working as a volunteer 3D artist on a game development project with a team of friends. At the same time, I’m actively looking for an opportunity to join a professional team on a full-time basis, where I can apply my skills, grow as an artist, and contribute to the creation of exciting game projects.
Throughout my entire journey, I've been constantly learning, striving to improve my skills, exploring new approaches to creating 3D assets, and keeping up with the latest technologies. It's important to me not only to grow professionally but also to remain open to new ideas, experiences, and opportunities.
DuPont Blasting Machine No. 20
This project marked the beginning of my collaboration with my mentor, Volodymyr Iliukhin, with whom I chose the concept for the project. I decided to work on this particular object because I wanted to improve my skills in creating realistic high-poly models and textures for wooden surfaces. Another reason behind this choice was that devices of this kind are relatively uncommon in portfolios published on platforms such as ArtStation and LinkedIn.
The main goal of this project was to improve my skills in creating high-quality game assets. Throughout the process, I focused on achieving a high level of detail in the high-poly model. I also created an optimized low-poly mesh and highly detailed Spec/Gloss textures while following proper PBR values. I dedicated a significant amount of time to the final presentation to showcase the asset and its details as effectively as possible.
An important part of the preparation process was gathering high-quality references to develop a clear understanding of the object before starting the modeling process. First, I selected the main reference that best matched my vision, then collected additional images of other versions of the device. I paid particular attention to photographs from auction websites, as they often provide not only high-quality images of the object from different angles but also its dimensions and technical specifications. This information made it much easier to create an accurate blockout and establish the correct proportions of the model.
Additionally, I gathered separate references for individual components and the materials I planned to use during the texturing stage, including wood, metal, brass, and leather. This helped me better understand the characteristics of each material and prepare to recreate them realistically in 3D.
I worked on this project in my free time, so it naturally took longer to complete. I also spent a lot of time iterating at every stage, trying to achieve the best possible result for each part of the process. In total, the project took me around six months from start to finish.
When I first started, I didn't set any particularly ambitious expectations for myself. My main goal was to experiment, improve my sculpting skills, and learn more about texturing. Other goals, such as improving my low-poly workflow and refining my overall approach to creating game-ready assets, developed naturally as the project progressed. My mentor also played a big role in this process. He consistently helped me push the quality of my work further and introduced me to new techniques and workflow improvements.
The most challenging and time-consuming part was texturing. The asset featured a wide variety of details and materials, and I went through many iterations to get them looking right. However, I'm really happy with how much I improved throughout the project, especially in texturing, high-poly modeling, and rendering. Looking back, it was a valuable learning experience that helped me become more confident in my workflow and in my ability to create high-quality game-ready assets.
Blocking
I started by creating the blockout in Plasticity, as its CAD modeling tools allow me to build complex parts quickly and accurately, while making adjustments without worrying about topology. Using the real-world dimensions I had gathered during the research phase, I first blocked out the blasting machine and explosive charge using simple primitive shapes.
Establishing the correct dimensions and proportions at this stage was essential, as making significant changes later in the process would have been much more time-consuming. Once the basic shapes were in place, I gradually refined each part, adding more detail along the way. For the wooden planks, I began breaking up the clean, uniform geometry to create subtle imperfections and slight warping, giving the wood a more aged and realistic appearance.
I created the cable and leather belt separately in Blender using curves, which allowed me to adjust their shapes and easily fit them around the other components as the model developed.
High-Poly
The next crucial stage was high-poly modeling. I exported the blockout from Plasticity using a high mesh density. One of the advantages of Plasticity is the ability to control the polygon density during export, making it convenient to prepare meshes for both high-poly and low-poly workflows.
At this stage, I focused on establishing the large and medium-sized details, leaving finer surface details for the texturing process. This approach allowed me to work more efficiently, as small details are easier to add and adjust during texturing.
To create worn edges on the metal and wooden parts, I used the TrimDynamic and TrimAdaptive brushes in ZBrush. For the cracks and larger chips on the wooden planks, I followed the technique demonstrated in this tutorial by Dmytro "MykhailykArt" Mykhailyk. I added finer cracks using the DamStandard and Morph brushes to give the wood a more natural, weathered appearance.
For the leather belt, I first defined its raised edges with the Inflate brush, then used the Orb_Slash and Morph brushes to create notches and irregularities. Finally, I added further surface details with the TrimDynamic brush.
To create the seam on the explosive charge, I used a mask and the Inflate function to raise the geometry along the desired area. I then smoothed one side of the seam with the Smooth brush to achieve the intended shape.
Low-Poly
Using the Plasticity-to-Blender bridge, I imported the raw low-poly model from Plasticity into Blender. Since the wooden parts had undergone significant changes during the high-poly modeling stage, I retopologized them to better match the updated shapes. Throughout this process, I aimed to keep the polygon count as low as possible while maintaining smooth silhouettes and clean geometry where needed.
One of the main challenges was the cutout in the wooden handle, which caused shading issues. To fix this, I transferred the normals from a duplicate of the model without the cutout using Blender's Data Transfer modifier, achieving a cleaner shading result.
I also prepared the geometry for the alphas and decals by creating simple planes that would later serve as surfaces for their textures. For the rubber cable insulation, I decided to use a trim sheet to optimize texture space. To achieve this, I created a small cylindrical segment that I would texture and reuse along the cable.
UVs
For UV unwrapping, I used RizomUV. Before importing the models, I marked all hard edges as seams in Blender to make the unwrapping process more efficient. I also corrected uneven and non-cylindrical edges to ensure clean UVs.
I packed the Blasting Machine into a single 4K texture set. To maximize UV space efficiency, I used the UVPackmaster 4 add-on, which allowed me to achieve a denser UV layout. The final texel density was 53.57 px/cm.
For the explosive charge, I opted for a rectangular UV layout due to its relatively small size compared to the main asset. This approach also allowed me to allocate more texture space to the cable's trim section. Using a 4K × 2K texture, I achieved a texel density of 59.40 px/cm.
For the decals and alphas, I used a 1K texture. Since these elements required fine details, this setup allowed me to allocate more texture space to their individual UV islands and maintain better detail quality.
Baking
Once the model was ready, I moved on to baking the texture maps in Marmoset Toolbag 5, which I find to be one of the most convenient tools for this stage of the workflow. Before baking, I prepared the model in Blender by separating the necessary objects into individual parts and triangulating the geometry. This step helps ensure consistent triangulation when importing the model and its baked maps into other software.
In Marmoset Toolbag, I baked all the essential texture maps. In addition to the main Ambient Occlusion (AO) map, I created a second AO map with the Ignore Groups option disabled. This provided additional flexibility when working with certain generators during the texturing stage. Since the device's wooden body consists of six separate boards, baking an Object ID map was also essential. It allowed me to quickly create masks for each individual board, making it easier to control their appearance and add variation during texturing.
Texturing
Texturing is one of the most important stages of my workflow. Before getting started, I prepared the model by creating several copies and positioning them at different angles to make even the hardest-to-reach areas easier to texture, also known as the exploded model. I made sure that the copies did not overlap with other objects in the front and side views, allowing me to work on each part without unwanted interference.
My mentor also shared a useful tip: color-code folders and important layers to make the project easier to navigate and keep the workflow organized.
I created all the textures for this project in Substance 3D Painter. For the wooden parts, I used scanned materials from the free FAB library as a base, combined with Substance Painter’s standard materials. I refined the wood textures using additional layers with the Passthrough blending mode and adjusted their colors with the HSL filter. To make each board visually distinct, I introduced subtle color variations between them.
An important aspect of creating high-quality textures is establishing clear gloss contrast and varying glossiness across different parts of the model. This helps emphasize the unique properties of each material and makes the surface details more visually distinct.
To streamline the next steps, I added an Anchor Point to the material folder. I then introduced further color variation and emphasized the worn edges using generators and alpha textures. To make the asset feel more realistic, I created a distinct area of discoloration along the bottom of the wooden body, suggesting prolonged exposure to moisture.
Next, I added dirt to recessed areas and surfaces that would naturally accumulate grime through frequent contact with hands or other objects. To give the asset a stronger sense of history, I incorporated additional details such as a paper sticker, minor damage, dust, and other signs of wear. Finally, I adjusted the overall colors to ensure that the wooden parts looked cohesive and worked well alongside the other components of the asset.
Although this approach is less common in game asset production, I added and adjusted the Specular channel for all materials, rather than limiting its use to metals. This allowed me to better emphasize the unique properties of each material and create clearer visual separation between them.
Throughout the texturing process, I also relied on the PBR color space conversion and albedo chart from Iri Shinsoj's article on ArtStation. This reference helped me choose appropriate base colors and color variations to achieve a more accurate representation of real-world materials.
To texture the metal parts, I started by establishing the base material, then gradually built up its appearance using several layers of noise and color variation. I added patina and edge highlights before introducing the first signs of wear and surface imperfections.
Next, I applied the text details and assigned them an Anchor Point to make them easier to use in subsequent texturing stages. I then added rust to areas exposed to the elements and subjected to frequent wear. Finally, I applied thick grease around the teeth of the mechanism, along with additional dirt and grime to enhance the overall realism of the material.
For the leather handle, I used a scanned material from FAB as a base and built upon it with several layers of color variation. To add realistic creases and folds, I projected details from reference photos onto the texture using the Project tool, then refined their appearance with the HSL and Levels filters. I learned this amazing method from Neos Nelia.
I added cracks to the surface and used Anchor Points to apply Height and Peeling Paint effects to them, giving the leather more depth and character. Finally, I refined the glossiness, introduced dirt and grime, and made the final color adjustments using filters.
To create the alpha textures, I first divided the plane into separate sections, dedicating each one to a specific element. For the green pieces of paper, I used torn-paper alpha textures to achieve irregular, realistic edges.
I created the cables and wire ends using Photoshop's Path tool, which allowed me to easily adjust the curves at any point in the process and made the workflow much more flexible. To create the frayed edges of the strap, I drew four lines and applied the Warp filter to distort them. I then added individual fibers and threads along the edges to make them look more natural.
Once the alpha textures were ready, I imported them into Blender and positioned each element where it was needed in the scene.
As a final touch, I added three layers of color noise at different scales to each material, introducing subtle color variations and making the textures look more natural. You can find a more detailed explanation of this technique in this ArtStation article. I also applied a sharpening filter to enhance the clarity of the details.
Rendering
For the final renders, I assembled a scene using assets from FAB, aiming to recreate the atmosphere of a World War II military dugout.
I used a setup with two key lights, with the second featuring a wider spotlight angle to fill the scene with warm light. I also added a fill light and two rim lights to emphasize the reflections on the signs against the dark surroundings and bring more attention to the dynamite blocks.
During post-processing in Photoshop, I darkened the background and increased the brightness of the main asset to make it stand out more clearly. I also applied several adjustments and visual effects, including bloom, chromatic aberration, and film grain, to achieve a more cinematic look in the final presentation and reinforce the overall atmosphere
Here and in other scenes, I used settings for the lights and camera that were pretty much like these, adjusting them depending on the situation.
In this scene, I also placed a crate of dynamite blocks in the background. To add more visual variety without spending extra time creating multiple texture sets, I made a duplicate of the original textures without the "Dummy" label. I then created several material variants in Marmoset, adjusting the Albedo color tint in each one. This allowed me to achieve a more varied appearance while keeping the workflow simple and efficient.
For this scene, I created a simple room environment with concrete walls and a floor. I used a similar lighting setup to maintain visual consistency with the main renders. To add an extra visual element, I also introduced a gobo projection using an alpha texture that I created in Photoshop.
For this project, I decided to experiment with something new by creating an animated video using Blender's Camera Controller add-on, which allows you to record camera movements with your phone. I exported the animation to Marmoset for rendering, then handled the post-processing in DaVinci Resolve. My mentor also helped me incorporate the sound effects.
Conclusion
I believe that the key aspects of creating truly appealing 3D props are choosing the right concept and finding the right references. Equally important are a well-chosen color palette, high-quality textures, and adhering to correct PBR values. I pay special attention to the Glossiness/Roughness channels, as using them correctly helps convey the properties of different materials, add depth to textures, and visually separate the model's details from one another. And, of course, the final presentation plays an important role, as it should highlight the model’s and textures' unique features and create the right atmosphere.
The most challenging, yet at the same time the most interesting part for me was creating realistic, detailed textures and recreating the distinctive properties of wood, leather, and metal. This project taught me not to be afraid to spend time refining the result and not to shy away from additional iterations. While working on this project, I significantly improved my sculpting and texturing skills, tried out new techniques, and honed my abilities in working with lighting, rendering, and post-processing.
My first piece of advice for beginners is to be patient and consistent. Move toward your goal in small steps, practice constantly, and never stop learning, even if progress seems slow. Don’t be afraid to experiment, try new approaches, and accept constructive feedback. Remember that every project is an opportunity to gain new experience, and regular practice and attention to detail will help you achieve much better results over time.
In closing, I'd like to say that I'm very happy to have successfully completed this project. Special thanks to my mentor, Volodymyr Ilyukhin, for his invaluable feedback, support, and assistance throughout the entire process, as well as to everyone who supported me and helped me.