Sergejs Karpovs talked about the production of his 3D vehicle project Polaris MRZR D4: modeling in 3ds Max and ZBrush, texturing with Substance tools, cloth simulation in Marvelous Designer, detailing, and more.
Hello, my name is Sergejs or Serge as I call myself which is much easier to pronounce. I’m a Vehicle/Hard-Surface artist from a small town on the border between Latvia and Lithuania, currently living and working in the UK. I specialize in vehicle and hard surface art for first-person shooters and action genre games as well as blocking animation for movable and deployable assets and sometimes helping environment and vehicle departments with concept art.
I’m a die-hard fan of story-driven games, - everything started a long time ago, probably from Pince of Persia for DOS, Wolfenstein 3D, Doom, Quake. I was so amazed by these games that I started drawing similar environment stuff with Qbasic’s program code using just lines, circles, and gradient fills, and sketching weapons on paper.
I didn’t know at that time it was possible to use specific software to make art on the computer. I used to have cool neighbors, two brothers who were really digging programming. Once they visited me at home and showed a code in Qbasic that was running a 2.5D environment similar to FPS games of the DOS era but a lot simpler with no textures, just lines and filled squares. I was so passionate about it that next day I said we were going to make a game and showed some of my sketches with weapons and UI with protagonist face in the center of the interface similar to Doom. However, I was quickly chilled down by one of the brothers saying that making games is hard and it is a long process, you also need to learn specialized graphic programs to make art for games. A few months later, they told me that all games are drawn in 3d Max and they have 10 diskettes with the installation. Unfortunately, my 486 dx2 66 mhz pc couldn’t run 3ds DOS at that time and showed just a black screen saying “math co-processor not found”. With all this knowledge I said to myself that I was going to stop learning programming and focus more on that mystical 3d studio and other graphical software.
Next summer, they brought me a demo version of 3d studio Max r3 from Kinetix and that was AWESOME!
I worked on such games as Star Citizen, Squadron 42, Call of Duty: MW2 Campaign Remastered, Call of Duty: MW Remastered, Call of Duty: WWII, Call of Duty: Infinite Warfare. I’m really-really lucky to have had the chance to work on these great projects and honestly, I want to say thanks to everyone who gave me this opportunity.
Currently, I’m working on a few personal portfolio projects and participating in Daniel Solovev's concept weapon class.
I have a college diploma in electrical engineering but I always dreamed to get art education and become an artist, a game artist one day. As I mentioned before I’m from a very small town and I didn’t have many options; on the other hand, we don’t have AAA games industry in Latvia, and getting a university degree in arts may lead you to unemployment. But I dreamed about making AAA games so badly (because story games are so cool!) that I applied to two universities at once (just in the case, if this dream journey will fail me), one of them was a bachelor's degree in engineering and another in arts. At the same time, I was working as an electrician to pay bills for my education (was a bit crazy, like really crazy). Later I decided to dedicate myself to the bachelor of arts degree and quit from the second university.
I managed to learn the basics of art and some computer graphic tricks at the university, but education was more focused on computer design and not on game development, so I’m mostly self-taught.
Unfortunately, I never had time to take online courses. I tried to take CGMA's Character classes once but three weeks before the start of the class I was so busy at work that I literally had no time to participate.
Recently, I left my last working place which gave me a bit more free time to focus on studying, so I applied to Daniel Solovev's class. This is basically my first time taking courses.
If you're studying on your own, I highly recommend these internet resources: Polycount, Cgsociety, 3d total, Zbrush central, Arstation, and 80.lv. There are also many great tutorials on youtube, I may recommend checking these channels: Blender Guru, Arrimus 3d, Michael Pavlovich, Learn Squared, Pixologic. Great content, a lot of valuable information and tutorials there.
Polaris MRZR D4: Idea
I really love military vehicles, everything there is made with purpose and maximum functionality, and every model you do is an opportunity to learn something new and how it works.
I was surfing around the internet looking for inspiration for my next personal project, found this vehicle, and immediately fell in love with it, - such a great design, the shapes are so cool. I’m always trying to push myself with every personal project, and with Polaris, I tried to do my best and use all software I know including Fusion 360.
The idea behind Polaris was to create a game-ready vehicle and optimize it as well as I can. I strongly think that every game asset should tell a story, especially vehicles, so I started thinking who rides this vehicle, what story may support it. In my mind, I imagined that badass mercenaries ride this ATV, they are less military, and they lack discipline. That’s why you may find coke cans and coffee cups lying around as well as a “Time” magazine. I also made an extensive research on how military vehicles look in action, what gadgets and attachments people add to it, etc. That’s how the idea of the hanging backpack on the side was born.
I used 3ds Max for modeling and ZBrush for detailing and making the engine. The new boolean system, dynamesh, and the polish tool are so great that I probably would have spent way more time making the engine without ZBrush.
In low poly vehicles, the engine is most of the time hidden but you still need to show shapes and complexity of it. At the same time when you go for optimization, this part of the vehicle may help you save a lot of polycount. So you need to fake it. You always can go into details but you need to keep in mind that in games your polycount is limited. Instead of modeling full undercarriage with transmission or a complete engine fuel system, you can use plastic covers or simplify it. It will save you a lot of valuable polys and vertex count that you may use on visible elements or some customization like jerrycans, ropes, bags, weapons, cases, etc.
Usually, I’m trying to simplify geometry in non-vital/hidden areas, keeping in mind that the vehicle going to have a damage system and can explode.
For example, the engine itself is just well-optimized boxes and cylinders with baked normal map atop. After damage or explosion, it will be covered in soot and dust and it will be hard to see the difference between complex shapes and boxes after destruction, especially if it’s covered with some geometry around.
Making heavy optimization in these areas gave me the opportunity to reorder polycount to visible areas such as dashboard, customization, and a small variety of details. Another good example of optimization is the driver pedals.
Most of the time I do all my bakes and ID maps using xNormal and import them to Substance Painter. Substance Painter is the standard for industry these days, this software is amazing, quick, and easy to use.
At first, I’m cleaning my normal maps to make them as clean as possible and get rid of artifacts. As the next step, I’m trying to break the whole model by the tone; colors can be the same but slightly darker or brighter in some areas.
The best approach is to work in logical layers, - first, you apply metal, then paint, paint variety, etc. The most important step is to not add generators all at once or your model will become dirty really quickly. To get most of the optimization and achieve good texel density, you need to overlap similar parts as much as possible, trying to keep unique UVs in the areas the player is going to look at most of the time. It’s a really challenging task when you are baking normal maps and texturing models with such optimized UVs, trying to keep textures looking unique.
The best way to achieve this is to make fewer elements in the texture and make brush strokes horizontal and clean. It’s harder for our eyes to notice a similarity if there is less repetitiveness in the pattern. If the player can’t see two parts of a symmetrical UV shell at once, then you can add more details to that part. It will take time for the player to realize that the texture is the same on both sides.
I also wanted to use Substance Designer in this project, it’s one of the best software solutions for tileables/procedural textures. I love this software but as a vehicle artist, I don’t use Designer a lot in my daily pipeline, so I’m really happy to use it when I have a chance.
The material itself turned out very simple, just some mask nodes and tile generators connected to the switch node for easier use in Substance Painter.
For all fabric and cloth, I’m always using Marvelous Designer. It’s really great to use it on vehicle seats; even if you get few micro folds, they are physically simulated and 100% correct and add realism to your work. I was really impressed to find out that even few simulated folds can give a fabric some feel.
I also decided to simulate all safety belts in MD. First, you set up all your locks in a 3D package, and in Marvelous, you connect them with fabric. You are getting very cool results: belts start to act like they are real, getting tension and twisting randomly. The result is much better than if you model them by hand in a 3D package and use ZBrush for folds.
The most exciting moment was creating the backpack in Marvelous Designer. Same as with seats, you need to get some base in a 3D modeling package first to help wrap the fabric around it, otherwise, it won’t work and all patterns will fall onto the ground in simulation.
When all patterns are sewn together, it’s pure joy watching fabric simulation in real-time. The same method is used for making sleeping bags. You need to import a cylindrical shape, attach a piece of fabric to it, and start slowly rolling it over and dropping to the ground in the end.
Usually, I’m trying to add more details than there are in real life. For example, if one side of the vehicle is just a flat surface, I may weld a hook to it or add a few extra bolts/rivets/custom shapes just to make it look more interesting (for civilian and racing cars there is a different approach and philosophy).
Sometimes, it’s very hard to find references for a specific vehicle, especially for interior. In this case, you need to improvise, getting as many references as you can find from other similar vehicles. The most challenging part is adding details to the wheels because wheels need to be round and heavily optimized, with the texture resolution as low as possible and a nice texel density. At the same time, the labels and marking on the wheels give the vehicle a specific look and feel, so this step is very important.
I tried my best to add as many details as I can keeping polycount as low as possible. An interesting story happened with me after posting Polaris MRZR D4 on Arstation: a Polaris representative contacted me assuming that I had blueprints or I connected with the Latvian army somehow. In the end, they were amazed at the level of detail I achieved using just youtube videos from exhibitions and pictures from the internet.
I usually use a 3-point lighting scheme and add some extra lights to highlight the shapes of the vehicle where it’s necessary. Marmoset Toolbag is another awesome software that helps to render your model easy and fast, I really want to say thanks to the Marmoset dev team for what they are doing, you are great!
I was heavily impressed with renders that Karol Miklas achieves using Sketchfab, so I decided to try setting up my model in it, too.
Optimization for PS5
PS5 and the new generation of consoles are going to be a blast that everyone waited a long time ago. The polycount going to be higher, much higher than in current games. These improvements are going to allow vehicle artists to add even more sweet customizations and details. Most of the stuff will stay the same in the beginning though - optimize as much as possible to allow for more stuff to be rendered per view without FPS drop.
I didn’t use this approach on Polaris but I guess that PS5 developers are going to use more and more tillable textures with custom masks mixed in shaders as well as chamfered edges with custom normals on big shapes and normal maps on something small. This method increases polycount heavily but allows faster development cycle as well as saves precious video memory and achieves better texel density for textures.
My main challenge was to find free time and combine it with my main work, since I make hero assets there, they are very-very demanding and got specific deadlines that must be met since other departments rely on you.
I probably didn't sleep more than 4 hours while working on it last month but if you are really passionate about what you are doing and dream big you can overcome any challenge.
Currently, I’m open to work opportunities and dream of a chance to work on an iconic AAA story-driven game. Time will show what’s going to be next. As one of the greatest phrases goes, I am a man of fortune, so I must seek my fortune.