Re: What do you want out of a path API?
Re: What do you want out of a path API?
- Subject: Re: What do you want out of a path API?
- From: Darrin Cardani <email@hidden>
- Date: Fri, 10 Sep 2010 10:04:29 -0700
Pete,
These are great suggestions! I have some questions about a couple of them below.
On Sep 7, 2010, at 11:11 AM, Peter Litwinowicz wrote:
>> One set of functions I'm not sure is useful is the functions for getting the
>> length of 1 segment of a path,
>
> Oh, we use this all the time. In our warper, we want to align segments of a
> spline to another segment of a spline. So we need to be able to evaluate
> each segment of a spline independently.
OK, noted. It's not too difficult to do, I just wasn't sure if people were using it as a substitute for just being able to find the point at a certain percentage of the distance along the curve. But if you need it in addition, that's do-able.
> We need to be able to get each vertex, we need to be able to evaluate points
> along the curve: and that includes by equal spacing in the output space, and
> by equal spacing in the parameter space (which are not the same thing!).
Do you find it helpful for us to also provide a method for evaluating points in parameter space? It seemed like output space was the hard case, so I was thinking we'd add that, but in the parameter space is pretty easy, so we'd let developers write that themselves. But we could add both.
>> Also, do you need to know the mode of the mask? (Add, Subtract, etc.) It seems
>> like in most cases you're drawing something rather than actually rendering the
>> mask and applying it in some way, since that's what the app does for you. But
>> if that functionality is useful, let me know.
>
> Oh, that is useful. Why leave it out? :-) It's just a call to implement
> and query the status of the mask, right?
Yeah, it's very simple. I was just questioning whether it was useful. But if it is, no problem!
> We also need to be able to attach our own parameters to each spline
> (checkboxes, menus, floating point sliders, etc.). We can live with each
> spline getting the same set (that is, we don't need to vary the set of
> params per spline, just per plugin!).
Can you elaborate on this? When you say "attach our own parameters to each spline," do you mean that you have some fixed set of parameters, and you need a copy of those parameter for every spline attached to the image (or plugin)? For example, you want a checkbox, a slider, and a color well. And for each spline created, you need those same 3 parameters in 1 plugin? Is that right?
> As far as UI goes, I also believe that you should attach splines to the
> individual plugin instances, so there is no doubt as to "who" owns the
> plugin (the masking interface of Motion, the plugin, which plugin, etc.) .
> The After Effects UI model is all wrong. You should really look at the
> Combustion model for the UI (Ummm, Guido should be able to help you there
> :-))
Hmm.... I will definitely ask Guido about it. It's unlikely we'll be able to change the model of what masks are attached to, but I'll give it some thought and talk to both our UI people and our spline people and see what can be done. (But don't get your hopes up on this one. ;-) )
> It would be helpful if we could programmatically change the drawing color of
> the spline.
Oh! I never thought of that! Good suggestion. I don't even know if we have a mechanism in the app to set it internally, but it's a good idea.
> It is also necessary to be able to programmatically make
> individual splines invisible or not (for example, when warping or morphing,
> you'll have two splines for each primitive: a "src" spline and a "dest"
> spline, and it is necessary for the user to be able to see only one set (all
> src or all dest splines) at a time. We normally have a button in our
> plugin's UI where we can do internally within he plugin).
Also a great idea!
> It would be helpful if we could copy and create a duplicate of a spline, so
> that when the user creates a source or dest spline, that we can
> automatically create the other one. It would be useful to programmatically
> copy keyframes from one spline to another (for similar reasons). It would
> also be useful to delete vertices internally and add vertices
> programmatically. So that if one spline of a pair has a vertex added by the
> user that we can add a vertex in the corresponding place on the other spline
> automatically (by us internally).
This one sounds tough. Duplicating a spline with all of its keyframes probably wouldn't be too hard. But once you start adding and removing vertices, do you need to also set keyframes on those vertices programmatically? I'll need to figure out if the notification mechanism for adding and removing vertices can send notifications to plugins. I see now why you want the splines to be associated with a plugin rather than with the object the plugin is applied to. (Of course, with generators, the splines are applied to the plugin, but that's probably not too useful in your case.)
> When cutting and pasting splines between plugins, you should bring along all
> the per-spline params, unless it is a differing plugin... Then just
> cut-and-paste the geometry portion (and with keyframes, if animated).
Definitely sounds useful, but that would require actually associating some plugin data with the spline. I'm not sure how difficult that would be to do. But I'll look into it.
> It would be useful for the user if you could attach trackers to control
> points of the spline (trackers anyone? :-))
They can already do this! Add a mask to a layer, select the mask, then add the Behavior "Shape > Track Points" to the mask. Voila!
> I'm sure I'll think of more things... Call me if you want to talk about
> this.
I may also do that. I wanted to discuss some of it publicly, though, in case it inspired anyone else to answer.
Thanks!
Darrin
--
Darrin Cardani
email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Pro-apps-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden