Icon Animation Blend Spaces without Triangulation

 

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 RAGE

 

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 LOL I DREW THIS DRAGON

 

Icon One Cat Just Leads To Another

Subdivision Modelling

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

History

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.

 

Spanner

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