Advanced Modeling with T-Splines Webinar – Follow Up Q&A
On an Ezone CAD/CAM forum thread I started, ptxman asked a few follow up questions about some of the concepts in the April 26th Advanced Modeling with T-Splines webinar. He asks:
I didnt quite get your ‘before & after’ airfoil comparison. After the fin & stab were extruded & the funky fillet union developed, you then made section planes at various parts of the fin & stab. Then you compared foils at these sections to the original & it was within 5-thou, 1-thou etc.
I would have thought these outboard section surface areas would be ‘frozen’ to your foil curves anyway, outside the influence of filleting distortion? ie the only deviation to original foil curves would be confined to the inboard junction areas where you thinned the iso-thingy’s (and there were no section planes through). So what is it really comparing? Within TS, is it possible to see kind of a wave effect change way out in the surface panel based on modifications near the root?
Put another way in the classic clunker cad method: I make a wing panel, a fuse & then develop some fillet between them (it takes me 2 months for teh last bit but thats besides the point ). I would expect funky shape issues within the fillet area, but I would have considered the original wing panel to be locked down, kind of sacred territory. See what I mean? Is TS different in this regard?
This is a good question because it highlights the fundamental difference between T-Splines and all NURBS modeling packages, and why understanding knots is crucial to maintaining accuracy in T-Splines. All T-Splines surfaces are degree 3 surfaces, meaning that if you move any control point, it exhibits some influence up to three points away, not included the moved point. Knowing this, it’s really easy to understand why ptxman would think that what happens in the region of the blend between the vertical and horizontal surfaces would not affect the accuracy of the outer sections of the surface. However, what I showed with the “bad topology” t-tail was that this was not the case. If you download the file from the webcast, and look at the model on the layer T-Tail BAD under T-Tail, take a look at the isocurve I have highlighted here:
Notice that it is happening all the way out at the edge of the span, not just in the area of the blend. The cause of this is bad topology, which is creating uneven knot values around the airfoil. Let me show you why this is. The knot values along the long edges in the area of the blend are equal to 1, I’ve labeled them with dots here:
There are two important rules to know about knot values. The first is that when you have a standard “non thinned” topology – just imagine an array of rectangles, the knot values of each edge MUST be equal to the knot value of the edge across from it. The second rule is that T-Splines requires that the edges where the t-points are, where we start our blend between our flying surfaces, those edges must SUM to the value of the edge across from it. So, the knot values along the chordwise stations of the airfoil would look like this:
Do you see how the first two edges have a knot value of 0.5 and the next three have a value of 0.33? Okay, so we can see how this is caused by bad topology, having three t-points in one section, and two in the other. The higher knot value of the first two edges is pushing the next three edges back a bit, which means that our knots are affecting our airfoil shape. So to answer your question of why this problem persists out to the rest of the span, we have to go back to the simple rule that the knot values must be equal to the edge across from them. Those un-even knot values of 0.5 and 0.33 – they get propagated all the way out to the tip of the span!
This goes back to what I said during the webcast, that the key to maintaining accuracy in your T-Spline surfaces is to indirectly manipulate the knot values in your models. Since there is no way of assigning a knot value to an edge, we have to do it through proper topology. tsMakeUniform is crucial to getting nice smooth surfaces in the areas around star points, but it’s a shotgun approach so you have to understand what it will do to your knot values. As a counterpoint, here is what the knot values look like on the “Step 8” version of the tail from the webinar:
If you look at the model, you will find that every single edge on the airfoils has the same exact value – 0.25. It is the topology that I have used which accomplishes this. So again, the key to maintaining accuracy in your T-Spline surfaces is to indirectly manipulate your knot values through the use of proper topology.
ptxman asked a second question which was about my cosine spacing trick to drawing airfoils, which I glossed over in the webcast, but go into great detail here on my blog. He writes:
Regarding the cosine half division plugin, Ive attached your blog pic analog. So, when the method is applied to an airfoil curve, is the (my red sketched) arrow showing the nose-to-tail orientation as applied to your semi-circle analog? Is the x-axis chord reference line first divided up into cosine based spacing & then vertically extended to intercept the foil curve? Or does the cosine method divide along the foil curve itself & you are just demonstrating how the resultant x-axis intercepts would look?
For a typical semi-sym (racing airfoil) how would you go about subdivision so as to preserve the unique properties of the upper & lower curves which may have reflex, camber etc? ie their deviation is related but not really mirroring each other in terms of where the deviation occurs.
The pic he refers to above is this:
and then, in a follow up post:
Related to the cosine method, is it a ‘one-way’ density distribution that basically subdivides more heavily on one side & then decays off towards the other? Where Im going with this is: for a typical semi-sym (racing airfoil) the upper & lower curve deviation are not necessarily related or mirroring one another as in your Naca sym example due to reflex & camber. So I would expect the baseline mapped deviation curve to flare up again near the TE vs showing kind of muted & non-eventful on the typical ‘near straight’ Naca. Take this racing foil for example, the funky TE kick-up stuff you want to get right also occurs near the TE. So one would want tighter datapoint cluster here like the LE nose area, no?
The example given was an MH 17 airfoil, which looks like this:
Tackling the first part of those questions. Yes, the idea in general is to have more points at the leading edge where they are needed, and fewer at the trailing edge, where, in general, they are not needed. The picture I used to demonstrate this was mostly to introduce those who had not heard of cosine spacing to the general concept. It is not to imply that the CosSpacing plugin divides up the chord of the line and then projects those divisions – no, the CosSpacing plugin divides the curve directly along its’ length.
Let’s go through cosine spacing the MH 17 airfoil and see how my method works. ptxman’s concern is that there will not be enough point density at the tail of the airfoil to adequately describe the cusped region. I have taken the MH 17 airfoil out of Profili and imported it into Rhino. My chord length is 36″, and in Profili I gave it a non zero trailing edge thickness of 0.01″ I’ve moved that input file to a layer called Reference Airfoil Polyline and then deleted all other layers.
Now I copy it onto another layer, this one called “Reference Airfoil InterpCrv,” delete the tiny straight line segment at the trailing edge, and then use Curve->Free-form->Fit to Polyline to make an InterpCrv version of the airfoil. Then I split it into a top and bottom half, right where the chord line connects to the leading edge. Now we’re ready to divide up this airfoil by cosine spacing. How many segments? Well, since this is a wing airfoil, I like to use 32 segments on each half. For tailplanes I use 16. This really all depends on how big your actual part will be, and what kind of error you’re willing to accept. It’s also a bit of trial and error. So, with 32 cosine spaced segments on both the top and bottom, it looks like this:
ptxman’s concern is that there will not be enough points at the trailing edge if we use half cosine spacing, as I have done here. However, looking at the points overlaid upon the “spec” airfoil, I suspect that we will still have enough points to make it work, however there is only one way to find out. So now I draw a Curve->Free-form->Interpolate Points, and feed it my cosine spaced points, going from the top trailing edge, around the leading edge and then back to the bottom trailing edge. The resultant curve is in blue overlaid upon my black “spec” airfoil. At the trailing edge, we can see that it has added two points which we need to delete to maintain our point count. When we delete them, we see that the airfoil deviates somewhat from the spec foil in the cusped region near the trailing edge:
For me, .012″ is too much error, I’d like to keep it smaller than that. There’s no rule against point editing this curve though, in fact one of the main points I make about why you do it this way is that you CAN point edit it if need be. So let’s tweak our points a little and see where it gets us.
Now our max deviation is .0047″, which is below what I would usually find acceptable – .005″ This deviation occurs at 0.28″ forward of the trailing edge, which is at 99.2% of chord. If this was an actual wing with say, flaps or ailerons, that would probably be the least of your worries. But let’s say you’re not satisfied with that – now what? Well we have two options. The first is, just use more segments for your cosine spacing. If you’re using T-Splines, as I outlined in previous posts, you should use a power of 2, so you can certainly bump it up to 64 segments. So that’s option one. What if, instead, we used full cosine spacing, instead of half? That would put clusters of points at BOTH the leading and trailing edges. Let’s try that!
By full cosine spacing both the top and bottom halves of the airfoil separately you can see we have nice tight clusters of points at both the leading edge and trailing edge. Running an InterpCrv through those points, and deleting the extra points inserted at the trailing edge, we get this:
So there are multiple ways you could tackle an airfoil like this, but the general concept of cosine spacing still holds true. The specifics of each design need to be weighed in considering how to properly draw your airfoil. Whether you need full or half cosine spacing for your top and bottom curves is a function of several factors – just how much cusp there is, how big your chord length is (error will scale DOWN with smaller chords in absolute terms), whether there will be a control surface etc. At the end of the day though, if you are using T-Splines, 32 segments is 32 segments. Your blend topology will be IDENTICAL whether you full or half cosine space your airfoil. So I say, go with the one you like the best.