📷
Hey All,
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.
Intro
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.
Starting simple
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.
📷Illustration 1: Hotkey “1” shows the model in its default mode.
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.
📷Illustration 2: Hotkey “3” shows the model in its smoothed mode.
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.
📷Illustration 3: Adding edge loops help define the edges.
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.
📷Illustration 4: Edges appear to be sharper now that additional edge loops have been added.
As you can see now, the edge loops we have added have made the edges we wanted to appear a lot sharper.
📷Illustration 5: Adding edges around the other side of the speaker.
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.
📷Illustration 6: As the edges are further apart and pulled outwards, this gives us a more rounded look.
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.
📷Illustration 7: Exploded View
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.📷Illustration 8: Half Polygon Pipe in it’s default cage view “1”
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.
📷Illustration 9: Soft Select increasing the width of the speaker bracket.📷Illustration 10: Smoothed Bracket without additional edge loops
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.
📷Illustration 11: Added 3 edge loops to define edges and curve
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.
📷Illustration 12: Smoothed bracket with additional edge loops.
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.
📷Illustration 13: One of the two headband pieces.
📷Illustration 14: I added some extrusions from a couple of boxes, as well as some cylinders to form this shape.
I then connected the ends with some smoothed primitive shapes with simple extrusions.
📷Illustration 15: All the pieces are rotated and connected together to form the headset.
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.
📷Illustration 16: Flipping the normals will turn the faces in towards the sphere.
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.
📷Illustration 17: Scaled down half-sphere
I used this technique to generate holes on the speakers.
📷Illustration 18: Result of adding the half-spheres onto the speaker.
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.
📷Illustration 19: The holes are placed directly on top of the mesh and should not intersect it.
📷Illustration 20: Used to create detail easily without modifying the mesh underneath.
To finish off, I will show my mesh in its low res “cage” form to show you how I laid out the edge loops.
📷 Illustration 21: Hotkey “1” on the headset mesh
📷Illustration 22: Hotkey “3” on the headset mesh.
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.
In Summary…
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.
📷Illustration 23: Radio Room WIP
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.