An easy guide on reducing 3D scan mesh size and baking textures from high poly to low poly in Blender.
With such a wide variety of uses— game assets, NFTs, e-commerce, AR/VR, etc—there may be times when you need to reduce the file size of your 3D scan to suit a specific project. In this guide, we'll be walking you through lowering the poly count in your 3D mesh without compromising on quality. For this project, we'll be using two free and easy-to-use programs, Blender and Instant Meshes. If you'd like to follow along with our high poly example model, you can download it here on our Sketchfab page.
Step #1 - Importing your low and high poly meshes
The ultimate goal of this project will be to bake the color and normals from our original high poly 3D scan onto a newly generated, lower poly model. This will result in a model with high textural detail and a low poly count— the best of both worlds!
Importing The High Poly To Blender
First, in Blender, go to File > Import > and import your original high poly scan. Don't adjust the orientation of your model yet, as we'll need it to line up perfectly with our low poly model later.
Generating The Low Poly Mesh
Now to generate our new lower poly model. In Instant Meshes, click the "Open Mesh" button to locate and import your 3D scan. Use the "Target vertex count" slider to choose the rough amount of vertices you'd like your low poly model to have.
Click the "Solve" button directly below the Target Vertex Count slider to generate the flow of your model's topology. Then click the secondary "Solve" button to generate your mesh preview. If you are unhappy with the flow of your model's topology, you can use the comb tool (located just below the vertex count slider) to adjust it. If you make any changes with the comb tool, be sure to hit the second solve button again before selecting "Export Mesh."
Select "Extract Mesh" to generate your new low poly mesh and "Save" to save it to your computer. Note that while saving it, you must type ".obj" or ".ply" at the end of your file name or you will receive an error message.
Importing The Low Poly Mesh To Blender
Back in Blender, import in your new low poly mesh. If you'd like to adjust the orientation of your 3D scans, now is a perfect time. Make sure both high and low poly models are selected and orient the models to your liking. Both models must remain perfectly overlapping for our texture baking process to work.
Once you are satisfied with the orientation of your meshes, hide the high poly 3D scan (click the eye icon next to the high poly mesh in the Outliner), so we can focus on our low poly.
Lastly, in the 3D Viewport, right-click on your low poly mesh and select "Shade Smooth" to smooth out any rough faces on your model.
Step #2 - Adding modifiers
Next, we'll be adding some modifiers to our low poly mesh to ensure it's fitting perfectly to our high poly model for the bake.
In the Properties Editor Tab, click on Modifier Properties (green wrench icon). Click on "Add Modifier" and select "Multiresolution." Then, click on "Add Modifier" again and select "Shrinkwrap."
Under the Shrinkwrap modifier, set "Target" as your high poly scan and change "Wrap Method" to "Project." Under "Axis" make sure both "Negative" and "Positive" are selected.
Now, under the Multiresolution modifier, click "Subdivide" two or three times.
Finally, select the Shrinkwrap modifier and apply it (Ctrl-A). Navigate back to Multiresolution once more and set the "Level Viewport" to 0.
Step #3 - Setting up image texture nodes
In this step, we'll be working in the Shader Editor to set up the right texture nodes for our bake. First, we'll need to pull up a window for the Shader Editor. Start by hovering your mouse over the upper right corner of the viewport until you see a ' + ' icon. Click and hold to drag out a new window. Change the "Editor Type" to "Shader Editor" by clicking the upper-most left icon in the window.
Creating A New Material
To start, we'll create new material for our low poly model. Make sure your low poly mesh is selected. In the Properties Editor tab, navigate down to the Material Properties tab and click on New Material (the double square icon just below your Material Index). Rename your new material so it is easy to locate (in this example we named it LowPoly) and make sure it is selected.
Creating Color Node
Back in your Shader Editor window, we'll be editing the nodes for this new material. Hit 'shift - a' to bring up the add menu. Select Texture > Image Texture (pictured below).
On the Image Texture node click "New" and enter the following settings:
Name: Your3DScanName_Color
Width: 4096px
Height: 4096px
Alpha: Checked
Click and drag the connector from "Color" on your Image Texture node to "Base Color" on the Principled BSDF node.
Creating The Normal Node
Again, hit 'shift - a' > Texture > Image Texture to create another Image Texture Node.
Next hit, 'shift - a' > type "normal map" in the search and select the Normal Map node (pictured below).
On the new Image Texture node click "New" and enter the following settings:
Name: Your3DScanName_Normal
Width: 4096px
Height: 4096px
Alpha: Unchecked
32 Bit Float: Checked
Click and drag the connector from "Color" on your Image Texture node to "Color" on the Normal Map node. Then, drag the connector from "Normal" on your Normal Map node to "Normal" on the Principled BSDF node.
Step #4 - Unwrapping
We'll need to unwrap our low poly mesh before we can start baking. To do this, drag out a third window and set the editor type to UV Editor. Next, navigate to "Edit Mode" in your 3D Viewport (make sure your low poly mesh is still selected). Then, hit 'u' > "Smart UV Project" to unwrap the model.
Step #5 - Baking
Baking Normals
Go to the Properties Editor tab, click on Render Properties and scroll down to "Bake."
Select "Bake from Multires" and set Bake Type as "Normals."
In the Shader Editor window, click on the Image Texture node for your normal map (in this example, Zero_Normal) to select it.
Back in the Render Properties tab, hit "Bake." If your bake was successful, your screen should resemble the photo below.
Baking Color
Baking color is only slightly more complex! Back in the Render Properties, uncheck "Bake from Multires" and set the Bake Type as "Diffuse." Under Contribution, uncheck Direct and Indirect. Make sure both Color and Selected to Active are checked.
Expand "Selected to Active" and set Extrusion to 0.01m.
This time, in the Shader Editor window, click on the Image Texture node for your scan's color (in this example, Zero_Color) to select it.
Hit "Bake" once more. After a successful bake, your screen will resemble the photo below.
Final Results
Below is a wireframe comparison of our two 3D scans. Our high poly scan (right) has 1M polys, while our low poly scan (left) has 11K polys— a 989,000 polygon difference!
Here's a render of the final result!
While you can spot a few small differences between the high and low poly models, the low poly has retained the majority of its quality. Not bad for two free programs!
We hope you found our article on reducing poly count in 3D scans helpful! If you used Arkify for your 3D scans, we are happy to export your scans in any polygon count(s) of your choice to save you the work! Interested in scanning with us? Shoot us an email at arkify3d@gmail.com or use the contact form on our website!
Comments