G0 ; G1 ; G2 ???

 From: Schbeurd 9 Jan 2007  (1 of 14)
 Hi, Following the world famous "spiral thread" (LOL), I think it's time to start another topic where the "technical minded" guys will explain in (very) simple words what is that G0; G1; G2 curvature (?) you sometimes refer to. ;-) As the terms appear in some discussions and also in the application (the blend tool being an example), an explanation of what it is would be welcome. You know, something easy to understand for a complete beginner or someone coming from poly modeling software. I must say that I'm a bit clueless... Thx

 From: Michael Gibson 9 Jan 2007  (2 of 14)
 290.2 In reply to 290.1 Hi Bernard, I will try to break it down here. The "G" in those terms refers to a math concept called "Geometric Continuity", which is a way of describing how two smooth curves meet up with one another. G0 refers to "position continuity" which is a fancy way of saying whether two curves touch each other. Here is an example - the curves on the left are not G0 with each other because they do not touch. The 2 curves on the right have G0 continuity. Another property of a curve is the tangent of a curve at any point. G1 means "tangent continuity" - that is that the 2 curves share the same tangent direction at their ends (in addition to being G0). The left curves here are only G0, the right curves have G1 continuity: Ok, so that's all pretty straightforward up to that point. The next bit is a little bit less familiar. G0 means touching and G1 means shared tangent. So G1 means that the curves are smooth with regard to each other, right? Well, yes they are smooth but only to a certain amount. There are different qualities of a curve beyond just the tangent, there is also a quality called "curvature". Each point of a curve not only has a tangent direction, it also has a curvature value which is what radius of circle the curve resembles at that one point. So for instance when the curve is going around a tight bend, it resembles a small circle at that point. When a curve is broader and more shallow, it resembles a much larger radius circle at those points, all the way to having infinite curvature for a line segment. When 2 curves share the same curvature at a point, then that is G2 continuity (which includes G1 and G0 continuity as well). Here is kind of the classic example of G1 but not G2 continuity: That is a circular arc on the left and a line on the right. They share the same tangent so they are G1. But the curvature is abruptly changed between them - the arc has a curvature of the circle that it is a part of, and the line has infinite curvature. This abrupt change has some consequences, most notably reflections and specular highlights will not cross in a smooth manner over this seam, you can see this in the real world on filleted parts, where the specular highlights will sort of bunch up near the edge of a fillet. When curvature is continuous between 2 pieces, then reflections and specular highlights will continue unbroken across those seams. I have tried to minimize the use of these terms in MoI, but it is a bit difficult not to talk about them in blending. The definition of G0, G1, G2, for surfaces is analagous to how it works for curves. Please let me know if you would like additional information about any part of this. - Michael Attachments:

 From: jbshorty 9 Jan 2007  (3 of 14)
 290.3 In reply to 290.1 it's pretty simple (parts of this were "borrowed" from Rhino glossary) G0 = ends touch, but share no tangency G1 = ends are tangent (imagine a ball sitting on the floor, the tangent point is where they touch) G2 = Curvature continuous G3 = Curvature continuous with a constant rate of change G4 = Curvature continuous and constant rate of change of the rate of change jonah

 From: Michael Gibson 10 Jan 2007  (4 of 14)
 290.4 In reply to 290.2 One other thing I forgot to mention is that the traditional-style 2D Bezier illustration (like Adobe Illustrator, Corel Draw, etc..) makes a string of Bezier curves that are only G1 with each other, not G2. This is one reason why MoI doesn't use that type of "Bezier handle" approach for drawing - you actually don't get proper smooth curves with that method. For 2D outlines this is not really so terrible (although with a discerning eye you can see the discontinuities often times even there), but once you start building 3D surfaces and trying to render them with different surface qualities, it gets more noticeable. - Michael

 From: Schbeurd 14 Jan 2007  (5 of 14)
 Hi Michael and Jonah, Thanks for the info. It's quite clear now (apart the terms "rate of change" in the explanation - from Rhino - for G3 and G4 which remain "obscure"). The comments on Bezier curves here and in another thread are very useful too. Now, just for a better understanding of NURBS in general... Very often I see mention of a degree for NURBS. Could you explain what that is ? Is there a relation between the "G value" of a curve and its degree or is this totally different stuff ? No need for a deep technical explanation there but I think understanding what's "behing the engine" always permits a better understanding of the software and generally speaking why sometimes the results are not exactly what the user expected. Thx

 From: tyglik 14 Jan 2007  (6 of 14)
 290.6 In reply to 290.5 Hi Bernard, I have been browsing a integrityware and npowersoftware websites for one hours. There is an astonishing gallery and video tutorial section about NURBS modeling. Considering that it might be a MoI's future, because the geometric kernel is the same.... whew... The tutorial can be looked through this and this. One of them is about G1,G2,G3 continuity. Don't remember to switch on your speakers! Petr

 From: Michael Gibson 14 Jan 2007  (7 of 14)

 From: Michael Gibson 14 Jan 2007  (8 of 14)
 290.8 In reply to 290.5 > Very often I see mention of a degree for NURBS. Could you explain what that is ? This one is a bit more difficult to explain. Basically, the math behind NURBS curves uses a type of polynomial equation to blend between control points. The way curves work, a point on the curve is calculated by blending together the values of a set of control points. So for example the curve above is what is called a degree 2 or "quadratic" bezier curve. Every point on this curve is calculated by a blending equation that takes in all 3 points as part of the equation and produces a point on the curve. But the blending is continuously shifting as you slide along the curve - at the very beginning of the curve the second and third points are contributing 0 (this is why the curve touches the first point), but as you move towards the middle of the curve, the blending is more of an average of all 3 points, then shifting to finally only the 3rd point at the end. Anyway, I mention this blending-together of points because the degree of a curve has to do with how many points are used to calculate one section of the curve. A degree 1 curve (linear) blends together 2 points. A degree 2 curve (quadratic) blends together 3 points. A degree 3 curve (cubic) blends together 4 points. etc... That's how bezier equations work. NURBS are similar, except NURBS provides a way to have a curve with more than just degree+1 points in it. Your curve is still made up of different sections, but each shares an overlapping set of points with each other. This sharing provides smoothness between each section. Here is a cubic (degree 3) NURBS curve with 6 control points. This makes a curve that actually has 3 internal segments to it - every 4 points defines a segment which I have illustrated here: So a higher degree means that more points are used to make a single polynomial segment of the curve. > Is there a relation between the "G value" of a curve and its degree or is this > totally different stuff ? There is a relation because the degree determines how many internal segments the curve will have, and there is a G value where segments meet (just as there is where 2 separate curves meet). Also the degree of the curve can limit the maximum G value - for instance the common cubic curve will only have inherently G2 smoothness, but if you go to a higher degree curve it means that there are a larger number of points shared in common between different sections and this means that there is a higher amount of built-in continuity between the segments (the segments are often referred to as "spans" of a curve). There are some other effects of high degree - the greater averaging makes a kind of slightly more melted effect. By which I mean that a higher degree curve kind of gradually melts a bit farther and farther away from its control points as you go to higher and higher degree. Some specialized applications want to reduce the number of internal spans to a curve, which is one effect of increasing the degree. I have thought a little bit about maybe changing the curve tool to draw curves of degree 5 instead of degree 3 as it currently does - the slightly-more-melty effect of degree 5 is kind of nice. It's not too practical to go too high in degree since a lot of processes go through loops of work depending on the degree, so there is also an increased calculation time issue with very high degree - that's why everything doesn't just go up to degree 100 or something like that. - Michael Attachments:

 From: Schbeurd 19 Jan 2007  (9 of 14)
 @ Michael : Thanks for the explanations. Limpid as usual and very interesting ! @ Petr : There seems to be a lot of informations there. Thanks for posting the links.

 From: dej (DEJULE) 1 May 2009  (10 of 14)
 Is it important to build surfaces with single span curves?..because it can introduce knots or added isoparms? Is this important when creating surface that are attached together to maintain good curvature?

 From: dej (DEJULE) 1 May 2009  (11 of 14)
 290.11 In reply to 290.10 What was confusing to me using Alias..was if I ensure all my curves g1...why do I have to set, through another option box that the surfaces are g1 also. Shouldn't this be automatic or simplified? Maybe Moi could be more intuitive that way.