Petru Grati walked us through the creation process of his Sawed-Off Audio weapon skin for Counter-Strike 2 and talked about using perspective baking, a trick that helps when you can't edit the low-poly model.
Introduction
Hello, I'm Petru Grati, a Hard-Surface 3D Artist from Moldova. I'm currently a student, though I'm on an academic break to focus on personal projects. I began practicing 3D art during the pandemic lockdowns, taking advantage of my free time to learn Blender through YouTube tutorials. I'm very excited to be able to share some information in this article, especially the perspective baking technique I used on my latest project: Sawed-Off Audio.
Although I wasn't fully aware of it at the time, I've been drawn to art from a young age. I loved getting creative with Legos, sandbox games, woodworking, and other hands-on activities. Still, I never imagined I'd pursue art as a career until I discovered 3D art in 2020. That discovery led me to enroll in the Game Graphics program at Howest DAE. I've now been modeling for five years.
College taught me valuable side skills like art theory, procedural workflows in Houdini, and scripting, while also giving me the chance to meet great artists and friends. Still, I consider my main skills to be self-taught, developed over thousands of hours spent modeling with different techniques and obsessing over fine details to achieve the highest possible quality of models.
Right now, I'm spending most of my time creating content for the Counter-Strike 2 Workshop. It's a game I play and would love to work on professionally, and contributing to the Workshop is the closest I can get to that goal for now. I've worked on nearly 400 projects, 79 of them original designs, with the rest being color variations. One of the skins I made with my friend EGODEATH, Tec-9 Slag, is officially in the game as part of the first 17 skins added to CS2. My latest project, Sawed-Off Audio, is the one I'll be discussing more in this interview.
Getting Started With Sawed-Off Audio
I got into this niche after meeting Millenia, a skilled sci-fi Hard-Surface Artist who worked on spaceships for Fractured Space and created some amazing weapon skins for CSGO.
She introduced me to other artists doing similar work, like Emu, Sparkwire, and, most importantly, EGODEATH. He became a good friend and played a big role in helping me get started. Working with him really pushed my abilities, we've collaborated on most of my projects, and about 80% of my contributions have been made together with him.
I've spent thousands of hours remodeling in-game weapon models to create clean, usable base textures, either for myself or other artists to build on with custom designs. It's a repetitive and often tedious process, but it's essential for achieving high-quality results, and it’s something I've come to value as a way to train both my eyes and my patience. I've fully remodeled 16 CSGO weapons, which are no longer usable, and so far, 20/35 CS2 models. I presented 5 of them in an older portfolio post:
I took an academic break to make more time for creative projects beyond the "factory work" of remodeling base weapon models. That process is just the starting point. Once the model is ready, the real challenge of design begins. I've always been passionate about computer hardware, valuing both performance and aesthetics. I often find myself studying products I have no intention of buying, just to understand their shapes and imagine how the original designers modeled them. Lately, I've grown fond of old, gray computers with green PCBs, machines untouched by the flashy "RGB gamer" trend, or the minimalistic monochrome aesthetic. There’s something about the retro hardware style that is associated with the Windows Aero era that I've come to really appreciate. One day, I came across an old audio interface module amusingly called Sound Blaster, which I ended up turning, along with other retro computer elements, into a weapon design.
I was excited to finally try a technique I had been researching for a long time but hadn't had the knowledge or opportunity to use until now: perspective baking. I first discovered it through De Puiseau's 3D Illusion Using Projections guide, a method later used in many of Millenia's projects and eventually adapted into a more modern workflow by NameJeff21, who kindly taught me how it works. To break the ice and make it a part of my regular pipeline, I decided to learn and apply it in this project.
Modeling
I choose to model using a subdivision surface workflow in Blender, despite also having experience with CAD applications such as Plasticity and Fusion 360. The reason behind this choice is that polygonal modeling allows for very precise and subtle modifications, enabling me to match the original low-poly shape as closely as possible. The structure of a CAD model is based on strict geometric rules, which are difficult to align with when the low-poly model is not entirely perfect and presents tilting optimizations or even mismatched standards. Since subdivision modeling allows for more flexible shape matching, it also results in the best normal map bakes.
I've concluded that CAD is an excellent tool for hard-surface artists, especially for iterating through concepts quickly and efficiently. However, I prefer using it in high-to-low workflows while continuing to rely on subdivision modeling for low-to-high workflows. Not everything can be efficiently modeled using pure subdivision; some shapes are simply not worth the effort to achieve good results. The clearest example would be any type of cut on the surface of a cylinder, which will always result in some degree of pinching. To address this, I started using booleans for those elements, which leave a sharp corner on the side of the cut and require post-processing. Artists approach this post-processing differently based on their needs.
I choose to smooth these areas using ZBrush polishing, a popular method that involves densely remeshing the entire model, using polish sliders to smooth based on angle, then decimating the mesh for optimization before exporting it for baking. For artists unwilling to use ZBrush, Marmoset Toolbag 5's bevel shader can be a good alternative.
I made a tutorial on ZBrush Polishing on my YouTube channel, and I highly recommend this additional information written on the technique by Eric Correia on ArtStation.
Topology
I believe that unless the topology of a non-deformable high-poly model is required to follow specific guidelines for a project, the only thing that truly matters is shading. As long as the shading and baking are good, it doesn't matter how many N-gons or how messy the decimated ZBrush topology is.
I've noticed that in many game art schools, including mine, teachers tend to villainize n-gons and shame triangles. While using only quads can be a good temporary practice for beginners getting used to topology, this is rarely explained to students. As a result, many are led to believe that their models should remain quad-only even after graduation. All-quad, evenly distributed topology might look nice in wireframe portfolio renders, but the extra production time and the compromises made to preserve it are often not worth it.
We are not allowed to modify the low-poly model on the CS2 Workshop and can only submit PBR textures for the existing ones. At first glance, this might seem like it reduces my workload, but in reality, it slows down the entire process. It forces a low-to-high workflow and limits creative possibilities.
To work around this limitation, I had to find ways to make shapes on the flat surfaces of the gun appear as three-dimensional as possible. Normal map details often break at certain viewing angles, but I used a few tricks to make them more convincing. For example, I slightly over-smoothed the high-poly model to affect more pixels on the viewer's screen and intentionally tilted every single angle that would be a perfect 90 degrees in real life, such as ports, dials, or holes, to avoid harsh shading transitions.
The only part I had to unwrap was a specific detail I wanted to capture through perspective baking: the PCB inside the handle. Texturing was made easier by using photorealistic techniques presented by Ian Hubert in his World Building in Blender talk. Amusingly, this simply involved applying photos directly as textures, which he described as: "Photos are photoreal because they're photos." This quick and dirty approach allowed for fast iteration and made it easier to discard details that didn’t work as expected, details that might have otherwise been kept simply because of the effort spent creating them.
Texturing
This is the part I'm most excited to share. I wrote about it in depth to prevent any misunderstandings, but despite the long explanation, the process itself is quite simple once you follow it once and get used to it. It's an interesting method that has even surprised some industry professionals I've shared it with.
This technique is a handy tool, especially when modifying the low-poly model is not an option. However, it's important to note that it works best for small sections of a model and still requires a traditional bake underneath to properly mask it in. You can think of it as cutting words out of a newspaper and gluing them over other paragraphs, essentially replacing details.
It works best for rectangular shapes, not so well on curved ones, which is the reason why the round handle of my shotgun has four corner piece supports.
Setting Up:
There are two grades of complexity involved: Color and Normal Map, the latter requiring a few extra steps. In order to start, we must have a low-poly and a high-poly.
- The first step is to treat the high-poly as a render-only object that would never be exported anywhere. Preferably follow those steps on a copy of the main file.
- A camera needs to be placed in the direction from which the texture would make the most sense, in my case, normal to the plane for the PCB and perfectly aligned to the in-game player model for the power switch in the back.
- Aligning the camera normal to a surface can be done very easily manually, however matching the perspective of the Blender camera to the in-game player model might prove challenging. The rather pricy plug-in GeoTracker, which has a free trial, gave me tools to easily match focal length and position, but it isn't mandatory.
- Duplicate the low-poly, this will be our fake high-poly for baking reasons. Shading does not matter.
- Its UV needs to match the render. Go to UV editor, enter camera view and F3 in the 3D viewport to search and apply "Project from View."
- It's good practice, ESPECIALLY for player POV unwraps, to subdivide few times or remesh the object before projecting, otherwise the sides might warp in the bake.
Once aligned, we need to make sure that we prepare all the materials and lights for rendering. In my personal case I use it for circuits covered by clear plastic and the power switch.
- Both clear plastic and power switch use the Blender Glass BSDF material with parameters modified to my liking, the latter having its color changed. Increasing the glass BSDF roughness blurs the image of the PCB, which makes the effect look slightly more believable.
- The PCB uses a photo texture, and so did the cables for a while until I decided to give them individual materials involving Fresnel to enhance their curve readability in the render.
- The light setup needs to prevent large quantities of sharp highlights because baking that into the base color will result in both a real and moving engine highlight and a static fake one. Despite washing the image a bit with the lack of shadows, I decided to place the light in the same position as the PCB camera to avoid highlights as much as possible. The power button of a power extension cord usually has a light inside of it, so the perspective view made for it involves both internal and external lighting.
Color bake:
- Once everything is set up, we can go ahead to render, preferably in a high enough resolution. We will convert this render to a fitting texture on top of the low-poly.
- Low-poly and fake high-poly can be exported into a Marmoset Toolbag baker. Add the render as the color texture of the fake high-poly and bake it onto the low-poly. I did this 5 times for color textures, from each of the 4 sides of the handle and from the in-game perspective for the power switch. Each bake required a different fake high-poly, unwrapped from their intended camera direction.
- The color bakes can be added to Substance 3D Painter and masked via material ID and/or manual painting.
Normal Bake:
As mentioned earlier, the modernized normal map technique was taught to me by NameJeff21, the co-creator of the Featherweight MP9. In this technique, he used perspective baking to properly bake 90-degree angles from the player's side. This bit is a bit more complex and requires more jumping through hoops.
- In order to bake normal maps from perspective, the material of the rendered objects needs to turn into a world space normal effectively. That can be done simply by plugging a Normal Map node into the surface of the material output. The 3D axes are different between Blender and Marmoset, so there needs to be a Mapping node in between that rotates the X-axis by -90 degrees. A good way to figure out if it is working as intended is to make sure the left side is red and the top side is green.
- All sorts of compositing need to be turned off for the render, that includes the Editor Render menu > Sampling > Render > Denoise option. Render must be saved in OpenEXR format.
- Open the same Marmoset Toolbag file used for color baking earlier in MT4, because this technique does not work in MT5 yet due to reasons unknown to me, NameJeff21 or the developers of Marmoset themselves.
- Load the EXR render as a normal map on the fake high-poly. Make sure Scale & Bias is turned off, and Object Space is turned on. It will shade weirdly on the viewport high-poly, but it will bake just right as a normal map on the low-poly.
- The normal map will be a mess anywhere other than the focus point of the render. It has to be cropped and added on top of a traditional normal map. I chose to combine them in Substance 3D Painter. I created a new file just for this and imported the traditional and perspective normal maps without assigning either of them to Texture Set Settings. Made a fill layer for each, put the textures in the normal layer, and switched the normal channel from Normal Map Detail to Normal to fully replace color rather than mix what is underneath.
- Despite both bakes being OpenGL and the Substance 3D Painter project being set as OpenGL, the second layer ended up adding on top as DirectX. I don't know why, but be very careful with the direction of the colors of the normal map, compare the Substance 3D viewport normal layer with the traditional and perspective, and make sure the colors and directions match. I had to add a Levels – Normal filter and invert the green channel on the power switch added bit.
- Export the normal map and use it in the main 3D Painter texturing file.
I could have also baked the ports from the player's POV to make it look slightly more realistic from that angle. However, that way, it would warp heavily when seen from other angles. Millenia made a railgun pistol skin a few years ago in which she showcased the limits of this technique. This project proves an impressively big change of perceived geometry from the most important viewing POV, however, it disintegrates front on. There is no way that is better or worse, if the low-poly cannot be changed then it is simply a matter of the personal choice of the artist, and my choice for this specific project was to take it slow and use it for small details only.
Conclusion
I still have a lot to learn about hard surface design, but my two cents that almost always work is maintaining a good ratio of blocky and curved surfaces; too much of either result in either Roblox-y guns that look like extruded 2D sketches or crystallized cotton candy. A well-known example of a good shape design is the AK-47, which is aesthetically pleasing because it mixes a curvy dust cover, wooden handle, stock, handrest, and banana-shaped magazine with a blocky lower body, iron sights, and other small parts.
It's very common for me to see overly blocky sci-fi designs with cubic handles that look like they would cut my hand with their sharp edges if I dared to hold them. I am very picky with sci-fi design. I think the absolute best ones to serve as eternal reference are the gun designs posted by Alex Ryabtsev on his ArtStation and the StarCraft 2 Terran models (retro).
To beginners, especially ones trying to turn it into their profession, I suggest they try their best to find the niche they are passionate about in this field of unlimited opportunity, something that they can enjoy doing while providing value to the ones consuming it. Art is a lifelong journey, a practice that pushes for curiosity and constant change, you must really like what you are doing to be able to pursue it for long periods of time. I currently have 6400 registered hours in Blender. God knows how many more I have in less but significantly used software. About a third of my non-sleeping time was spent on 3D in the past 5 years. Art changed my life in ways I need more words than this entire article to explain. Find your passion, hold it, and never let go.