Icon Quaternion Weighted Average


Icon BVHView


Icon Dead Blending Node in Unreal Engine


Icon Propagating Velocities through Animation Systems


Icon Cubic Interpolation of Quaternions


Icon Dead Blending


Icon Perfect Tracking with Springs


Icon Creating Looping Animations from Motion Capture


Icon My Favourite Things


Icon Inertialization Transition Cost


Icon Scalar Velocity


Icon Tags, Ranges and Masks


Icon Fitting Code Driven Displacement


Icon atoi and Trillions of Whales


Icon SuperTrack: Motion Tracking for Physically Simulated Characters using Supervised Learning


Icon Joint Limits


Icon Code vs Data Driven Displacement


Icon Exponential Map, Angle Axis, and Angular Velocity


Icon Encoding Events for Neural Networks


Icon Visualizing Rotation Spaces


Icon Spring-It-On: The Game Developer's Spring-Roll-Call


Icon Interviewing Advice from the Other Side of the Table


Icon Saguaro


Icon Learned Motion Matching


Icon Why Can't I Reproduce Their Results?


Icon Latinendian vs Arabendian


Icon Machine Learning, Kolmogorov Complexity, and Squishy Bunnies


Icon Subspace Neural Physics: Fast Data-Driven Interactive Simulation


Icon Software for Rent


Icon Naraleian Caterpillars


Icon The Scientific Method is a Virus


Icon Local Minima, Saddle Points, and Plateaus


Icon Robust Solving of Optical Motion Capture Data by Denoising


Icon Simple Concurrency in Python


Icon The Software Thief


Icon ASCII : A Love Letter


Icon My Neural Network isn't working! What should I do?


Icon Phase-Functioned Neural Networks for Character Control


Icon 17 Line Markov Chain


Icon 14 Character Random Number Generator


Icon Simple Two Joint IK


Icon Generating Icons with Pixel Sorting


Icon Neural Network Ambient Occlusion


Icon Three Short Stories about the East Coast Main Line


Icon The New Alphabet


Icon "The Color Munifni Exists"


Icon A Deep Learning Framework For Character Motion Synthesis and Editing


Icon The Halting Problem and The Moral Arbitrator


Icon The Witness


Icon Four Seasons Crisp Omelette


Icon At the Bottom of the Elevator


Icon Tracing Functions in Python


Icon Still Things and Moving Things


Icon water.cpp


Icon Making Poetry in Piet


Icon Learning Motion Manifolds with Convolutional Autoencoders


Icon Learning an Inverse Rig Mapping for Character Animation


Icon Infinity Doesn't Exist


Icon Polyconf


Icon Raleigh


Icon The Skagerrak


Icon Printing a Stack Trace with MinGW


Icon The Border Pines


Icon You could have invented Parser Combinators


Icon Ready for the Fight


Icon Earthbound


Icon Turing Drawings


Icon Lost Child Announcement


Icon Shelter


Icon Data Science, how hard can it be?


Icon Denki Furo


Icon In Defence of the Unitype


Icon Maya Velocity Node


Icon Sandy Denny


Icon What type of Machine is the C Preprocessor?


Icon Which AI is more human?


Icon Gone Home


Icon Thoughts on Japan


Icon Can Computers Think?


Icon Counting Sheep & Infinity


Icon How Nature Builds Computers


Icon Painkillers


Icon Correct Box Sphere Intersection


Icon Avoiding Shader Conditionals


Icon Writing Portable OpenGL


Icon The Only Cable Car in Ireland


Icon Is the C Preprocessor Turing Complete?


Icon The aesthetics of code


Icon Issues with SDL on iOS and Android


Icon How I learned to stop worrying and love statistics


Icon PyMark


Icon AutoC Tools


Icon Scripting xNormal with Python


Icon Six Myths About Ray Tracing


Icon The Web Giants Will Fall


Icon PyAutoC


Icon The Pirate Song


Icon Dear Esther


Icon Unsharp Anti Aliasing


Icon The First Boy


Icon Parallel programming isn't hard, optimisation is.


Icon Skyrim


Icon Recognizing a language is solving a problem


Icon Could an animal learn to program?




Icon Pure Depth SSAO


Icon Synchronized in Python


Icon 3d Printing


Icon Real Time Graphics is Virtual Reality


Icon Painting Style Renderer


Icon A very hard problem


Icon Indie Development vs Modding


Icon Corange


Icon 3ds Max PLY Exporter


Icon A Case for the Technical Artist


Icon Enums


Icon Scorpions have won evolution


Icon Dirt and Ashes


Icon Lazy Python


Icon Subdivision Modelling


Icon The Owl


Icon Mouse Traps


Icon Updated Art Reel


Icon Tech Reel


Icon Graphics Aren't the Enemy


Icon On Being A Games Artist


Icon The Bluebird


Icon Everything2


Icon Duck Engine


Icon Boarding Preview


Icon Sailing Preview


Icon Exodus Village Flyover


Icon Art Reel




Icon One Cat Just Leads To Another

Subdivision Modelling

Created on March 31, 2011, 3:17 p.m.


Subdivision modelling is a technique of digital 3d modelling used to create clean models with scalable detail that look good when rendered. It is used to some degree in almost all industries that employ digital artists. Saying this, it is often at the discretion of the artist or the tool, as to what modelling technique they choose to use. Other popular techniques are per-poly modelling, nurbs modelling and digital sculpting.

The technique and subsequent art of subdivision modelling arose more or less naturally due to several aspects or phenomena in how digital art is typically rendered. The main two examples of this being the default method by which vertex normals are calculated and the way in which Catmull–Clark subdivision (after which the technique is named) works.


An example of a subdivision model


Vertex Normals

A vertex is a point in space where various lines (or edges) meet. They can be thought of as the corners of geometric shapes. When a computer renders a shape on the screen there are two options. Either it can render each polygon (or face) of this shape as a flat surface and do lighting calculations based of that, or it can try to render some smoothed version of the same shape. This second option is often what we want, and this is where vertex normals are used.

If, instead of looking at face normals (the direction the face is pointing), the renderer looks at vertex normals (the direction the corner is pointing) then it can interpolate (a kind of averaging) this direction across the triangular face it is rendering, giving it something of a smooth look. In fact, for any triangle, graphics cards are specially designed so as to be able to do this interpolation the normals from the three vertices at each corner, very fast. This is what happens in all 3d computer graphics, from Lord of the Rings to Quake II.

But, before we can do this interpolation, we have to work out the actual vertex normals to use. To truly find the direction a vertex is pointing is impossible (it has no surface, so has no normal), but what we usually do is simply average out the face normals for all of the faces attached to this vertex - and use this as an approximation for the normal.

This allows us to render smooth surfaces using angular geometry (and a fixed number of polygons), but it does come at a cost. In many cases it does not quite work as expected, and can lead to visual artefacts or sections of the lighting that look weird. These arise from issues with the approximation of vertex normals, and also with the interpolation calculations across triangles. But, with a good mesh, these artefacts can be minimized or even overcome, and this is where subdivision modelling comes in.


Some Terminology

In computer graphics there are new terms for almost everything. I've probably already thrown some new ones at you which I'll revise here, but once you get to grips with these, everything becomes a lot easier to explain. The reason that some of these things have names will also become apparent later.

  • Vertex - A point in space where edges meet, the corner of a shape.
  • Edge - A connection between two vertices.
  • Polygon - A face of a 3d shape, connecting several vertices via edges.
  • Mesh - A collection of polygons, a shape in 3d space. Also referred to as a model or a body.
  • Triangle - A polygon with exactly three vertices.
  • Quad - A polygon with exactly four vertices.
  • N-Gon - A polygon with five or more vertices.
  • Pole - A vertex with three edges coming out of it.
  • N-Pole - A vertex with five or more edges coming out of it.


What makes a good mesh and why?

Asking what makes a good mesh is almost like asking what makes a good painting. Like most things in life, there is no one easy answer, and in truth, what good modelling truly requires is practise. When you get good at subdivision you can feel what makes a good mesh, and it will show when you render it. Still, there are certainly some guidelines you can follow that will minimize visual artefacts and make your life a whole lot easier. Here are some of the main ones. (It is worth noting at this point that these guidelines also apply for almost all mesh creation, and are in no way specific to subdivision modelling.)

Avoid Triangles and Poles

Triangles and poles can be seen as two sides of the same coin. They are often the cause of weird smoothing artefacts and so should be avoided when they can. Still, it is simply impossible to avoid them completely; any mesh will require them some number of them. Often they are placed with an attempt to minimize their effect. There are two main ways to do this, either by placing them on a surface which is relatively flat, or by "hiding" them in tight closed off areas of the mesh. In human characters this is often done in armpits, groin, joints, or actually anywhere with natural creases in the surface.



Poles and triangles "hidden" on the flat part of the spanner

Avoid N-Gons and N-Poles

This is really fairly similar to the above point, and they are hidden using the same techniques. Typically people try to avoid these more than triangles or poles. This is mainly due to the fact that they are harder to model around and the fact that the higher the number of edges going into the pole, or the number of sides of the face, the weirder the smoothing issues become.

Try to construct your mesh mainly of quads

This point often seems a little bit misguiding to newcomers. For example, if you have some knowledge about graphics you will know that models are only ever rendered using triangles anyway - all quads are turned into triangles before rendering, usually by connecting an edge between the two nearest vertices. So in this way, trying to construct your mesh mainly of quads might seem pretty redundant and silly. But in truth, building your mesh with quads in mind is the easiest way to avoid doing all of the other bad things that can cause visual artefacts.

Not only this, but there are many, many reasons why dealing with quad meshes are easier than other messy and mixed up meshes. They are easier to animate, easier to rig and easier with just about every other task you might perform on them.

A video showing solid examples of subdivision artifacts


Space your vertices evenly

One mistaken beginners often make is, in a process of achieving an all-quad mesh, cram in a load of redundant edges, vertices and details. This isn't needed, and it wont look good when it comes to render time either. What happens when you have a mesh full of oblongs rather than squares, is you get a load of long thin triangles at render time. These will give issues when it comes to the interpolation and generally will look bad. Bunched too thin they will construct what looks like hard seams on the mesh, which in many cases in undesirable.

Also an idea is to space your vertices so that the density increased in areas with lots of detail. This will give your mesh extra definition where it is needed and wont waste polygons elsewhere.


A well spaced head

Focus on body, form and flow

Another beginner mistake is to get hung up on making an all quad mesh, and in the process end up with something that doesn't really fit the object being modelled. When modelling you should imagine the edges you place following the contours of the object. If you're modelling something organic such as a human body, the edges should follow the flow of the muscles, bulges, curves and crinkles. This will help with animation, manipulation and tweaking of your mesh.

Form over quad use

It is also worth stating that this point is by far the most important. While the others guidelines reduce some of the artefacts, they are generally regarded as an aesthetic choice, and will ease building of the model rather than fix its final look.

Start slowly, have fun

Subdivision modelling is an advanced technique. It isn't the kind of thing that can be mastered in one session. If you are feeling like you're fighting a battle against subdivision modelling then you are doing it wrong. Start off small, have fun, and be proud of what you create! It is far easier to learn subdivision modelling when you feel like you are enjoying yourself.


So where does Subdivision come into it?

Subdivision is a process that will smooth a mesh, adding more polygons and vertices while maintaining form. A quad will be smoothed into four quads which continue to follow the contour of the mesh. This process is used in many things from rendering to digital sculpting. It's essentially what allows you to build meshes with a manageable number of polygons, before using subdivision to make it as smooth as is visually needed.


Boots Mesh


Boots Smoothed

Subdivision, much like calculation of vertex normals, is not perfect. You get artefacts in many of the same ways. Also, any artefacts from vertex normals in the original mesh (at one subdivision level), will remain once subdivided (at the next subdivision level). There is a beautiful symmetry in how this works. On subdivision, Triangles become Poles and N-Gons become N-Poles. The opposite is also true. Poles become Triangles and N-Poles become N-Gons. Because of this, quads are the only thing that subdivides "perfectly", and so having quads in your mesh at all the key locations, which define the form and smoothness of the surface, is essential.


A video explaining how subdivision works.

Subdivision Modelling as a technique

All the things I've said above can be applied to almost any kind of modelling technique. They may seem about rendering in general. But subdivision modelling can really be seen as the process of modelling with all of these ideas at the front of your mind. It is the idea that you engage with these rules and model accordingly. On subdivision forums you won't see the end of talk about Poles, N-Gons and the rest. Advocates of other techniques tend to just get on with it.

The second part of subdivision modelling as a technique are the tools. Often modelling programs classed as "subdivision modellers" will give you lots of advanced tools to help with subdivision modelling. They often allow you to switch quickly between subdivision levels, allowing you to preview your mesh and see how it looks once smoothed.

They also use the concept of "edge loops" and "edge rings", which are sets of edges either connected in a line (for loops) or in parallel (for rings). There tends to be some easy way to select, add, delete and modify these. These two things are an important concept in subdivision modelling, as they are ultimately what define the flow and form of your model.

Finally, in subdivision modelling, it is often common to have a focus on defining form and body first, before subdividing and using the extra polygons to add more detail and depth. This is somewhat similar to the method for conventional painting, whereby large brush strokes are used initially, long before any real detail is added. Like in conventional painting, this has much the same advantages, and often results in better perception of body, form and proportions.

Box modelling

Box Modelling


Where do I start?

The good resources on Sub-Division modelling has dwindled, but a good list can be found here:

You Start Here

It will tell you everything I have told you and more.

Though really, if you are new to 3d modelling in general, by far the best course of action is to simply download a modelling package and have some fun. My favourite (and one of the easiest to learn) is Wings3d. It is free, lightweight and open source - so if you fancy messing around with your newly acquired knowledge, download that and take it for a spin. Happy modelling!

github twitter rss