Something I've been wondering about for a while, which sorry doesn't really have to do with this lecture...every tutorial/lesson/etc. I've seen about 3D modeling says the top priority is keeping all the faces quads, which I'm guessing is to make subdivision easier. But a lot of the stuff we've been going over is triangle focused, so I'm just wondering about the disconnect. Do all 3D models get triangulated eventually anyway, and the quad rule is just for convenience while working on it? Or is there another reason?

keenan

@merc Quads are often used for modeling because every smooth surface has two orthogonal principal curvature directions, i.e., directions along which the surface bends the most and the least. For instance, your arm looks somewhat cylindrical, and is naturally described by a grid going "along" your arm and "around" your arm. However, when the modeling is finished and you now want to execute some algorithm, it may work a lot better to dice it up into triangles. For instance, we talked about how it's much easier to build rasterization hardware around a single primitive---the triangle---since everything can be reduced to this case, and all computations are simple and can be highly streamlined. Likewise in ray tracing there are some serious problems with working directly with quads: for instance, suppose not all four vertices are in a common plane. Where and how does a given ray intersect this nonplanar quad? Many algorithms, far and beyond ray tracing, also have trouble with nonplanar quads; and in general dealing with the extra complexity and generality of polygon meshes has little benefit when you could just dice up everything into triangles. Perhaps the best of all worlds is to first do a few rounds of Catmull-Clark subdivision to get a finer quad mesh, then dice these quads up into triangles before doing things like rasterization, ray tracing, or other algorithms. In fact, this is exactly the approach taken by Pixar in their RenderMan renderer which is (or was?) built around the REYES micropolygon rendering algorithm.

Something I've been wondering about for a while, which sorry doesn't really have to do with this lecture...every tutorial/lesson/etc. I've seen about 3D modeling says the top priority is keeping all the faces quads, which I'm guessing is to make subdivision easier. But a lot of the stuff we've been going over is triangle focused, so I'm just wondering about the disconnect. Do all 3D models get triangulated eventually anyway, and the quad rule is just for convenience while working on it? Or is there another reason?

@merc Quads are often used for modeling because every smooth surface has two orthogonal principal curvature directions, i.e., directions along which the surface bends the most and the least. For instance, your arm looks somewhat cylindrical, and is naturally described by a grid going "along" your arm and "around" your arm. However, when the modeling is finished and you now want to execute some algorithm, it may work a lot better to dice it up into triangles. For instance, we talked about how it's much easier to build rasterization hardware around a single primitive---the triangle---since everything can be reduced to this case, and all computations are simple and can be highly streamlined. Likewise in ray tracing there are some serious problems with working directly with quads: for instance, suppose not all four vertices are in a common plane. Where and how does a given ray intersect this nonplanar quad? Many algorithms, far and beyond ray tracing, also have trouble with nonplanar quads; and in general dealing with the extra complexity and generality of polygon meshes has little benefit when you could just dice up everything into triangles. Perhaps the best of all worlds is to first do a few rounds of Catmull-Clark subdivision to get a finer quad mesh, then dice these quads up into triangles before doing things like rasterization, ray tracing, or other algorithms. In fact, this is exactly the approach taken by Pixar in their RenderMan renderer which is (or was?) built around the REYES micropolygon rendering algorithm.