Re: [Inkscape-devel] Spray tool discussion
Hi again. I just uploaded the GUI for the advanced options:
http://wiki.inkscape.org/wiki/index.php/Image:Spray-tool-ui02.png
Is a bit over the top and some of the combinations may not have a lot of sense in the end.
Some explaining: - The checkboxes allow the change of the attributes. Is one is not activated it means the sprayed items will have that feature the same as the original, unaltered. In the case of spacing (which is not an attribute) I don't know how this should work.
- Scale allows any value, positive or negative, as this will allow the motif to be bigger or smaller than original.
- Rotation (and Hue) are always positive and the min can be higher than the max. Why you ask? because if this is not allowed, some configurations will be unavailable. If you want items to be rotated between 15-345º (a margin of 330º), you would use min=15º and max=345º. But what if you want them rotated on the other sector (345-15º=30º)? In that case you would use min=345º and max=15º.
- X and Y spacing are there but I'm not sure of what units to use. Should it be a % of the stroke width on each axis? What behavior do people expect for spacing? I can't make my mind right now.
- The color variation is activated independently for the stroke/fill for each HLSO attribute. With the intention of making the color selection easier and faster, I've placed two color swatches (on the min and max columns) so the user can call the color selector and pick the color or insert values manually. Again, for the same reasons, the min value can be higher than the max.
- I'm not exactly sure how "use lightness from background" and "tablet pressure" does interact with the rest of the settings. My idea is that these two should vary the attribute between the set limits. But randomness doesn't make much sense when using a tablet or the lightness since you would want that attribute to be controlled and not random. Maybe the Randomness spinbox should be deactivated when "use lightness..." or "tablet" are checked.
Regards.
PS: I think my HD is dying :(
- I like the checkbox idea : turn them on to have control, off to stick to the original. Great Of course, by default, all the boxes are unchecked.
- I really disagree on the %min + %max + randomness system: it's too many parameters. I think we should have a closer look to the way statistical dispersion can be described http://en.wikipedia.org/wiki/Statistical_dispersion. A good way to deal with dispersion is to use the standard deviationhttp://en.wikipedia.org/wiki/Standard_deviationnumber, which uses the same unit than the data. The standard deviation could be the only parameter if we consider our clone objects properties being created under a normal distribution (Gaussian)http://en.wikipedia.org/wiki/Normal_distribution. The other parameter is the mean and is determined by the original object or the cursor position.
I personally think that only giving the standard deviation and using a normal distribution is enough for scaling / rotation / H / S / L / O. This really simplify the UI.
- For spacial scattering, as we said, we need more control on the distribution, that was your idea when you mentioned the 2 radius. There a many many statistical distribution possible. With a normal one the standard deviation is your radius, and 3 times the standard deviation is the scatter radius. If we want to control them intependantly we have to choose a more complex distribution, there are many out there :)
- I would get rid off the X and Y spacing and talk about normal and tangential scattering.
- I'm good for the tab system. But what if you want all you shapes be controlled by the same randomness parameters ? Maybe we should have a "Master" tab, to control all the items and dedicated tabs for each item.
Hoping these comments will be usefull Steren.
2008/8/8 Steren <steren.giannini@...400...>:
- I like the checkbox idea : turn them on to have control, off to stick to
the original. Great Of course, by default, all the boxes are unchecked.
- I really disagree on the %min + %max + randomness system: it's too many
parameters.
I disagree... I don't think complexity of an interface is directly proportional to the number of parameters. I think that the parameters in my mockup are placed in a way that are intuitive enough to manage them, as all of the settings have an homogenized way of working. The limits are needed in case you want to constrain some parameter to determined values; I don't know of other way to offer this feature so ideas are welcomed.
Ideally, a special widget that lets you set the limits in a circle or slider would be best, is this out of question? I'm trying to be direct on my approaches and prefer leaving the polishing for later, if only to avoid layers and layers of complexity and concerns while explaining.
I think we should have a closer look to the way statistical dispersion can be described. A good way to deal with dispersion is to use the standard deviation number, which uses the same unit than the data. The standard deviation could be the only parameter if we consider our clone objects properties being created under a normal distribution (Gaussian). The other parameter is the mean and is determined by the original object or the cursor position.
I know how a gaussian distribution works, but I didn't understand the sentence about the mean and how it relates to the original object or the cursor position. Please, make a mockup. I've uploaded a SVG file to the wiki with my UI proposals: http://wiki.inkscape.org/wiki/images/Spray-tool.svg
I personally think that only giving the standard deviation and using a normal distribution is enough for scaling / rotation / H / S / L / O. This really simplify the UI.
As I said, you leave behind the opportunity to fine tune the parameters. I prefer that people does mockups and detailed explanations of how they expect this to work and what would like to set instead of build their expectations upon my proposal. This way we can make a compromise between our subjective interests.
- For spacial scattering, as we said, we need more control on the
distribution, that was your idea when you mentioned the 2 radius. There a many many statistical distribution possible. With a normal one the standard deviation is your radius, and 3 times the standard deviation is the scatter radius. If we want to control them intependantly we have to choose a more complex distribution, there are many out there :)
Or maybe not ;) Scrap the radiuses. Ideally (again :)), I'd like to set the density by editing a curve. This is more intuitive and has an additional advantage: you can make a painting cursor that has a hole in it. With the two radius approach we only can set the circumferences, so having a hole or concentric rings is impossible. If the user wants a gaussian distribution he could draw a gaussian curve, (or use a default preset -yes, in my fantasy world curves can be saved;)).
- I would get rid off the X and Y spacing and talk about normal and
tangential scattering.
Ok, that's more correct. With everything, we need: - The distribution setting (I vote for the curve editing widget). - Normal scattering. - Tangential scattering. - Another for rotation of the cursor.
One question normal and tangential should be controlled with two independent curves? Or make it a curve for distribution, and control the normal and tangential scattering sepparately?
Doubts, doubts, doubts...
- I'm good for the tab system. But what if you want all you shapes be
controlled by the same randomness parameters ? Maybe we should have a "Master" tab, to control all the items and dedicated tabs for each item.
Yes, that could be a solution. My doubt is if the Master tab settings should be added to each object tab or prevail over them.
Hoping these comments will be usefull Steren.
They are ;)
Regards.
PS: On the researching for this blueprint I found that the units in the HSL (and CMYK for the same matter) tab are not expressed as they should: - H goes from 0 to 360º. - S and L go from 0 to 100. But in Inkscape the values are expresed as 1 Byte integers! Why?
As I said, you leave behind the opportunity to fine tune the parameters.
Ok I see now the type of control you want on the spray tool : you're right, as it is an optional dialog, we can afford having many parameters. http://wiki.inkscape.org/wiki/index.php/SpecSprayTool#UI
I just changed the tabs in a dropdown box, indeed, we don't know how many objects the tool will have to spray. I added the "Master" item, the logic will be the following : - if a checkbox for an object is checked, take this parameter - otherwise look for the master : if the corresponding Master checkbox is checked, take these parameters - otherwise, take the reference brush parameters as parameters.
Or maybe not ;) Scrap the radiuses. Ideally (again :)), I'd like to
set the density by editing a curve. This is more intuitive and has an additional advantage: you can make a painting cursor that has a hole in it. With the two radius approach we only can set the circumferences, so having a hole or concentric rings is impossible. If the user wants a gaussian distribution he could draw a gaussian curve, (or use a default preset -yes, in my fantasy world curves can be saved;)).
Yes, the curve widget would be great. If you've used blender, you may be familiar with the power of such parameter control. (basicaly, the user can define curves between two variables) In fact, the question is What do we mean when we talk about the "randomness"parameter ? If the user gives a curve, it's clear, but if we give a number, how can we define it ? That was what I tried to propose when I talked about distribution.
I think that a curve widget may be too complex to use (and to build). So considering the min and max value, this is what I propose as an internal way to convert the % of randomness to a distribution : http://wiki.inkscape.org/wiki/index.php/Image:Random_spray.png
Steren
Hi,
As I said, you leave behind the opportunity to fine tune the parameters.
Ok I see now the type of control you want on the spray tool : you're right, as it is an optional dialog, we can afford having many parameters. http://wiki.inkscape.org/wiki/index.php/SpecSprayTool#UI
It's good that you challenge my ideas because either they become stronger and more focused or get scrapped in the process... so whatever is the outcome it's good.
BTW, if you plan to add a proposal or mockup on the wiki, PLEASE, PLEASE, create a new section rather than using mine because I can't keep it tidy if you don't.
I just changed the tabs in a dropdown box, indeed, we don't know how many objects the tool will have to spray. I added the "Master" item, the logic will be the following :
- if a checkbox for an object is checked, take this parameter
- otherwise look for the master : if the corresponding Master checkbox is
checked, take these parameters
- otherwise, take the reference brush parameters as parameters.
I added the Master tab to my mockup. However, my proposal has a major flaw: it doesn't allow the user to set master values in a per-parameter fashion. Thus, if the Master tab is active it overrides ALL of the parameters of the objects.
Yours is much better since users will probably like to override some parameters while using others with their object configuration. And I get rid of the unnecessary checkbox. I'll update my mockup to reflect this.
Yes, the curve widget would be great. If you've used blender, you may be familiar with the power of such parameter control. (basicaly, the user can define curves between two variables) In fact, the question is What do we mean when we talk about the "randomness"parameter ? If the user gives a curve, it's clear, but if we give a number, how can we define it ? That was what I tried to propose when I talked about distribution.
Here is the UI with the curve: http://wiki.inkscape.org/wiki/index.php/Image:Spray-tool-ui02.png
Keep in mind that the curve controls the density (distribution) of the sprayed items, not the randomness.
I think that a curve widget may be too complex to use (and to build). So considering the min and max value, this is what I propose as an internal way to convert the % of randomness to a distribution : http://wiki.inkscape.org/wiki/index.php/Image:Random_spray.png
I hope it is not... but developers have the last word, so... BTW If I recall correctly, when the Tweak tool was implemented there was some talk about a way to set pressure with a curve. Right now it is using a gaussian curve if I'm not mistaken. If this curve widget gets implemented it could be used for the Tweak tool too...
About this curve system I've made two mockups: http://wiki.inkscape.org/wiki/index.php/Image:Spray-tool-cursor01.png http://wiki.inkscape.org/wiki/index.php/Image:Spray-tool-cursor02.png
The first one shows one of the clear advantages of this approach. From the wiki blueprint: ""This system allows:
* Literally draw densities in a intuitive way. * Adjust a different density for each object, or share them via Presets. * Set density functions that has a hole in them or concentric rings. * Set degrees of density that you can't get with the 2-radiuses approach. ""
Your approach, Steren, only allows configurations were the center of the cursor is ALWAYS the zone with the maximum intensity of the whole cursor. You can't do concentric rings, or have Object1 sprayed on the outside ONLY, and Object2 on the inside.
The second example shows the parameters ratio and angle. Ratio=tangential/normal: (Picture in your mind a cursor with a vertical stroke direction) - Ratio>1: the height of the cursor is bigger than the width. - Ratio=1: height=width (a circle). - Ratio<1: the width of the cursor is bigger than the height.
Angle just sets an angle for the cursor relative to the stroke direction.
The ratio option is overridden by the 'Use tilt from pen' option.
I think all of this framework can be used for the Tweak tool too.
I've to work on an example about how to adjust the limits and retouch a bit the UI mockup, basically removing the checkbox in Master tab and adding a way to select the objects. I've an idea where the objects/groups can selected from the toolbar and in Clone Mode the selected item becomes the original of the clones.
Regards.
Keep in mind that the curve controls the density (distribution) of the sprayed items, not the randomness.
Speaking of the randomness, could you be more specific on how it works? For me the randomness on scale, rotation and color was determined by the system I described with this image : http://wiki.inkscape.org/wiki/index.php/Image:Random_spray.png Which means that if your randomness is 100%, then the parameter takes any value between the Min and Max values. If randomness is 0%, the value of parameter is the mean between the Min and Max values If it's 50%, then the parameters is more likely to take the mean value than the Min or Max itself.
Steren
participants (2)
-
Pajarico
-
Steren