Special "point on a curve" editing
 1-20  21-30

Next
 From:  BurrMan
4338.1 
Hi Michael,
I just rediscovered the special "point on a curve" editing for movment while points are showing, and had a question. It seems to do mostly what I want, but wanted to see if an option was possible.. I was looking for the ability to "lock a control point" in place and still allow the on curve edit.. It seems to take the nearest "4 points" to the grab and allow them to move (with some type of further less, closer more decision). If you are near and endpoint, it will move the endpoint...

I havnt thought this through completely but was wondering if we can "define" this area of movement? I was watching a solidedge video and they showed a technique of actually showing "2 sets" of points in edit points mode.. One as is now in MoI and another set of points on curve (Maybe these could be the definable entity?)

Anyway, I see this as adding benefit to tracing operations where I am trying to get curves to match something like a bitmap, faster.. Let me know.

Thanks.
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  BurrMan
4338.2 In reply to 4338.1 
I also just had an idea and fooled around a bit.. Seems I can acheive (somewhat) this by rebuilding my curve "with points" and adding enough points so that the "4 point" movement can fall outside of the "lock point", although it also brings all of my movement in this manner down to that finite level... Maybe instead of having the show the second set of on curve points option, there could be some type of mechanism to determine how many points "surrounding the on curve pick" will be used in either direction??

Although now it sounds like I am getting into the UI..:o

Anyway, your input will be appreciated.. And let me know if I havnt been clear. I can post some visuals...

Burr
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
4338.3 In reply to 4338.1 
Hi Burr, yeah that uses what is called a constraint-based curve modification system, to modify the control points in such a way to change the point that the curve is going through at one spot on it.

In MoI it's basically a mechanism for manipulating a few nearby control points all in one drag operation rather than dragging on points one at a time.

It is theoretically possible for this constraint mechanism to flag certain control points as non-movable, but aside from some kind of UI mechanism to control that (which is significant itself), adding in more constraints like that means more "force" will get applied to the control points that can move. Additional force like that tends to cause stuff like bulges or wiggles happening in the curve instead of a more natural deformation.

> and they showed a technique of actually showing "2 sets"
> of points in edit points mode.. One as is now in MoI and
> another set of points on curve (Maybe these could be the
> definable entity?)

Yeah, but having a whole set of constrained edit points located all on the curve really tends to cause wiggles when you edit them.

See here for a previous example of how those kinds of bulges happen in over constrained type editing:
http://moi3d.com/forum/index.php?webtag=MOI&msg=3364.6

It tends to be really frustrating to use an editing system that introduces a lot of bulgy or wiggly areas into the curve that is being edited.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  BurrMan
4338.4 In reply to 4338.3 
"""""""""" that uses what is called a constraint-based curve modification system, to modify the control points in such a way to change the point that the curve is going through at one spot on it.
In MoI it's basically a mechanism for manipulating a few nearby control points all in one drag operation rather than dragging on points one at a time.""""""""""""

I reviewed the thread in the link you posted and see the poor results, but that is a bit different than what I was envisioning.

I did a bit more thinking about this, and the UI impact.. Let me illustrate, although, this will depend on the "constraint-based curve modification system" MoI uses and how hard coded it is and access to it.

This will get into the "rebuilding the curve to get the results" I had mentioned (But not really rebuilding the curve....)

So Here is a curve with points that i may want to edit:



If I rebuild it, I can get the action I want, with MoI's current point editing structure and control the degree by the point density:





I suppose it really comes down to a question of "Is the mechanism for manipulating a few nearby control points" located in the Show points command or hard coded?

If it's in the command, we could use some logic to have the command "Think" the curve had however many points were in a "Soft selection" numerical input box (Whatever the number typed in is equivelent to scope desired) and a "show points2" command could be made with this single added input field... This gives the "rebuilding of the curve to get the results" option, interactivity.

Of course if it's hard coded in the program logic, then this is not relevent discussion... :o

I must be nuts!!!!

EDITED: 19 Jun 2012 by BURRMAN

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
4338.5 In reply to 4338.4 
Hi Burr - I see what you mean now - previously when I thought you meant you didn't want a point to be edited I thought you meant one of the curve's control points to not be edited and remain in place. But it looks like you mean a particular "point on the curve" (not _control point_) to remain in place. That's a bit different.

> "Is the mechanism for manipulating a few nearby control points"
> located in the Show points command or hard coded?

It's not actually the Show points command that does the actual editing - it's the drag command that actually moves stuff around.

Show points just turns the point display itself on or off, "show points" by itself doesn't actually edit the curve.


One problem with having a mechanism that tried to do a kind of "implicit rebuild" version of the curve that was actually dragged is that it's hard to guarantee that the point that you wanted to stay fixed would actually be fixed with that method - if you dragged close enough nearby it, it would still move if the only thing that was happening during the drag was a larger number of rebuilt points automatically added in.

There could be a lot of weird side effects with that kind of "edit an automatically rebuilt version" because if you just do a rebuild by # of points, if you don't use very many points the shape of the curve will actually be changed quite significantly in the rebuilt version, so that could lead to some strange things where editing the curve morphed it into some completely different shape unless you happened to set that special auto rebuild number of points value to a high enough value...


A whole different way of doing it would be to apply multiple constraints to the edit, with one constraint producing the move and another one fixing a particular point in place - but if you try to move things nearby the fixed constraint point, that's exactly the kind of thing that introduces bulges as shown in that previous example - there will be a kind of pivoting action where things kind of pivot around the locked point - it's the pivoting that then makes for bulges.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  BurrMan
4338.6 In reply to 4338.4 
Never mind... I think I'm loosing my mind....

Can the constraint mechanism be made to recognize an "open ended point" and know not to include it in the moving?
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
4338.7 In reply to 4338.6 
Hi Burr, you mean to keep the endpoint of an open curve locked down and not float around with the rest of the points?

Yes, that could be possible and pivoting around the endpoint doesn't really cause the same kind of bulging issues since it doesn't pivot the piece of the curve behind the point since there is no more curve on the other side of the point in that case.

That's something that should be pretty easy for me to add in as a moi.ini option in MoI v3, I've added a note to do that.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  BurrMan
4338.8 In reply to 4338.7 
Thanks Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  BurrMan
4338.9 In reply to 4338.8 
Hi Michael,
With the current mechanism for controling the surrounding points movement, is there a means to control the radius of the constraint?? So as is now, points at further distances move less down to the non moving part... Can we grow or shrink this "Weight" of the movement?

Also, it seems the "drag" command is located in the Command processor part and not a js file?

Thanks.
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
4338.10 In reply to 4338.9 
Hi Burr,

> With the current mechanism for controling the surrounding
> points movement, is there a means to control the radius of
> the constraint??

No - basically the mechanism works by moving control points by the least amount that is possible to satisfy the constraint - satisfy the constraint means make the curve pass through the new point location where you are dragging to.

The mechanism doesn't use a radius value for determining that - but the overall way the math works is that the control point that contributes the most to that particular location of the curve will get moved the most, and the ones to either side of it which contribute somewhat lesser percentage amounts of their position to that location of the curve will move somewhat less. Control points that are more than 3 (or maybe 4 I forget) points away from the current one do not contribute anything at all to that one point on the curve where the drag started from, so points outside of that zone will not be moved at all. That's kind of a side effect of how NURBS work - the control points of a NURBS curve define the shape of the curve in a local area around those control points, if you move a single control points some area on the curve a few spans away will not be affected by that change.


There could be some possibility of trying to do a kind of multi-pass modification, something like move the curve as it currently does and then try to analyze what kind of change in the curve tangents took place and try to move some other areas of the curve where tangents were modified to kind of pull some more pieces of the curve along with it to reduce the overall change in tangent shapes. That's something I would like to try in the future but it will take a fair amount of experimentation to get something that avoids introducing wiggles.


Another way to do a weighted radius type soft movement is to have it just work on control point editing instead of with "drag the point on the curve" type editing - that's generally how it works with polygon sub-d modelers for example, where you really only do control point editing and not direct "pull the point directly on the surface" editing at all.


> Also, it seems the "drag" command is located in the Command
> processor part and not a js file?

Yeah, it's a command that is built in to moi_lib.dll - it gets implicitly triggered when you do a drag when in selection mode. There are a few other built-in C++ implemented commands like that that get triggered with some kind of specific action other than clicking on a command button, like the "drag/drop" command is executed when you drop a file from an Explorer window on to the MoI window, and the "Change unit system" command gets executed when there is a change in unit system and you have "Scale on unit system changes" enabled.

Currently the undo system is built around the command system so if something makes a change that should go into the undo buffer as an undoable step it needs to be set up as a command.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
4338.11 
Hi Burr, also this description may help a bit.

It's basically a fundamental thing to NURBS that there is a kind of weight already associated with each control point.

The whole way that NURBS generates a shape is by actually blending together the control points in different amounts as you travel along the curve.

Right at the start of the curve, the shape there is defined 100% by just the end control point like this:



As you start to travel along the curve (which basically means moving in "parameter space" along the curve's parameter values), the proportions of influence of each control point changes. So for example at this point in the curve shown at the arrow here, the points are blended by something similar to the percentages shown:



The blending means to literally take that amount of each control point's location value - like the x value of the curve at that point is calculated by taking the start control point's x value multiplied by 0.5 and then adding to that the the second control point's x value multiplied by 0.4 and then adding in the third control point's x value multiplied by 0.1 and then the fourth control point's x value multipled by 0.05 .

So anyway the constraint mechanism will alter the control points by that same kind of weighting that they are influencing that point on the curve. So for example if you do the "drag point on curve" by dragging on that arrow spot in the second image, the first 2 control points are going to move around mostly with your drag and the third one quite a bit less and the fourth one barely at all.

The fifth control point is not used at all in the calculation of the curve's shape at that arrow spot, so it is also not moved around at all when doing a "drag point on curve" from that location.


I didn't check the exact percentages for that diagram, those are just something generally close to give you the idea. I think that in this actual case the first 2 percentages are actually closer to equal like 40% each for that specific case.


- Michael

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  BurrMan
4338.12 In reply to 4338.11 
OIC. So the constraint mechanism is tied into using the b-splines definition also and not just a single "analysis" created by you... I can see how it starts to get overly complicated.. I can create the results I need with MoI anywho... Thanks for indulging...

Wish that spiro curves guy wouldve been interested in playing ball with you!! I've also seen you speak about creating more power in this area anyway.. Will look forward to something in the future..

Thanks again,
Burr
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
4338.13 In reply to 4338.12 
Hi Burr,

> So the constraint mechanism is tied into using the b-splines
> definition also and not just a single "analysis" created by you...

Yeah basically it works with the fundamental b-splines definition but in the reverse way - the normal way is that a point on the curve is calculated by blending together the control points. The constraint system goes in the reverse direction and says how much do the control points need to be adjusted in order for the point at this parameter on the curve to go through this specific location.

But yeah it works off of the direct b-splines math and isn't just kind of munging points around arbitrarily.


> Wish that spiro curves guy wouldve been interested
> in playing ball with you!!

I kind of got the sense that he was just too busy with his work at Google to spend any time dealing with it. And unfortunately it's licensed as GPL so the existing library can only be used in open source applications.

But yeah I hope to be able to get something kind of similar in the future by adding in some kind of curvature change minimization mechanism to the "through points" type curve drawing.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Kevin De Smet (KEV_BOY)
4338.14 In reply to 4338.13 
Nevertheless, there's something inherently immediately intuitive about moving points "on" the curve, as opposed to moving points that lie off your curve. Despite the fact that's their mathematical definition.
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
4338.15 In reply to 4338.14 
Hi Kevin,

> Nevertheless, there's something inherently immediately
> intuitive about moving points "on" the curve,

Yup, and MoI allows you to move a point on the curve with this special drag mode that's mentioned here - that mode is active when you have control points turned on but then go and drag on a spot directly on a curve rather than dragging the control points.

See this post for some more information on how to do that:
http://moi3d.com/forum/index.php?webtag=MOI&msg=744.16

The part that does not work well for editing is not so much about just moving just one point on the curve, it's about moving a point on the curve while simultaneously locking down other various points on the curve into a fixed place as well.

Locking down a bunch of other points on the curve during the edit basically forces a pivoting action to happen around them, making a whole lot of bulges and ripples in the result.

Here's an example - say you have these 5 points here:



Now if you want to move the middle point but lock the curve down to pass through all the other 4 points where they currently are, you're basically forcing the curve to pivot around them like this:




It's really difficult to control things and maintain a nice shape when editing when there are all kinds of bulges being added into the curve like that in other regions a little bit away from the one you're trying to edit - that's basically why that kind of editing is not very productive.

Manipulating just one point without trying to constrain numerous other points does not have the same kind of issues, and neither does editing control points since control points act as more of a guide for how the curve is shaped rather than over constraining it.

- Michael

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  BurrMan
4338.16 In reply to 4338.15 
Yes, an as in the solid edge version, it only HAS points on the curve ( Constraining??) where in MoI, the on curve edit picks the point you desire.. My question was related to being able to control the weight of the point that i pick, irregardless of the existing point stucture..

So I can acheive what I want by rebuilding a curve to fit the density i need for localized oncurve edits... I'll have to see how well this workflow will work, while maintaining my original curve and not reshaping it by rebuilding... However, I am really envisioning this for tracing type operation, so slight deviation from curve rebuilding wouldnt be a finished product failure...It would just make it faster to get the overall shape layed in, then refine with the low point count curve as needed...
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
4338.17 In reply to 4338.16 
Hi Burr, yeah I was just kind of making another example for Kevin there on how "points on the curve" can lead to problems when there are many of them being constrained at the same time.

Do you still have some more questions about the curve on point editing stuff though?

One other thing that I should mention - if you want to reduce the area of effect of the movement, another way you can do that aside from a full curve rebuild is to use Edit > Add pt to add in some more control points just in that one particular area of the curve.

So those are a couple of ways you can make the editing more localized to a smaller region of the curve. The part that is kind of harder is trying to increase the area of effect - that's what could possibly be done in the future with a multi-pass mechanism that tried to reduce changes in tangency like I was kind of mentioning earlier. It will probably take a fair amount of experimentation to get something like that to work well though.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  BurrMan
4338.18 In reply to 4338.17 
Hi Michael,
I was just kindof chiming in to clarify what my original request was about for the others reading... I think you had it covered though, and I didnt have anything further regarding this..

But you just made a great "point" (Pun)

The adding point "On the curve" didnt change the structure of the curve at all, whereas, adding point to the (Whatever you call the dashed line that is planar between the control points) does change the shape..

So the new question is, could the add point command have a numerical value to set? Like "add 5 or 10 points?" and then of course to reverse it would be the other part.. Would there be a workflow to be able to remove points without changeing the curve structure???
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
4338.19 In reply to 4338.18 
Hi Burr,

> The adding point "On the curve" didnt change the
> structure of the curve at all, whereas, adding point to
> the (Whatever you call the dashed line that is planar
> between the control points) does change the shape..

Yeah - when you click a point directly on the curve instead of on the dashed line between control points (that line is called the control polygon or maybe control polygon hull) it does an operation which is called adding a "knot" to the curve - this does keep the curve shape exactly the same and a new control point will be added in that vicinity with the control points shifting around a bit instead of the curve shape shifting around.

It's kind of easiest to do this mode when you have control points turned off so that you won't grab the control hull during Add pt, since the hull takes precedence.


> So the new question is, could the add point command have a
> numerical value to set? Like "add 5 or 10 points?"

Well, a curve has an infinite number of possible locations you could add a knot to - like when a curve has a parameter range from 0 to 1 a knot could be added at parameter value = 0.2, or at 0.255 or at 0.224 or at 0.582, etc... - it wouldn't work very well to just add in points at totally random locations so there would have to be a mechanism to control the region you were adding them in at. If you're only adding in something like 5 points, it would probably take about the same effort as just running Add point 5 times...

By the way if you do want to run Add point many times in a row set the "Repeat" checkbox to be checked before you place the first one, that way it will auto repeat and you will only need to left click to place each one and right-click at the end to stop.

Needing to add in a whole lot of points like 10 at a time to a localized area of a curve in a repeated and regular way is kind of unusual - I guess I'd need to see some examples of how that would be helpful to understand that better.


> and then of course to reverse it would be the other
> part.. Would there be a workflow to be able to remove
> points without changeing the curve structure???

No, not really - I mean there is such a thing as "knot removal", but it's only in certain special cases that it can be done without changing the shape of the curve at all. It could be done to ones that you added in with "Add point" (with the Adding a knot method), but just any general curve like points that you created by drawing a control point curve are not possible to remove without altering the shape of the curve.

- Michael

EDITED: 25 Jun 2011 by MICHAEL GIBSON

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  BurrMan
4338.20 In reply to 4338.19 
Hi Michael,
Ok I see. My questions have come from a lack of understanding about that structure of a b-spline...

When I originally did this add point (Knot), I thought I saw the "entire point structure of the sample curve shift" to reflect the added point.. After your last post, i realized it was just a local shift of points!!!

So with this, it kindof answers my questions because I can see that once the point structure has been changed, you could probably just reverse the knot input and acheive the reversal, but not (Pun) if you alter the curve..

BUT, this also gives me a better result than i was originally looking for with the on curve editing and "rebuilding" method, as I wont need to revert the points to be less dense..

When I need more localized on curve movement, I can just add some knots to that area and get it, and leave the rest of the curve in original low density!!

Thanks for that!

I suppose then that in that original "Solidedge 2 point structure" method I was talking about, with the control hull points and the points on the curve showing and movable, that the points on the curve were just representations of "Knots??"
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged
 

Reply to All Reply to All

 

 
Show messages:  1-20  21-30