Counter-Strike 2

Counter-Strike 2

77 ratings
Creating Highpolies in Blender for Baking in Substance Painter
By emu
Using the OpenVDB Remesher Plugin in Blender to create highpoly models for baking in Substance Painter.
   
Award
Favorite
Favorited
Unfavorite
Introduction / Requirements
Introduction

For a long time I've struggled to generate proper highpoly models of the CS:GO standard models for my baking purposes in Substance Painter. After a long time I've stumbled upon a plugin using OpenVDB Voxel based remeshing. It basically gives you that polished beveled edge look you would get when using the popular Zbrush Dynamesh workflow. You get similar results at a much lower pricepoint though. At least it is more than sufficient for using it with said weapon models.

In this Guide I will try and show you how I usually go about when I create my highpolies for baking in Substance Painter. Basic knowledge of Blender is assumed.

Requirements

Blender 2.79[builder.blender.org]
{LINK REMOVED}

Optional: Custom Blender Setup[blenderartists.org]
{LINK REMOVED}

Substance Painter[www.allegorithmic.com]
What does Open VDB do?
What we want to achieve is to take the relatively lowpoly models used ingame and smooth them out to get a nice base to work with when we add details and subsequently generate a normal map.

Below you see the Open VDB Remesher in action on a very simple use case. I've created two cubes
which I have joined together and applied the script to. Notice how the hard edges get a nice bevel?
This is essentially what we want for our gun models.


In the following I'll try and show you how to apply that to a gun model and what possible pitfalls you have to look out for when using the Open VDB remeshing tool.
Using the Open VDB Plugin
Basically you go about and turbosmooth the ingame model, creasing all the hard edges by setting the crease to the value 1. You can either do this by pressing "Shift + E" or you put the value into the field I marked in the screenshot below.


When you're done with this you apply a Subdivision Surface Modifier by pressing "Strg + 3" or applying it using the modifier tab. To use the Open VDB algorithm on the smoothed mesh you have to access blenders search menu and type "OpenVDB Remesh Operator".


After starting the Open VDB plugin you'll get the following settings down to the left:


Settings

Relative or Absolute: I usually use Absolute but feel free to experiment

Voxel Size: I usually start with about 0.025 and go from there. For smaller details like screws etc. i go lower as well. Again! Experimenting

Isovalue: I usually don't touch that one.

Adaptivity: I use 0.025 but again, experiment and see what looks good.

Blur Iterations: Most of the time I use 2 (to really smooth things out you can apply a smooth modifier afterwards and play with its settings!)

Quads only: Definitely check that one to avoid weird artifacts in your smoothing!
Blender to Substance Painter Workflow
I have compiled the following video for you to see me use my typical workflow for creating a highpoly model to bake from in Substance Painter. This video only shows the seperation of the model using a naming convention with Substance Painter baking in mind and the general smoothing process of the gun model.


In reality I would go in and add loads of little details and bool into the model to create some more interest but this is supposed to be a general guide. Once you comprehend how the Open VDB plugin works you can go wild with additional detail.

01 Possible Pitfalls using Open VDB Remesher

The main thing you'll have to look out for are holes in the geometry. The ingame models often have missing faces in hidden places to save polygons. As you can see in the Video this is causing problems when you execute the Open VDB algorithm.


02 Seperating gun using naming convention

This is the first step that I do when creating a highpoly for any gun in the workshop. I seperate the gun by individual pieces to get a clean bake in the end. This avoids intersections which result in errors in your normal map or unwanted shadows in your ambient occlusion map (Imagine having a shadow of the receiver of the m4a4 on your magazine.)

I mostly group the gun by all its bigger parts, smaller stuff I usually put into a big group with other small objects. While doing this you wanna make sure to use the right naming convention.

For example:

receiver_low
grip_low
magazine_low
...


And so on. Once you're done you can select all of the seperate parts and duplicate them. To keep the scene from turning into chaos you'll move the copies of your seperate parts to another layer.

Do this by pressing "M" while having the copies selected. There'll be a popup window showing you the different layers you can move them to.


Now you go and change the suffix of your copies to "_high". This way Substance painter will be able to bake the different parts seperately resulting in a much cleaner bake.

receiver_high
grip_high
magazine_high
...



03 Cleaning up / Filling holes and remeshing

In this step you'll do the dirty work. You'll have to check every part for holes or errors. Crease sharp edges and turbosmooth the lowpoly model you're given. Make sure round parts are completely round before you run the OpenVDB remesh plugin. Otherwise you'll get faceted edges on cylinders. You don't want that!

Rough steps:

1. Fix holes
2. Crease sharp edges
3. Apply subdivision surface modifier with about 3 subdivisions
4. Use Open VDB Remesher
5. Apply smooth modifier to get even smoother result


04 Fixing up smoothing for normal bake

Before you can export your lowpoly and highpoly files for use in Substance Painter you want to make sure the smoothing on the lowpoly model is properly set up. Essentially you'll want one smoothing group on the whole model except on UV seams. Sharp edges within an UV island will produce a weird looking normal map.

You do this by selecting your lowpoly parts and remove any sharp edges they might have. Next go into edit mode and select the entire UVs in the UV editor.

Select UVs > Seams from UV islands


The seams should be visible as red edges in the viewport now once you enter editmode. Select one of the red seam edges and press "Shift + G" to select similar and press "Seam".


Once you have selected all the seam edges sharpen them. Now you're ready for exporting your FBX files for baking.

05 Exporting FBX files for baking in Substance Painter

This one is pretty self explanatory. Before you export anything you should go ahead and apply transforms to every part of the model. Do this by pressing "Strg + A".

Now just go ahead and select all "_low" parts and export them as "gun_low.fbx". Do the same for the highpoly parts and name them "gun_high.fbx".

06 Baking in Substance Painter

Create a new file and choose your "gun_low.fbx" as the model in the following dialogue. Choose the resolution you want to work with (the final product will be 2048 square pixels so this will be sufficient).


Next step is to choose your highpoly to bake from. Do the following:


Match: by mesh name

This matches your individual lowpoly parts with the highpoly equivalent resulting in cleaner bakes.

Antialiasing

Pretty much decides the quality of your maps. For the final result I would probably go as high as 4x4.

Self occlusion

This concerns the ambient occlusion output. Set this to "only same mesh name" to avoid unwanted shadows on moving parts which would make no sense.

Last thing you have to do is press the bake button and wait for the calculations to be made!


If everything went according to plan the maps have baked beautifully and you're ready to texture. I hope this guide is somewhat comprehensive. If you find any mistakes or something is unclear feel free to comment.

Feel free to follow my workshop if you enjoyed reading/watching this.

Greetings,
Emu


25 Comments
lun0 Jan 25 @ 1:19am 
Hey, i have a stupid question on how did you separate weapon so fast? I tried to separate it by loose parts and it ended up with 442 objects for nova. I know it was years ago since this guide, but maybe someone know how to do it..
emu  [author] Sep 14, 2023 @ 12:40am 
As i said, it's just what i worked with back then. This guide is pretty much outdated. If you can follow these principles with quad remesher. Go ahead.
cyb3rb3m0n Sep 12, 2023 @ 9:30am 
Sorry to bother you with more questions. Any reason for using OpenVDB over something like Quad Remesher? IIRC it can do the same thing, right? is it just price?
emu  [author] Sep 3, 2023 @ 12:41am 
That depends on the weapon really. I mostly try to keep It low but sometimes I end up with millions when dynameshing :x could probably decimate more sometimes.
cyb3rb3m0n Aug 31, 2023 @ 12:07pm 
I would love to see an updated guide. I've been following your work for a while and from what I understand you tend to do all the work in high poly then bake it onto a lowpoly. When you make your high poly models, roughly whats your polycount?
emu  [author] Aug 31, 2023 @ 10:50am 
All in all I still do it like this roughly. I did however resort to using zbrush bridge for blender. I should do an up to date tutorial at some point! This is pretty dated to be honest.
cyb3rb3m0n Aug 31, 2023 @ 4:47am 
Is there a bigger change in terms of workflow for CS2? or are you still following this method? Appreciate all the stuff you do mate!
emu  [author] Mar 13, 2023 @ 7:51am 
I am glad this is still relevant! You’re welcome
FCCS | IZOAIR Mar 12, 2023 @ 4:58pm 
Thanks a lot! very useful both video and article, especially for beginner skin makers who have a superficial understanding of working on skins, and also useful for a general understanding of the process of working on high and low poly.
3voMorphey Mar 21, 2021 @ 12:11pm 
I would be very grateful to you for that!
Your guide is excellent and it's a shame that it doesn't work because of a blender or add-on updates.