Art Blog 25 – Hard Surface Modelling Techniques [Part 1]
Updated: Aug 10, 2018
So I am going to discuss my hard-surface modelling workflow in Autodesk Maya. Hopefully, this should give you insights into how I do some hard-surface assets and possibly help any other 3D artists out there. In the future, I may provide more in-depth tutorials and the quality of the tutorials should improve as well so forgive me if I start out a bit rusty here… ;). This post is intended for artists who already have a basic knowledge of the game art pipeline and 3D modelling in Maya, where this workflow can be added on top of your pipeline.
So what is a hard-surface object?
Well, hard-surface objects are pretty self-explanatory. They are non-flexible, solid, often man made models such as cars, weapons, computers etc. We have used this workflow for some of the environmental assets and items in our game “Monstrum”; the walkie-talkie and welder for example.
A hard-surface modelling workflow aims to achieve precision and detail through smooth deforms which is why it is great for man-made machined objects. This is in stark contrast to organic modelling where shapes are very random and loose, where we would instead use a sculpting program such as Mudbox or Zbrush for creating the high poly detail rather than doing most of it in Maya.
In this post, I will only demonstrate how hard-surface models can be created in Maya as well as some helpful tips and tricks I use, but not how to get them to a point where they can be imported into an engine such as Unity or Unreal. I may make another post in the future detailing the steps after this which include low poly modelling, mapping and baking.
For this example, I will model an old vintage headset for use in a radio room scene.
First, let’s start blocking out a basic shape for the speaker. I have made a cylinder and added a couple of extrusions on it to get the basic shape we need. This model is what we call the “Cage” model; the lower resolution model in which the higher res model is calculated from.
We use Subdivision surface modelling for hard-surface modelling in Maya. When using hotkey “1” and “3” we can switch from normal (our cage) to smooth previews respectively.
We want to be judging our model based on the smooth preview as it is what represents the high res model that we wish to achieve by adding mesh smoothing at the end of this process which will eventually give us our high poly version ready for texture baking.
In it’s smooth form, the model will possess some of the properties of Nurbs surfaces, calculating the distance between the edges and smoothing them out to get rid of sharp edges.
As you can see above in Illustration 2, the model in its smooth preview no longer has the sharp edges in Illustration 1 as all of them have been averaged out and smoothed. Of course, this isn’t the result we want, as it is currently too smooth for us.
However, if we add edge loops around the edges we want more defined, we get sharper looking edges. The closer the edges are together, the sharper the edge become. In some areas, I add edge loops around both sides of an edge to get the sharpness I want. Remember, the smoothness is calculated as an average of the edges on all sides of it.
As you can see now, the edge loops we have added have made the edges we wanted to appear a lot sharper.
For the back of the speaker, we want a result that is more smooth and rounded. Rather than sticking the edge loops close to the edges, instead we pull them further apart and push them upwards from the mesh slightly to give us a more rounded shape.
Breaking up your model
Most of our hard-surface models are made out of multiple objects rather than one. So, how do we decide what parts of the model are split up, and what is joined together?
Generally, I split up the model into separate objects based on the different parts it may be manufactured from, similar to an exploded-view diagram.
This reflects how the objects are made and constructed in real life and adds a great deal of realism. I will separate my models based on the materials they will be made from, and the separate components they are constructed from. For example, I would not model screws into an object, but add them separately. Working on separate parts is easier when it comes to managing your edge loops and is easier to iterate on if something goes wrong on one of the objects.
Next up, we will create the bracket for the speaker. We created this shape from a polygon pipe, deleting half of it and filling in the holes.
I wanted to make the center of the bracket a lot wider than the other ends. To do this, rather than moving each edge separately and measuring the width by eye, I used the “soft select” tool.
This tool is found under the move/rotate/scale tool options and can be enabled by ticking the Soft Select box. This will allow the tool you are using to not only affect the edge, vertex or face you select, but also the ones in its proximity to some extent. The strength and radius can be adjusted.
By enabling this, and selecting the centre edge loop, I can scale the width of the edge loop, as well as changing the edges around it too to form a gradual thickness increase along both sides, which is a lot smoother and more accurate compared to doing it by eye.
Now when we preview the object in its smoothed state, it will appear to be thicker. Again, like the speaker we have lost all edge sharpness so we will have to add our edge loops to get that back again.
Adding edge loops around the edges returns some of the thickness of the bracket. An additional edge loop around the centre, pulled out at the ends help made the tips of the bracket rounded.
That has helped us get the shape of our bracket. I made the headband using the same technique, however I extruded the rounded ends to add a bit of bulge onto them, as well as extruding inwards along the sides to get an indent. I then duplicated it and stuck the two of them together at an angle to create the headband.
I then connected the ends with some smoothed primitive shapes with simple extrusions.
I added some screws and other details to connect the headset together.
Lets Make Some Holes
So here is another handy trick I use for making imitation holes. These are not actually holes that are embedded onto the model, but separate meshes that can be added onto the surface to give the appearance of holes. This is useful if you want to make many small holes on a surface when detailing.
First, I created a sphere and cut away half of it, flipping the normals whilst doing so.
Then, I scaled it down slightly, but not so much to make it completely flat. Placing these on the surface of an object can give the appearance of holes or indents. During the normal baking stage, these will transfer into the normal map to give an appearance of a hole without adding any additional geometry.
I used this technique to generate holes on the speakers.
As these are only imitations, looking at them from extreme angles will break the illusion, which is why they only work for small detailing. Here is another example I have used them for below.
To finish off, I will show my mesh in its low res “cage” form to show you how I laid out the edge loops.
Here is the model in its smoothed form.
Once you are happy with it, you can smooth the mesh which will turn it into a high poly model ready for baking. As a general rule of thumb, I never smooth the mesh any more than 2 division levels unless absolutely necessary.
The key to good hard-surface modelling is to keep things precise. Avoid moving anything by eye as any slight imperfection will ruin the quality of your hard surface model.
Don’t worry about polycount, but instead keep your edge flow clean as you want to make it as easy as possible to add more edge loops, ensuring that you are joining edge loops when needed and delete ones that aren’t being used. Doing this will make your edge flow easier to manage.
Here is the final headset model in the radio room scene I am building.
I hope this post was useful for you and please give me your feedback. Possibly at a later date, I will write up how we prepare the high poly models for low poly baking and making them ready for your games engine.