# N-Gons and bevels/chamfers with circular holes

Offline / Send Message
Good day everyone,

so, I'm not that new to 3D modeling and 3dsmax, but some questions arose while following along a rather non-enlightening tutorial about modeling an Ingram Mac10 (random part: http://www.youtube.com/watch?v=MkAKJsEIKFU

It includes some holes and bevels and especially when creating those, the instructor is throwing n-gons wherever they fit for sake of a clean mesh as he says. As I learned it, "a clean" mesh is considered one nicely and evenly constructed of quads. Of course just not caring about this makes modeling a bit easier.

Now how important is this really? Does it suffice to just care about quads when one might want to bevel an edge later on or animate (/deform) the model?
Triangles would not be any better than n-gons in this regard, right?
What is considered the "professional way"?

Another big question is about circular holes. Instead of just jamming some splines together and convert them to poly, which results in nicely round circular holes, but also in many ngons - I tried to aim for better topology.

This is what I came up with and similar to other approaches I have seen concerning circular holes. The top one - the lower ones show a different approach.
Both ways however bring a certain issue with them:
Chamfering the holes' edges does not yield good results - is a turbosmooth the only hope?

Could maybe smoothing groups get it to look somewhat better. I know that for the actual contour the hole would need more vertices to its edge.
I have seen this way: [ame=" holes in 3ds max without turbo smooth - YouTube[/ame]
But it's based on n-gons again.

What is your way/a proven way to go about those holes?

Also, there's some smoothing issue on the backside of the top hole's area - why could that be?

I'd be glad if someone could share his or her knowledge about these matters!
Thank you for reading.

## Replies

• Offline / Send Message
interpolator
So I didn't watch the video but:

For 'clean' meshes: Doesn't really mean anything. N-gons are for working. Triangulation has to happen at some stage; if you're baking a normal map you do so before that, otherwise it will get triangulated when it gets taken into whatever engine you use. Triangulating a mesh while you work will only make editing the mesh more tedious.

Converting splines to polygons to make holes... wha?

If you're working on a flat surface it's pretty easy to create a hole, if you have a 2x2 grid of quads you can connect the outer corner verts to the middle vert (creating diagonal lines making an X) and then bevel the middle vert.

Like this:

As for the specific topology, keep it simple. The top version you have is fine as far as I can see, although for a sub-d mesh you've overcomplicated it and used too many segments for the hole. To quote Perna:
You're not supposed to make curves by hand. Ever. That's what sub-d is for.
As for beveling, you can do so to get a rounder corner. I'd recommend having double edge loops around the hole though to preserve the flatness of the rest of the mesh.

As for the last image it just looks like tight triangulation on a non-planar (not flat) surface.

For your second (lower) holes, they're pretty wonky. You've got weird useless verts on a planar face and generally odd geo that won't subdivide well.
• Offline / Send Message
Thank you for your quick and helpful reply!

I get the basic drift now and will try to hone this quote in the future.
However - how would you put a hole into a place, where there are either multiple polys already or as in my case a quad that is not square.
I created a square plane for the hole and put it into the basemesh, bridging the edges after deleting the original polygon. I guess this produces a chaotic edgeflow. Is there a better way?

It produces a non-uniform smoothing however, which I would deal with by manually editing the smoothing groups of the affected faces.

Turbosmooth counts as sub-dividing, right? Are there different kinds of sub-d?
Does it work just as well, when the mesh is not all quads?
Where is it ok to even use it, polycountwise? I don't know about what's considered high or low poly for what application - what should I consider?

A turbosmooth-problem:

I don't know how else I should manage the topology with the hole in the middle, if those two buttstock pieces are meant to be attached to the backpiece.

Another noobie-question:

How do I just mirror this element (is an element the same as a sub-object?) without the extra work of detaching, mirror and reattach? Mirror modifier will mirror the whole object. I'd like to just put in a numerical value to scale it along the appropriate axis by -1, like I learned in blender. But I cannot find how to do this in Max.

About quads again:

I understand that eventually everything needs to be triangles, i.e. gets converted automatically. However, working with sub-div or for a deforming animation, isn't it best to work with just quads? I don't know about the logic behind the scenes enough yet. Say I'd want to let the barrel of Elmar Fudd's shotgun be deformed by a sphere pushing through it, because Bugs Bunny put some obstructing rabbitpoopellets in there - wouldn't this need a very even and clean topology?

For who's so inclined, I'd be very thankful if you could take a look at the max project file and check the model for stupid noob-mistakes or similar shortcomings that could be eradicated. Any tips are very welcome!
Download Max project file (2015), 2MB
(Please "unhide all"!)
• Offline / Send Message
interpolator
First image:

For a highpoly it doesn't really matter. The square around the hole is unecessary but it's not exactly 'wrong'. There's also no need to connect those parts so completely with the rest of the mesh. Look at how n-gons behave when you've got subdivision (turbosmooth) applied. That should give you an idea of when geometry causes problems. On planar surfaces you can get away with anything really, so feel free to terminate loops etc.

2nd image:
Not really sure what's going on here. Upload larger images if you can, try imgur.com for an easy/fast image host. Perhaps you're confused between two concepts. The smoothing of a mesh (Vertex normals, also called hard edges, smoothing groups) is only relevant to the lowpoly. The highpoly is all one smoothing group (averaged normals) and gets its smoothness (or rather, its sharpness) from it's high amount of polygons. You might find it useful to look through highpoly wireframe refences on the net, not as an absolute guide of what meshes should 'look' like, but just to get a general idea of what works. Check out the asset giveaway thread and for specific sub-d examples, Perna's image folder.

Yes turbosmooth is sub-d, and yes there are different 'types', which to my understanding is different mathematical ways of calculating the subdivision. Regular sub-d is turbosmooth. There is also a (different/better) method called Catmull-Clark subdivision, also called Pixar or Psub, and Open SubDiv in newer versions of 3ds max I think).

Okay so I guess you're not fully aware of the highpoly / lowpoly distinction and what does what job. There are some really good videos made by polycounters that go through the whole process to create an asset, and this is probably the best way to understand the workflow. Here are three videos that cover the process, definitely skip through them when you have time:

Hans Palm's shotgun tutorial
Joseph Harford's Tracker Knife tutorial
Ben Bolton's weapon creation demo

N-Gons are generally fine for the highpoly. For the lowpoly they will have to be triangulated, usually automatically, on export. Don't worry about any hard 'rules' you might read about on the internet related to triangles/quads/n-gons, just play around and see what works.

Highpoly models are used to bake information from (or in offline rendering where performance isn't a huge issue). These are detailed and dense meshes. The lowpoly is what is sent to a game engine, and should be efficiently made (but don't worry too much about efficiency when you're still figuring the basics out, it's pretty common for people to be overly concerned with optimisations that don't really matter. Outdated information inspires a fair bit of this imo).

3rd and 4th images:

Again hard to see but it looks like you're unaware how subdivision is applied. Geometry needs supporting geometry to hold its shape. As shapes get more complicated adding support becomes more complicated (particularly with curved surfaces, where adding extra support ruins the original curvature). Perhaps play around with VERY simple shapes, like a cube, and see how it behaves under turbosmooth. How does it change when you add a loop through each axis? What about three loops? Here's an older example that shows how extra loops affect a plane when subdivided.

And yes, when working with sub-d you don't often triangulate because quads and ngons are easy to work with and sub-d cages have no specific geometry requirements. As you note if everything was triangulated working with it would be difficult.

Also if you want to share a file use a format that is package agnostic like .OBJ
• Offline / Send Message
Thank you very much for your time and effort again, Bek!

I have changed the image hoster and could now show the images in their correct size, have a look.

I understood the basic concept of smoothing (smoothing groups, smooth modifier) and smoothing by subdivision (turbosmooth, meshsmooth). Question is: If I have a low poly mesh which is looking fine as is, but needs a really round, i.e. high poly hole, is it alright to just smooth out, that is give more polies, to that part with the hole? In terms of later compatibility, deformation etc. Or is it better to go all smooth and do the extra work of adding the supporting edges where needed?

Thanks for you elaboration, you are right, I have to try around more and I will look at those references you named.

With the larger images you now should be able to see that turbosmooth-problem with the buttstockpiece - I added supporting edges, but seem to have made some mistake in the inner area.

2. image: I put in the part with the hole, then welded it to the original mesh. The part is the same I'm now trying to mirror individually for the other side, see last image with the red-coloured element.

You are of course very right to point out the format and I did not upload as .max out of ignorance, but rather so the modifier stacks would not collapse and still be editable to see, if a turbosmooth is right and what might be changed to make it better, as I specifically have problems with this technique right now.

I'll go take a look at those tutorials you kindly linked now,
thanks for those!
• Offline / Send Message
interpolator
thenoob wrote: »
If I have a low poly mesh which is looking fine as is, but needs a really round, i.e. high poly hole, is it alright to just smooth out, that is give more polies, to that part with the hole? In terms of later compatibility, deformation etc. Or is it better to go all smooth and do the extra work of adding the supporting edges where needed?

What do you mean by lowpoly  the mesh that gets sent to the real-time engine (what's referred to as the lowpoly) or the sub-d cage (the mesh that you add supporting loops/geo to to hold its shape when subdivided, commonly called the highpoly or sub-d cage)?

If the former, lowpoly meshes use just as much geometry as is necessary to convey the shape they need to. Also if you're doing the highpoly/lowpoly + normal map workflow you shouldn't worry about the smoothing groups of your lowpoly until you begin unwrapping the lowpoly UV's, as your UV's have a significant affect on where hard edges (or 'smoothing groups') should go. When you're ready to worry about that part of the process read this sticky in tech talk.

If the latter, highpoly meshes aren't generally restricted in how much geo you can use, but in many cases it is better to use as little geometry as possible to make further editing simple.

One other thing: bevels/chamfers shouldn't be used to add supporting geometry for a sub-d cage. Why not? Because that's a destructive workflow and makes it impossible to reduce your highpoly to your lowpoly. Instead you run edge loops which are easy to adjust, edit, remove... unlike bevels. For baking a normal map (something to worry about later on) you also need to exaggerate the roundness of corners so the information reads better. Basically don't make any of your edges super sharp because they won't translate well later on.

Can't really help you with the mirror stuff as I don't use max. I also can't open .max files.
• Offline / Send Message
Sorry, I was not clear with my descriptions. Low poly just meant one seperate mesh of the gun model, which in contrast to other individual, non welded parts, is not sub-divided. It contains a hole however, which would need smoothing. So for the sake of saving on edge loops and more polys, I'd leave everything as is, just put subdivision to the part that really needs it.
Although you say not to make edges super sharp, so maybe I should do a whole mesh subdivide after all.

Thanks for the link, I'll definitely checked this out. I have already watched that G56 "tutorial" and it was really interesting, one step further to understand the high/low-poly and normal map baking process. So, basically, for generating the block out or even high poly version I don't need to worry about connected parts?
Maybe it's a little far off for me to think about this, but of course that knowledge would be viable even now, to guide my learning process more effectively.

Do I get it right, that a sub-d cage is the same as the base model, just subdivided? Or is it like a proxy (like in Maya), that is like a smoothed version existant on another level at the same time as the original. Because as I'm doing it now, subdivided, i.e. turbosmoothed is not reverseable, that is destructive, right?
Although: Chamfering the edges for edge loops seemed to work fine, when I used quad-chamfer for the edges, which gave 2 edges around the original edge and by choice no actual rounding of the edge.

I don't want to overdo it with thanking, but I'm truly grateful for the time you already spent to help me out so elaborately. I'm looking forward to one day have gained enough knowledge to follow suit and help out those who are in need.

I have exported the mesh as an .obj, if you want to take a look.
http://www.mediafire.com/view/6k4i7x32y14b3i9/thenoob_mac10.obj

The grip has some strange shading issues.

I have also included the non-subdivided version of the buttstock, because of the problems with it's smoothed version.

Quick, squeezed in question: Why did you chose Modo over other packages? What do you think in terms of working in a commercial context, where as I guess, teams would want people proficient in the standard packages? Would they be likely to say: Alright, you know this package, gonna be childsplay to just use that knowledge in the software we use.?
• Offline / Send Message
interpolator
thenoob wrote: »
So, basically, for generating the block out or even high poly version I don't need to worry about connected parts?
Correct, for the highpoly you often have separate pieces, usually as the object is made in real life.
thenoob wrote: »
Do I get it right, that a sub-d cage is the same as the base model, just subdivided? Or is it like a proxy (like in Maya), that is like a smoothed version existant on another level at the same time as the original. Because as I'm doing it now, subdivided, i.e. turbosmoothed is not reverseable, that is destructive, right?

The typical workflow goes like this:

Create a junk blockout that's super basic and is just so you get the proportions of your model right before you really start.
Next the highpoly will be made
Once that's done the (non-subdivided) highpoly will be duplicated. All the edge loops will be removed and the mesh will be further optimised, then that is your lowpoly.
before exporting the highpoly you'll actually apply the subdivison (subd is just toggled on/off while you're working, not actually applied)
Then you unwrap, bake, texture, etc.

In the G56 tutorial by Ben Bolton he shows an alternative method (which I quite like and want to use more) that goes like:

Create a detailed blockout (sometimes called a mid-poly)
Duplicate that and add loops / details to make the highpoly
Duplicate the blockout again and optimise to make your lowpoly.

The benefit of this is that it skips the tedious task or reducing your highpoly to your lowpoly. A possible downside is that you end up committing to more geometry than you otherwise might in your highpoly.

If there's a chamfer that doesn't actually round the corner but just adds loops that's fine, but from my experience of modo's version of that it's only useful in super basic situations.
thenoob wrote: »
Quick, squeezed in question: Why did you chose Modo over other packages? What do you think in terms of working in a commercial context, where as I guess, teams would want people proficient in the standard packages? Would they be likely to say: Alright, you know this package, gonna be childsplay to just use that knowledge in the software we use.?
I tried max first. I tried modo later. I prefer modo. Some jobs will require a specific program for their pipeline but my understanding is that most (don't quote me on that) allow you to use any equivalent package. You'll see a lot of indie devs (Almost Human, Frictional Games) use modo because aside from being pretty badass it's also much more affordable than max. Max is still probably the safest option though, and you have the benefit of having a higher amount of supporting content (tutorials, scripts, plugins). Each has their pros and cons so definitely give different apps a go when you've got the basics down + free time.

As for your mesh, it's a pretty big mess. All part of the learning process though. I'd recommend trying something very simple to test your understanding. Try making the following mesh. If you find you can make the highpoly easily, then try to make the lowpoly (from the high by removing loops etc). Try making the mesh again with the Midpoly workflow if you like.

if you get stuck I'll upload an .obj and you can see how I did it.
• Offline / Send Message

I would like to see your .obj, please upload!

On the right is the edited low poly, so basically I could have saved my base low poly before adding the supporting edge rings and go with this, instead of re-doing it by working the high poly to low poly?

I think I'm still missing parts of the process, the typical workflow you described.
Do I get it right:
I make a junkmesh to block out.

Then a nice high poly, where a hole or added cylinder on top of a surface is actually welded to it etc, but individual parts may remain, like lower and upper receiver of a rifle.
These parts will also be worked with a subdivision-modifier or the like, to get cylinders round etc. which means added edges for support.

The non-subdivided part, that does not have supporting edges, but sharp ones and where the cylinders only have 8 sides for example, is used for low poly - indentations etc. might be removed because they will be added by the normal map. Also the low poly is one mesh - previously intersecting parts are reworked so they form one continuous shape by welding vertices.

One should work from high to low, because otherwise the contour might be off and the like, right? Low to high off course seems more natural, just like in drawing, one starts with blocking roughly and getting more precise with shapes over time, resulting in a detailed model and at the same time providing the low-poly version right at the start.

Oh, I did not think my model would be that bad. I hope you imported all as triangles instead of polygons like I exported, because that might account for it. Otherwise: What needs to change about it?

I'll definitely try Modo out at a time, but for now will concentrate on really getting those principles down. At least the change from Maya already felt great, Maya did not seem to want me make polymodels, it felt very clunky.
• Offline / Send Message
interpolator
thenoob wrote: »
On the right is the edited low poly, so basically I could have saved my base low poly before adding the supporting edge rings and go with this, instead of re-doing it by working the high poly to low poly?
Yep. The thing is, with more complicated meshes you'll be making adjustments all the time, so it's not always practical to go from blockout to both high and low. Unless you start with the 'detailed' blockout/midpoly working mesh. Generally people use the more linear blockout > high > low workflow.
thenoob wrote: »
I think I'm still missing parts of the process, the typical workflow you described.
Do I get it right:
I make a junkmesh to block out.

Then a nice high poly, where a hole or added cylinder on top of a surface is actually welded to it etc, but individual parts may remain, like lower and upper receiver of a rifle.
These parts will also be worked with a subdivision-modifier or the like, to get cylinders round etc. which means added edges for support.
Yep. Blocking things out (in the linear workflow) is mostly about getting the proportions right, so you don't end up halfway though a model only to realise you have to redo it because the barrel is half the size of the bullet or something.
thenoob wrote: »
Also the low poly is one mesh - previously intersecting parts are reworked so they form one continuous shape by welding vertices.

Not always  it can go either way. Generally yes though. You can have floating or de-attached pieces in the one mesh, but as that thread explains there are reasons for/against doing so.
thenoob wrote: »
Oh, I did not think my model would be that bad. I hope you imported all as triangles instead of polygons like I exported, because that might account for it. Otherwise: What needs to change about it?
It looks like you've applied subdivison on parts of the mesh that had bad topology which caused a lot of errors. You only collapse (not sure if that's the right max terminology for applying the subdivision) when you need the extra geometry or you're going to export the high. Working on the highpoly is all about manipulating the (relatively low amount) or geometry and previewing the results by toggling subdivision.

Here's my obj.

The main differences are:

Your supporting edges are much tighter, and thus the edges are much sharper. You'll find out later when it comes to baking a normal map you have to have much smoother edges than an object has in real-life, as the information has to translate to the normal map. You also have to exaggerate the smoothness further to avoid edges looking terribly aliased at a distance.

I also used double loops (see the gif I linked earlier  generally a good practice to preserve flatness of an area and uniformity of edge widths) and less geomtry on the inset hole.
• Offline / Send Message
Thanks for going through this twice with me, I think I got a better understanding now. I guess best is if I try to apply it and go from there.

I have looked at your .obj and those two supporting edges are something I'll keep in mind and try around with.
However, your mesh seems to be messed up by some importing-issue, have a look:

As you can see, the inward hole is missing. I looked into it and it seems that there are issues with the faces, all are duplicated somehow and some are covering up the hole.
Also, using MeshSmooth looks okay, while Turbosmooth, which I used for my model, yields an unsightly result.

Just to rule out an error on import, does the model look like this in Modo when you open it?

Because I cannot see those errors you are speaking of.

You referred to a sticky in post #6 which seems down. Have you got an alternative?

Also: Is this whole process of high/low-poly and normalmap-baking also important for movie/animation-production? My guess is they use a lot of actual high-poly models.

Oh, sorry about the terminology. Collapsing a stack just meant applying the subdivision.
To export the model as it is meant to look and in .obj, I of course had to collapse. That is why I included the low-poly version of the buttstock.
• Offline / Send Message
interpolator
Ah so yes there's some import problem going on with your mesh, the handle is all sorts of messed up. Did you export anything with turbo or meshsmooth applied?

I also forgot when exporting my mesh to delete the second item, which is why you're seeing duplicates (normally I use an export script that only exports what's visible, regular export exports everything. My bad! Here's the proper version.

Also fixed the link in post #6, was a bad link on my part.

And this is what I see when I first import your mesh. Have you tried importing the obj you exported to see what it looks like? My guess is you've exported the handle with turbosmooth activated and that's applied the operation (since .obj won't contain any max specific information like a modifier stack)
• Offline / Send Message
Okay, your proper version now is indeed proper. Meshsmooth gives the expected result without errors, while, just for the record, Turbosmooth still produces these strange shading issues at the edges. I will look into this, maybe there's something to learn.

Of course I imported the obj myself to check, but it did not give me those truly messed up results like you get to see in Modo.
However, I hope it was due to accidently not properly applying the modifiers like you said. I have now tried another way, please see if that changes anything for you:
Mac 10 OBJ
• Offline / Send Message
interpolator
Nah still looks the same. You should be exporting just the sub-d cage with no subdivision? Most likely a problem with import/export on one or both ends anyway.
• Offline / Send Message
Now I'm a little confused again.
I applied all modifiers (meshsmooth/turbosmooth) that generate subdivisions, so I get the final high-poly Mesh which I exported.
I guess I've not yet grasped the concept of the sub-d cage modeling, unless it's the same as having an On/Off-Switch for added subdivision (the supporting edge loops) however stay.
I'll go look into some more info about that and watch the other videos you recommended.

Here's the OBJ, all smoothing-modifiers removed instead of applied before exporting.
• Offline / Send Message
interpolator
Yeah that's better. What you're doing with sub-d is preparing for the subdivided mesh while managing a lower amount of geometry. Take for example the bent U metal bar that connects the body of the gun to the stock. That's currently highpoly. If you realise the bend needs to be longer or something like that, how will you change it? Delete the bend, redo the curve and attach the new bend to the older geometry? Seems fiddly. Redo the whole thing? Seems like a waste of time. Adjust the spline you create the shape from? Better — but that only works in simple instances like this. If it was a simple sub-d cage made from little geometry, making changes would be easy. Because you only have to move a few verts.

I'm not sure if you consider any of this finished, but basically it looks like most areas have no supporting loops/geometry to support the subdivison. But I suppose you were starting this with not much knowledge of the difference between high/low poly models. Now hopefully it's more obvious what you need to do to follow the high > low > bake workflow, and with the help of those tutorials you should be posting your first complete model on here in no time. Just remember to take things slow, start off with simple things until you have the whole process down, and then trying something challenging. Otherwise (imo) you'll end up wasting time on a bigger project that's doomed from the start — which can be a good learning experience, but if you can avoid the time-waste aspect all the better.
• Offline / Send Message
polycounter lvl 18
http://imgur.com/a/dEWXP/all

If you want to have a nice flow, you need to spend time watching wireframes of people who themselves have spent time watching successful others.

It's not something that is in vogue for me right now as i have no need to do it anymore, but have the habit of collecting images from the internet that display wireframed meshes and mimic the forms contained in them until mastered.
• Offline / Send Message
Thank you so much for all your elaboration and patience on this matter, which as I gather is one many newbies riddle the experienced with.
I have learned quite a bit and now have a clearer target to direct my learning process.

You are very right, starting simple, working one's way towards more complex shape sounds much more reasonable.

So, I'm looking forwards to posting complete models for critique soon.

Thanks also to peanut, that's a welcome reminder and hint.
Sign In or Register to comment.