Shoe modeling with Blender
In this tutorial I will go through the process of creating a pair of sneakers. In this first part I will cover the steps of modeling a low-poly and high-poly version of the shoe using Blender. These models will be used in the second part for unwrapping and texturing in Substance Painter. The goal is to create a model with as few polygons as possible that is easy to unwrap, texture, and render in a real-time engine.
Final high-poly, low-poly, and textured model
References & modeling setup
Before starting to model, it's important to find good reference images or blueprints. Having shots from different perspectives makes modeling a lot easier and the final model will be more accurate. I created my own blueprints, with a side, back, bottom, and top view.
Separated blueprints with a transparent background
Add the reference images to the scene and arrange them according to the scene orientation in Blender. You can enable transparency in the object data properties panel and turn off the selectability of the blueprints in the outliner. This way you don’t select the background image accidentally. Shrink the cube and the images to the correct scale to match the real size of the shoe.
Modeling the sole
Using the top blueprint as a background image, start modeling the sole from the top orthographic view. It's helpful to turn on x-ray, to see through the mesh. Use extrude (E), scale (S), move (G), rotate (R), and fill (F) to create the flat shape of the sole.
Flat shape of the sole, quads only
Adjusting the curvature
Now working from the side view change the profile of the shoe to match the background image. X-ray and proportional editing (O) can make the modeling process easier. All the small details will be added in the high-poly mesh, at this stage it's all about the overall curvature and even topology.
It helps to take a look at the model in both perspective and orthographic mode when modeling
Creating the main loops of the shoe
The next step is creating the main volume of the shoe, with even topology. The loops should connect and not spiral around the mesh to make the following steps (modeling details, UVs, texturing) easier. Using the basic modeling tools in edit mode, I block out the curves with the goal of making them match up with the blueprints. It's important to not worry about the details yet, creases and other layers of material will be added on top. I recommend starting with fewer edge loops, and refining the forms slowly.
Even topology and connecting edge loops are key for good UVs and texturing
Filling the gaps
With the main loops in place, fill in the gaps. I use 'F' to fill, the bridge edge loops tool 'W' and merge 'M'. For adding subtle changes to the form, you can also use proportional editing 'O' to avoid creating hard edges accidentally. I recommend changing the MatCap from time to time, to see clearly if there are any unwanted bumps in the mesh. The best way I found to achieve a nice curvature is to dissolve some loops 'X' and work with less polygons.
It's crucial to get the simple, but at the same time complex form of the shoe right at this stage. Adding details too early will make fixing the big shapes more difficult
Adding pieces of leather
I use basic modeling techniques and modifiers to make the leather parts stick to the surface of the main volume. You can activate face snapping and turn on 'Project Individual Elements' to make the polygons snap to other surfaces. Then, to offset the geometry use 'Alt+S' or a shrinkwrap/displace modifier. To give the mesh some thickness, use the solidify modifier and activate 'Only Rim'. This removes unnecessary faces that are not visible from the outside.
Keeping the separate pieces as shells without faces on the inside makes UV unwrapping a lot easier, and it also reduces the polycount
Next, I apply the modifiers and adjust the topology in edit mode. I use the 'Loop Tools' addon to create circular holes for the shoelaces and add some loops to refine some edges. I try to avoid any unnecessary geometry that doesn't help communicate the shape of the shoe. For adding the small metallic circles I use a torus with a very low number of segments (for example 8 major segments, 3 minor segments).
You can use creases to get sharp edges when using smooth shading, make sure to activate 'Auto Smooth' in the Object Data Properties for that
Modeling the shoelaces
I tried many ways to create shoelaces (curves, skin modifier) but for the shape I needed for this particular shoe I just extruded edges and used the solidify modifier to add thickness. To make UV mapping easier and avoid unnecessary geometry, I use the 'Only Rim' option in the modifier settings too. After sharpening the edges, I have shoelaces that have just enough geometry to look believable, and are easy to unwrap and add high resolution detail to.
Modifiers are a great way to procedurally change your mesh. But it's important to apply them at some point and adjust the created topology manually
Creating the high-poly model
I duplicate the finished low-poly model and move it to a different collection. I subdivide all the parts using the Subdivision Surface modifier (~6 subdivisions) and add high frequency details with the displacement modifier. You can use any fabric or leather displacement maps you can find on the internet and add them as a texture to the displacement modifier. I use UVs as the texture coordinates, these are not the UVs for texturing though. Adjust the rotation and scale of the UV islands to change the flow of the patterns on the surface, getting the pattern sizes right is very important.
I use a combination of Blender internal textures (wave, noise) and displacement maps created in software like Substance Designer
After applying all the modifiers of the individual pieces of the shoe, I use the sculpt mode to add wrinkles, additional displacement textures, and stitches. For the stitches I use a black-and-white alpha of a single stitch and adjust the spacing. The stabilize stroke option helps to draw smooth curves and straighter lines. Sometimes I also change the stroke method to 'Line' for exact cut lines. But It's important to remember that on real shoes there is always some imperfection, so adding some jitter and wrinkles to the model is not a bad idea.
I also paint a height map for the sole in Photoshop (you can use Blender too) and use it as alpha in sculpt mode
Finishing the models
I keep some parts of the model separated, to avoid problems when baking the textures. I rename all the low-poly and high-poly parts (for example: shoe_sole_low and shoe_sole_high).
In part two of this tutorial we will unwrap the low-poly model, bake and paint textures in Substance Painter, and render a final image
Top Tip 1 - References, References, References
Get photos from all angles, photos of specific details, blueprints or even the real object you are creating. This will help you immensely when modeling and texturing.
Top Tip 2 - Think ahead
The process of creating a 3D model is complex, sometimes I start working on something and notice problems very late when they are hard to fix. That's why I try not to rush at the beginning and think ahead: How can I sculpt the model to make retopology, UVs, texturing, rigging, or animation easy? What parts need to be detailed, what areas will not be visible? Problems always arise, but by thinking ahead you can make your life (or the life of your colleagues!) a lot easier.