AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |
Back to Blog
Blacksmith3d subdivision surfaces 20171/30/2024 ![]() Now let’s turn off the wireframe and see how it’s getting lit. Now see what happens when the boxes get subdivided:ĭifferent, yeah? Note the way the edge loops have changed from being roughly equidistant on the left box to a more complicated, pinched-and-stretched arrangement on the right. The left one is all quads the right one has the same overall shape, but one corner is made of triangles instead of quads. For an example, take a look at these two boxes: ![]() This was also my first project using Tessellation Shaders which were surprisingly convenient to use for this project.For 3D modeling, the usual reason to prefer quads is that subdivision surface algorithms work better with them-if your mesh is getting subdivided, triangles can cause problems in the curvature of the resulting surface. I also learned a lot on small but significant optimizations, often relying on equivalent matrix operations. Since this was the first time I used Vulkan, I learned many details and considerations that must be taken into account when implementing explicit graphics program. I also how important describing basic examples and relevant convenient can make significant differences for reproducibility. This made the techniques more reusable but much harder to implement, highlighting the importance of numbering schemes and good data structures to represent the configuration of a face. This project was also particular in that it abstracted away a lot of the concepts of subdivision surfaces by applying subdivisions on abstracted face configurations rather than on actual mesh data. I also learned various methods to handle corner cases like open meshes. It is a very nice scheme which happens to be simple yet have nice mathematical properties at the same time. The main thing I learned in this project is subdivision surfaces, more specifically Catmull-Clark Subdivision. This technique results in stencils similar to: For example, leading to 30% increase in framerate when rendering the model "bigguy". Sharing control points can lead to requiring significantly less memory (and bandwidth). These control points correspond to 4 Bi-Cubic B-Spline patches which are exactly 1/4 of the original patch. Indeed, one level of Catmull-Clark Subdivision generates 25 control points from the 16 original control points of a single Bi-Cubic B-Spline patches. Note that in the case of irregular faces with a single extraordinary vertex, all other nodes can actually share several control points. That is, the control points are given in the same relative order, the topology is equivalent, the vertices have the same valence, etc. Indeed, to reuse the same weights, faces do not need to share any control points, they simply need to have the same configuration. ![]() The result can be seen here, where faces sharing the same color uses the same stencils. is the cornerstone of this subdivision scheme. The data structure representing the configuration, valence, topology, etc. ![]() The difficulty here is that, while most of the subdivision itself uses the 4x4 Matrix from of Catmull-Clark, irregular faces do not align well with 4x4 Matrices and therefore vertices must be ordered so that which weight multiplies which vertex to calculate a control point can be found easily from the configuration data of the face. The surface can be evaluated simply by applying these stencils to the control points of the face (i.e., multiplying each control point by the corresponding weights) and then doing Bi-Cubic B-Spline evaluation. These subdivision plans can be stored in a Quadtree, where leaf nodes (grey and blue in the picture) contains "Stencils": dense arrays of weights on the original control points.
0 Comments
Read More
Leave a Reply. |