Hi, my name is Ivan, and today I will try to shed a little light on the subject of subdivision surfaces. This is my attempt to provide a general beginner`s tutorial, that might help all the polygon-based software users out there improve the quality of their meshes. I will try to keep this as general as possible, because the same principles apply to almost all the software there is today, but just in case, if anyone was interested, the pictures used in this tutorial were made in Modo 501 from Luxology, which is my weapon of choice when it comes to 3D.
What if I told you, that the items from the the picture above are one and the same object, with only very small changes? They were actually cubes in the beginning, the only difference is, that Item 2 is a subdivision surface and Item 3 is a subdivided mesh. What subdividing a mesh means, is adding segments to the existing geometry and at the same time making the whole surface smoother. Every level of subdivision divides an existing quad (4-sided polygon) into 4 new polygons, therefore if our cube consisted of 6 polygons to begin with, the first subdivision will turn it into a mesh with 24 polygons, the second subdivision will multiply the polycount by 4, that gives us 96 polygons, and after 3 subdivisions, our object will consist of 384 polygons and look a lot more spherical then in the begining. The subdivision process can be seen in the picture below:
Now is the right time to ask, what is so special about this subdivision surfaces (item 2 in the first picture). Items 2 and 3 look the same, and have the same polygon count. Wouldn`t it be more effective to just use heavily segmented objects, or freeze the object after it has been subdivided? Well, no… it wouldn`t.
You see, the basic part of every mesh is a vertex, a point in space. It is vertexes, that define edges and polygons, and therefore every vertex has to carry a lot of data, starting with its position in space, through UV coordinates, which can include data for several UV maps, to special data like vertex maps, morph maps or tags. Once a mesh is segmented, it consists of lots and lots of vertexes, and every single vertex has to carry all of this information. To show, how much data is added with every subdivision, I prepared another picture. As you can see below, the square was subdivided one time, adding 5 new vertexes (black dots) to the already existing 4 (orange dots), this means a massive increase in data.
Luckily, there is a special kind of mesh (a static mesh in Modo for example), that behaves a little like a proxy object, it gets the data needed for its editability deleted, which makes it uneditable, but much more effective in RAM consumption and other operations, like moving it or rotating the viewport.
When applying a subdivision modifier to your mesh, it takes the basemesh as a source for a new mesh, that is not directly editable, therefore needs much less data to represent it. This new mesh is called a subdivision surface. You are free to edit the subdivision level (the segmentation of the mesh) and at any time, you can return to the basemesh and edit it, which wil instantly affect the subdivision surface.
I did a few test renderings, to see how much data each of the objects in the first picture needs to represent it. Item 2, the subdivision surface, consists of 3072 polygons and consumes 279 kB of RAM during rendertime. Item 3 has a polycount of 3072 polygons as well and is a subdivided mesh, which means, every single vertex has to carry all the necessary information, therefore it consumed 493 kB of Ram at rendertime. You see, these identical meshes consume very different amounts of resources, only due to their surface representation.
Not only are subdivision surfaces more effective in resource consumption, they are even easier to edit. Just think about it, is it easier to move one vertex or edge and get a clean and smooth shape, or play around with selections on a dense mesh and once you finally have the right selection, you have to start playing around with falloffs or soft selection tools? I find the first way much faster, easier and cleaner. Just see for yourself:
The first image is the polygon cage of a lions head (originally part of a hood ornament for a 1936 peugeot 402 i`m modelling at the time). It may not look great in its unsubdivided form, but once it`s changed into a subdivision surface, as shown on the second picture on the left, it starts to shape up a bit. On the right is the dense segmented mesh, which has the exact same number of polygons and will look exactly the same in a render, but takes up approximately twice as much resources, and just imagine the horror of trying to change a detail about the polygon-heavy segmented mesh!
Still not convinced about the advantages of subdivision surfaces? Would an automated subdivision level convince you? Adaptive subdivision is a common tool today. As the name already says, it is able to adapt its subdivision level to the needs of your render. The system behind this is really easy: you choose, how long an edge can be in pixels, after this, the render engine evaluates the edges of every object separately, and if it finds an edge, that takes up more pixels than the value you provided, it increases the objects subdivision level by one until all edges are shorter then your pixel value. This system makes sure, that every object in your render appears to be smooth, but doesn`t take up any more resources then necessary.
As a little bonus, I added the model of the lion`s head with textures, so you can render an image like this one, if you like:
The model may be downloaded as the native .lxo file for modo users, or as an .obj file, both the polygon cage, as a highpoly version for users, whose software doesn`t have the subdivision surface technology implemented yet.
That is all for today. I hope you liked this little introduction into subdivision surfaces and with luck, we will meet again during another tutorial.
Powered by Facebook Comments