In case you missed it
You might find it interesting
First of all huge thanks to 80.lv for reaching me out and having me for an interview.
And huge thanks to my mentors and friends for all the support, feedback, love, and patience. I would never be able to do this without them.
My name is Daulet Bekishev, and I’m a junior artist learning 3D modeling (particularly, weapon art) in my spare time. Currently, I work as a QA Engineer at Blinkist, Berlin, Germany.
I have no production experience, and I didn’t attend any courses so far. My knowledge comes only from YouTube videos, Gumroad tutorials, and different articles on the Internet provided by various artists. But the biggest chunk of expertise is coming from my mentors (Alex Khaliman and Mykola Myhalenko) and friends, who helped me out a lot during the work on projects (Ilya Danilov, Ed Fedorei). Without them, my learning curve would’ve been flat as a planet Earth.
I always wanted to do something in 3D and Computer Graphics, but I haven’t had any opportunity nor money to dive into CG-industry, so this idea was always postponing again and again. When I graduated from university, I came to Germany to do my master’s degree in Cyber Security. But, two semesters after, I realized that it’s definitely not the thing I want to do, and it would be better to start learning myself instead of finding more excuses. So I found a simple job for some stable income and started watching countless tutorials on YouTube to get an idea of what I want to do. At first, I was spreading out quite a lot and learning every “cool software” out there and didn’t focus on one thing. NOT saying that it’s bad - it gives a good overview and helps to find an area that sparks you up the most. I was following popular tutorials and learning the tools but never created something on my own. And I didn’t want to put tutorial results into my portfolio. I knew that I had to do something personal. Also, after quite some time, I started understanding that all those tutorials are not advanced enough to teach me effectively. There are some good exceptions, no doubt, but tutorials still have significant limits.
That was the moment when I began to search for a mentor for myself. Because only with the help of a mentor I could move to the next level.
I was looking for industry professionals on ArtStation and texting them for some time. It was not very successful. They were kind and responsive, kudos for that, but not open for being a mentor. When I began to abandon this idea, I went for a small beer-hangout with some artists from local studios, and they showed me the outstanding works of Alex Khaliman.
Until that moment, I didn’t even know that this level of realism is reachable in Marmoset! I texted him the next day, and it’s nothing but luck that he responded and showed me his workflow and gave me a couple of small tips. After some time being in touch, he agreed on becoming my mentor. It was mind-blowing for me!
With that being said, I started learning his workflow with CAD modeling in Fusion 360.
The Purpose and Workflow
The main purpose of this project was learning. I had to learn CAD modeling, good unwrapping & baking, understanding the texel density, texture sets, texturing in Substance Painter, working with masks/generators/filters, lighting, rendering, and presenting the work. At the very beginning, I had a very rough idea of each step, but now I’m quite confident with all the knowledge and skills I earned.
In the short form, my workflow looks like this:
Gathering the Reference
During the process of learning and practicing in Fusion 360 for some time, I was also searching for a handgun I could try to model. The reason is that I was heavily inspired by the aforementioned handguns from Alex Khaliman. I wanted to push my limits and get as close as I can to the realistic look.
The choice stopped on CZ-75 SP01 Shadow because it had interesting shapes and it looked challenging enough. As obvious as it can be, everything started from gathering tons of references and finding as much information as I could: High-res images, exact width/height/length of handgun elements (attachments, too) and YouTube videos showing how the gun performs in the real world. Not saying that I found everything right before the start. My PureRef scene kept expanding more and more during the work, too, so I ended up with at least ~200+ images.
Modeling: phase 1
Then, slowly but surely the modeling phase started. I wanted to do everything only in Fusion 360. And that was quite a challenge. Some elements were achievable quicker and much easier with polygon modeling, but I had to overcome those obstacles for the sake of learning.
Finally, when the model was ready, I had to turn the CAD model to polygons, so that I can continue working on it and prepare both High-Poly and Low-Poly versions.
Moi3D is the most important software in this workflow. It allows to import CAD models and export Polygonal models with proper retainment of the details
Ilya Danilov, who was also previously interviewed by 80.lv made a great breakdown on his revolver, uses the same workflow, as well as Alexander Smirnov with his beautiful Glock named “Marina”. Make sure to check them out, too.
At the end of the modeling phase in Fusion 360 I had two models:
- One with all details/bevels/fillets/cuts/holes/etc that will be exported to ZBrush to enhance them even more.
- And second one without any bevels/fillets/cuts because the low-poly mesh is formed out of it.
Better to do it without fillets first because adding them is easier than removing… I knew about it a bit too late, but now I will never forget.
An important learning for me: you need to avoid putting Chamfers/Fillets/Soft Edges, where they are not necessary. So I was creating them, only where it is important for the form/shape/silhouette, otherwise Moi3D will create hundreds of polygons, where that Fillet is in order to try to retain the shape.
I didn’t know that until almost the end of the modeling phase, so I had to go back and remove all the small fillets I made. The same applies to very tiny cuts. Only very necessary form-creating cuts should be made. Other things are easily achievable during the texturing phase in the Substance Painter.
Modeling: phase 2
Next, I had to prepare a handgun for baking.
High-Poly mesh went to ZBrush for some polish operations and get soft bevels. It was exported from Moi3D with a very dense wireframe to preserve details, then Dynameshed (~6m polygons for each detail) and Polished by Crisp Edges and by Features a couple of times to get soft edges and rounded corners.
It took some time, but it was worth it. The result was beautiful.
Next, it was time to do some clean-up for the Low-Poly mesh.
I’m using 3DS Max for that. A quite straightforward process: Export mesh from Moi3D having as fewer polygons as you want (with N-Gons) and then connect/add/delete all necessary edges to retain the silhouette and have no issues. Lastly, I’ve triangulated all objects and moved to unwrap.
Mostly, I unwrapped objects in UVLayout and then imported them back to 3DS Max. Later, I fixed errors/updated UVs in 3DS Max only (instead of constantly jumping back & forth between 2 software).
Another important thing that was done in 3DS Max was setting smoothing groups by UV islands with the help of TexTools plugin. This is very crucial for baking. In Maya, it’s done by setting Hard edges on all UV borders and there is a special script for that on the Internet.
I wanted to limit myself neither in the number of polygons nor in the number of texture sets (materials). I wanted to achieve as good results as I can for the first project with this workflow, thus I ended up with ~39k polygons and 6 texture sets (materials): Frame, Slide, Magazine, Grip, RMR Red Dot sight and SBAL-PL light. No limits.
Now, when all High-Poly and Low-Poly objects were ready, it was time to start baking. At first, I had no idea how to do the baking properly: I was just throwing high-poly on top of low-poly and pressing ‘Bake’ in Substance Painter (or 3DS Max), but thanks for the support from my mentors, I started understanding baking process and realized all the power and flexibility Marmoset provides to an artist to achieve the best result.
So I created Baking Groups for each object that needs to be baked. Each baking group kind of “isolates” each object and prevents them from overlapping, thus it helps to avoid projecting High-Poly details from an object that is not supposed to be “contributing”. It also allows to adjust the cage Offset and to paint the Skew. Painting the skew solves so many problems, and I am personally very thankful to the Marmoset team for being able to use this feature. It’s just amazing. Also, an ability to preview the Normal maps is mind-blowing. I can see the adjustments I make in real-time without having to re-bake every time!
I exported 7 maps per texture set (material) I would need for texturing with the highest quality possible (except the resolution because my laptop can’t handle 8k maps in Substance). Luckily, the baking process in Marmoset is super fast, so it didn’t take much time.
Scans. I managed to get close to realistic look only with the help of Quixel materials (+ mentors feedback/support), and still, I couldn’t release its full potential. Alex Khaliman was previously interviewed by 80.lv, and he made a great breakdown of building custom materials with help of Quixel Materials, so make sure to check it out. The way he executes materials is just pure magic. And those works in his portfolio are 2 years old(!). Right now things he creates are mind-blowing. My workflow is almost the same because I was learning directly from him.
No doubt that Substance Painter provides the artist with an incredible set of tools to achieve amazing results. Every time I use it, I’m learning something new. Extremely powerful masking and layers system helped me a lot during the work on this project.
I was creating each individual material feature as a separate layer and tried to follow the “real-life” flow of a handgun. I imagined that gun was created in a factory, then has been used for several years and ended up as being decommissioned and cleaned up a little bit from dust. So what you see on the renders can be characterized as a “used gun that was cleaned up”.
Also, an important note is that I used a Specular/Glossiness workflow because it’s more close to PBR look rather than Metal/Rough. A specular map can carry so many details and some effects are just super hard to achieve using Metalness map. Or it’s just hard for me. I have plenty of cool stuff to learn!
During texturing, I imagined how details were applied layer by layer (no strict order, but the idea remains):
- From factory weapon had base clean steel;
- Then it was coated with wear-resistant weapon paint;
- Then the scratches appear;
- Then some dust applied;
- Then a little bit of oil;
- Edge damages;
- Heavy dirt (for more interesting look);
- And then the text that I forgot somewhere in the middle.
I tried to avoid a boring uniform look and built different materials to make the handgun a little bit more interesting. Thus, if you pay attention, you can see that I have various metal & plastic variations on all elements.
Scratches, wear, smudges, and stains were achieved by adding a corresponding generator and then revealing it in the places they are supposed to be. Additionally, I’ve projected some scratches from alpha maps to achieve real-scratch behavior. The “places where they are supposed to be” are defined by gathering references and analyzing them. So it’s always dependent on the project.
I was searching google for any possible used handgun having scratches/dirt/wear on it and replicated similar patterns on my material. Sometimes, I was just using my gut feeling trying to imagine the situations when a certain part of the object will receive damage or dirt or a fingerprint.
Huge thanks to Raphael Rau for Surface Imperfections maps. These are top-notch and helped me a lot in achieving the result that I liked. Partly I used intthe scratches from his pack, the other cool pack of scratches I received as a present from the personal library of my mentors (yahoo!) and a little bit of those I made myself by extracting directly from a photo reference of a scratched weapon I could find on the internet. Very basic manipulations in Photoshop to achieve black and white images, which later can be used as a mask for projection. For example, the magazine scratches were re-created from a real image and exaggerated a little bit.
Same technique over and over.
Base material -> Scratches -> Damages -> Oil -> Grease/Smudges/Fingerprints -> Text -> Dust -> whatever was forgotten.
And between each step the most important one: “... -> Check REFERENCES -> ...”
Personally, I couldn’t present the handgun properly in Marmoset, just because the lighting and camera controls are driving me crazy. I wanted to get as close as I can to the realistic look and, for these purposes, I needed a good control over lights and shadows, and also I wanted to have some flexibility for experimenting with environments without exporting/importing assets every time.
Didn’t use any of those experiments because most of them were a disaster... I still learned a lot though.
3DS Max in combination with Redshift gave me all the flexibility and power I needed for achieving an exciting result. All the shots (except two from sides with light background) are lit using only an HDR image. Only in a few cases, I used basic Physical Light with low values for highlighting too dark areas (grin).
But really, the GIFs below are using only a single HDR image.
The rendering part for me was just pure experimenting. I wanted to avoid a common style, where you see an object in mid-air on a dark background and tried to use that kind of approach only for close-ups. But most of them were bad… Still learned a lot.
Hundreds of attempts, hundreds of different HDRIs, different camera angles, different environments &, etc. The main challenge was to find a good HDR image that will have only one light source and with a minimum amount of ambient flat-lighting that kills shadows and dark areas. One important learning for me was that I shouldn’t be afraid of shadows and dark areas. They are the key points, which provide realism and a proper feeling like “this object really exists”. But still, I really don’t know how to operate with them properly. It all comes from the gut feeling. I need to learn lighting more, maybe then I could explain better.
In the end, I saved roughly about ~30 renders, which I really liked and proud of and tried iterating on them. And I’m very happy and proud of the result I’ve achieved.
When I started working on this project I had a clear goal of studying different software and techniques and use the opportunity of having a mentor to its maximum. And my goal was mostly fulfilled. I was taking a lot of notes during the project and I need to iterate on them and do some analysis on a few things that I didn’t get or need to improve.
Every time I look at my work, I see things that could’ve been executed much-much better, and I will try to apply that knowledge for future projects and avoid mistakes as much as I can.
The biggest challenge for me was to combine working on this project together with my daily job. Working a full day in the office with a bunch of meetings and human interaction and then coming home and trying to focus again every day is super exhausting. Learning something new, while I was tired, sometimes felt like a burden and then because of that the progress was quite slow and both of these in combination resulted in frustration. So it was very important to avoid burnout even before I make it into the 3D industry. But I’m quite happy with the result, I’m glad about what I’ve learned and achieved so far, and it gave me a nice motivation boost, so I’m already working on the next project, and I can’t wait to finish it!
That’s it for my breakdown. Thanks for your time!