PDA

View Full Version : Interactively editing B-Splines.


crow
03-30-2005, 04:55 PM
Hi.
This is a two-part question. I've been noticing some problems while editing B-Splines.

1. Say for example, I draw a four point circle. I do a series of keys. Now, if I alt-drag on points to tighten the tension on the splines (eg, top and bottom points) the spline tightens at these points, which is to be expected. But, the spline at the points I haven't touched (left and right) don't seem to have 'strength/tension' to hold onto the spline opposite to them. In fact they only seem to be influence by the points I've dragged on. So much in fact that I can almost pull the spline so it's completely closed. It's like the only influence is created by the points that are edited. Surely the spline should be conforming (ie, not moving and keeping their curvature) to the untouched points as well?

2. I have also noticed that if I draw a circle with B-Splines, then advance a few frames and then alt + click --> 'corner' I get a sharp point. But it doesn't create a keyframe at the new frame I've advanced to and the shape changes at the first (and only) keyframe.

This is awkward isn't it? Surely any action you do, either alt/click, alt/drag should create a keyframe?
I could understand if I had 'multiframe' activated and then a change 'ripples' through the splines animation.

I've also noticed that I can alt/drag and adjust the spline when it's 'loose', but when it's set to 'corner' I can't alt/drag if I need to soften the edge a little.

paulm
03-30-2005, 05:36 PM
Hi.
1. Say for example, I draw a four point circle. I do a series of keys. Now, if I alt-drag on points to tighten the tension on the splines (eg, top and bottom points) the spline tightens at these points, which is to be expected. But, the spline at the points I haven't touched (left and right) don't seem to have 'strength/tension' to hold onto the spline opposite to them. In fact they only seem to be influence by the points I've dragged on. So much in fact that I can almost pull the spline so it's completely closed. It's like the only influence is created by the points that are edited. Surely the spline should be conforming (ie, not moving and keeping their curvature) to the untouched points as well?

This is just the nature of the algorithm we implemented. If I understand what you are saying correctly, then adjusting the tension on a point WILL affect surrounding points. It's just the nature of the math.

2. I have also noticed that if I draw a circle with B-Splines, then advance a few frames and then alt + click --> 'corner' I get a sharp point. But it doesn't create a keyframe at the new frame I've advanced to and the shape changes at the first (and only) keyframe.

This sounds like a bug - cycling the repeat count (alt+clicking) should change it for ALL frames - ie. it'll cycle on all the keyframes, which will cause all frames to be updated.

This is awkward isn't it? Surely any action you do, either alt/click, alt/drag should create a keyframe?
I could understand if I had 'multiframe' activated and then a change 'ripples' through the splines animation.

Not in this case. When you cycle the repeat count of a point, it fundamentally affects the math of the b-spline. This attribute can't animate, so it MUST do it for every keyframe for that shape. Alt+clicking uses different math than the variable tension feature.

I've also noticed that I can alt/drag and adjust the spline when it's 'loose', but when it's set to 'corner' I can't alt/drag if I need to soften the edge a little.

Yes, for the same reason. Alt+clicking actually repeats the control point (internally), which changes the characteristics of the math for that point. There is no way to actually get a true "corner" for a b-spline without doing this - but you can't interpolate the point to a point with a different repeat count.

This is fundamentally by design.

crow
03-30-2005, 06:18 PM
Hmm... Putting the math aside here. It just seems odd that you can't swap between either alt/dragging and alt/clicking to get the spline to conform to the required shape, from key to key. I can't see why I'd want to 'reset' an area of a spline all the way through a sequence. Surely that's what the multiframe or tween option is for?

This is just the nature of the algorithm we implemented. If I understand what you are saying correctly, then adjusting the tension on a point WILL affect surrounding points. It's just the nature of the math.

This goes hand-in-hand with wanting to interactively adjust the splines on a frame to frame basis. It seems to me the 'influence' of the tension on surrounding points is very extreme. Maybe I'm expecting too much? One can wish eh?

perryk
03-30-2005, 06:27 PM
Hmm... Putting the math aside here. It just seems odd that you can't swap between either alt/dragging and alt/clicking to get the spline to conform to the required shape, from key to key. I can't see why I'd want to 'reset' an area of a spline all the way through a sequence. Surely that's what the multiframe or tween option is for?

A cusp (corner) is a completely different animal than a non-cusp in a b-spline. There's no way to tween going from cusp to non-cusp or back again.

The only choice is to use tension with more closely spaced points near the point you want to make a corner. Tension changes will affect at most two other points in either direction.

Also, Paul, the behavior he first described was correct - not a bug. Like I said, there's no notion of tweening between a cusp and non-cusp. If one frame is a cusp, all other keyframes for that point must be cusps too. Cusps and non-cusps are completely different constructs (repeated knots versus non-repeated knots).

crow
03-30-2005, 07:45 PM
That's fine. Just trying to get it straight in my head what I can and can't do. I'm coming from what I know I can use in Commotion. Just trying to get my head around the new software. 'Same same, but different' as they say. :)

adam
04-05-2005, 12:39 AM
i'm going between linux and windowns and I notice the tensioning works differently between the two :confused: the surrounding points are affected much more in linux or is it just me??

perryk
04-05-2005, 08:39 AM
i'm going between linux and windowns and I notice the tensioning works differently between the two :confused: the surrounding points are affected much more in linux or is it just me??

It would be surprising if there was a difference as the code is the same between the two platforms. While I haven't tested on Linux myself, I'm pretty sure there's no difference in behavior between the Mac and Windows.

paulm
04-05-2005, 08:56 AM
I think it's adam - there shouldn't be a difference.