Hello everyone,
I would like to submit this idea as my summer of code project and of course any feedback/piece of mind from the inkscape community is greatly appreciated.
The Live Path Effect Stack seemed to be *the* thing I always wanted to have in my graphic programs. I have used similar technologies(don't know if this is the right word) before in 3D Studio Max and in Blender, but the way LPES works from what I read is far from what I was hoping for.
The main functional fault of LPES is that it is a stack in my opinion. Consider this example from the LPE-bluprint wiki page: http://wiki.inkscape.org/wiki/index.php/Image:Lpe_need_rich_input.png
The Live Path Effect would need two objects, the cloud and the sun(let's forget for a minute that each of those is itself an object with an LPE applied,) but how can this be done in a stack environment? The obvious way would be to apply the LPE to one object and add a reference(pointer/id...) to the other object as a parameter. This way would most certainly work, but the second object would remain somewhere outside the object with the LPES applied to it, which will make working with a lot of LPES awkward.
How I would like to do it: Instead of using a stack I would like to have an LPE Tree. Each tree node can be either an effect or an object. This way each object can contain a whole hierarchy of editable effects(Similar to Blender and Maya's Node System, but more simple). This would essentially make on-canvas editing of any part of the object(the outline of the cloud, the spike or the circle of the sun) more intuitive as the object itself would contain all the information necessary to build them.
This is a (very) simple mockup for the interface as I imagine it(lots of elements taken from 3d studio max) http://img187.imageshack.us/img187/5057/mockuprv7.png
Wow, this turned out longer than I thought, thank you for reading through it. Afief Halumi
On Sun, Mar 23, 2008 at 1:39 PM, Afief Halumi <afief.h@...400...> wrote:
The Live Path Effect would need two objects, the cloud and the sun(let's forget for a minute that each of those is itself an object with an LPE applied,) but how can this be done in a stack environment? The obvious way would be to apply the LPE to one object and add a reference(pointer/id...) to the other object as a parameter. This way would most certainly work, but the second object would remain somewhere outside the object with the LPES applied to it, which will make working with a lot of LPES awkward.
I really don't see much awkwardness in this. In Inkscape, you have objects referring to other objects all the time, clones being the most common example. What exactly is the problem?
This is a (very) simple mockup for the interface as I imagine it(lots of elements taken from 3d studio max) http://img187.imageshack.us/img187/5057/mockuprv7.png
In fact, this is already possible too: A path with LPE can contain within itself (though actually, within its LPE, but it does not matter in this context) another path that it uses. For example, Bend Path or Pattern along Path carry their own bending and pattern paths with them, and they are editable in Node tool after you click a toolbar button. This makes sense for cases where this secondary path is solely for the purpose of changing the main path and, by itself, has no place in the drawing and need not normally be visible at all. However, in cases like the non-destructive boolops as with that cloud+sun, the cloud does need to be itself on the canvas, and its precise location (and not only shape) matters. The same is true for a blend LPE bteween two or more paths. So, it really depends on the nature of the LPE, but in some cases linking to another object is the best approach.
As for your proposal, it's unclear what would correspond to that parent Boolean object - is it a group? or soemthing in defs? is it selectable as an object or not?
-----Original Message----- From: inkscape-devel-bounces@lists.sourceforge.net [mailto:inkscape-devel-bounces@lists.sourceforge.net] On Behalf Of bulia byak Sent: zondag 23 maart 2008 19:32 To: Afief Halumi Cc: inkscape-devel@lists.sourceforge.net Subject: Re: [Inkscape-devel] GSoC Idea
On Sun, Mar 23, 2008 at 1:39 PM, Afief Halumi <afief.h@...400...> wrote:
The Live Path Effect would need two objects, the cloud and the sun(let's forget for a minute that each of those is itself
an object
with an LPE applied,) but how can this be done in a stack
environment?
The obvious way would be to apply the LPE to one object and add a reference(pointer/id...) to the other object as a
parameter. This way
would most certainly work, but the second object would remain somewhere outside the object with the LPES applied to it,
which will
make working with a lot of LPES awkward.
I really don't see much awkwardness in this. In Inkscape, you have objects referring to other objects all the time, clones being the most common example. What exactly is the problem?
This is a (very) simple mockup for the interface as I
imagine it(lots
of elements taken from 3d studio max) http://img187.imageshack.us/img187/5057/mockuprv7.png
In fact, this is already possible too: A path with LPE can contain within itself (though actually, within its LPE, but it does not matter in this context) another path that it uses. For example, Bend Path or Pattern along Path carry their own bending and pattern paths with them, and they are editable in Node tool after you click a toolbar button. This makes sense for cases where this secondary path is solely for the purpose of changing the main path and, by itself, has no place in the drawing and need not normally be visible at all. However, in cases like the non-destructive boolops as with that cloud+sun, the cloud does need to be itself on the canvas, and its precise location (and not only shape) matters. The same is true for a blend LPE bteween two or more paths. So, it really depends on the nature of the LPE, but in some cases linking to another object is the best approach.
Hey you are right! I think I can get this working very soon. Seems not too hard to do :) I am thinking of adding an extra button next to "paste path parameter" which is "link parameter to path" making a clone reference. Can someone think of a better name for this button? (and perhaps an icon)
Cheers! Johan
-----Original Message----- From: inkscape-devel-bounces@lists.sourceforge.net [mailto:inkscape-devel-bounces@lists.sourceforge.net] On Behalf Of Afief Halumi Sent: zondag 23 maart 2008 18:40 To: inkscape-devel@lists.sourceforge.net Subject: [Inkscape-devel] GSoC Idea
Hello everyone,
I would like to submit this idea as my summer of code project and of course any feedback/piece of mind from the inkscape community is greatly appreciated.
The Live Path Effect Stack seemed to be *the* thing I always wanted to have in my graphic programs. I have used similar technologies(don't know if this is the right word) before in 3D Studio Max and in Blender, but the way LPES works from what I read is far from what I was hoping for.
The main functional fault of LPES is that it is a stack in my opinion. Consider this example from the LPE-bluprint wiki page: http://wiki.inkscape.org/wiki/index.php/Image:Lpe_need_rich_input.png
The Live Path Effect would need two objects, the cloud and the sun(let's forget for a minute that each of those is itself an object with an LPE applied,) but how can this be done in a stack environment? The obvious way would be to apply the LPE to one object and add a reference(pointer/id...) to the other object as a parameter. This way would most certainly work, but the second object would remain somewhere outside the object with the LPES applied to it, which will make working with a lot of LPES awkward.
How I would like to do it: Instead of using a stack I would like to have an LPE Tree. Each tree node can be either an effect or an object. This way each object can contain a whole hierarchy of editable effects(Similar to Blender and Maya's Node System, but more simple). This would essentially make on-canvas editing of any part of the object(the outline of the cloud, the spike or the circle of the sun) more intuitive as the object itself would contain all the information necessary to build them.
This is a (very) simple mockup for the interface as I imagine it(lots of elements taken from 3d studio max) http://img187.imageshack.us/img187/5057/mockuprv7.png
It is true that LPEs are non-commutative (is this the correct term); an LPE always has to be applied to something and cannot be a thing on its own. This makes bool-ops awkward, as one path would be the 'original' and the other the 'parameter'. We could make bool-ops where both parameters are equal, as parameters, on a dummy original path, but this also requires changes in all places that try to modify the object (i.e. node editing a dummy object should immediately go to the lpe parameters instead of the original path).
A group of french students is working right now (with already some great success!) on applying LPEs on groups of objects and, more important in this case, LPE stacking. The image of sun and cloud will then already be possible (we still have to make LPE boolops, but its easy since 2geom already has boolops, at least for non-self-intersecting paths). If the cloud must have an LPE applied, that indeed will not be possible with that stack. To alleviate the problem, like you mention it is possible to extend the lpe-PathParam that makes it possible to link to objects. They can then themselves have effects applied and can be part of the LPE definition, contained within it, so that's not a problem. But I do not know how to display the objects on-canvas when they are e.g. in the <defs> section...
The goal of LPEs was that it is simple, easy. I chose not to implement svg vector effects as it is more complicated. It is certainly more powerful, but a lot more complex for what I wanted, and LPE was already much more than a GSoC project. Making an LPE stack is easy, just chaining things, for UI it is also straightforward to think of one that is not too hard to program. Stacked LPE doesn't require recoding lots of things. (to the french students: I don't mean to devalue or dwarf your work!) I think if you want to make the tree thing, you should make svg vector effects. That is much more than a gsoc unfortunately, so you could choose to implement it without UI things.
Can you give an example of how the XML should look to do what you want?
-johan
On Sun, Mar 23, 2008 at 2:39 PM, <J.B.C.Engelen@...1578...> wrote:
A group of french students is working right now (with already some great success!) on applying LPEs on groups of objects and, more important in this case, LPE stacking. The image of sun and cloud will then already be possible (we still have to make LPE boolops, but its easy since 2geom already has boolops, at least for non-self-intersecting paths). If the cloud must have an LPE applied, that indeed will not be possible with that stack. To alleviate the problem, like you mention it is possible to extend the lpe-PathParam that makes it possible to link to objects. They can then themselves have effects applied and can be part of the LPE definition, contained within it, so that's not a problem. But I do not know how to display the objects on-canvas when they are e.g. in the <defs> section...
You can't. If you want something visible, it must not be in defs. That's what SVG says.
-----Original Message----- From: bulia byak [mailto:buliabyak@...400...] Sent: zondag 23 maart 2008 20:40 To: Engelen, J.B.C. (Johan) Cc: afief.h@...400...; inkscape-devel@lists.sourceforge.net Subject: Re: [Inkscape-devel] GSoC Idea
On Sun, Mar 23, 2008 at 2:39 PM, <J.B.C.Engelen@...1578...> wrote:
A group of french students is working right now (with
already some great success!) on applying LPEs on groups of objects and, more important in this case, LPE stacking. The image of sun and cloud will then already be possible (we still have to make LPE boolops, but its easy since 2geom already has boolops, at least for non-self-intersecting paths). If the cloud must have an LPE applied, that indeed will not be possible with that stack.
To alleviate the problem, like you mention it is possible
to extend the lpe-PathParam that makes it possible to link to objects. They can then themselves have effects applied and can be part of the LPE definition, contained within it, so that's not a problem. But I do not know how to display the objects on-canvas when they are e.g. in the <defs> section...
You can't. If you want something visible, it must not be in defs. That's what SVG says.
I meant making them temporarily visible for editing or reviewing. :)
I am working on the referring thing right now btw. First doing some other PathParam work, but it leads to linking...
-johan
participants (3)
-
unknown@example.com
-
Afief Halumi
-
bulia byak