Features

From MyPaint

Jump to: navigation, search
This is a brainstorming page, a place for new ideas and suggestions.
To contribute, please follow the these guidelines and help us keeping the wiki organized.

Contents

[edit] In progress

/Palette. A prototype implementation in the direction of the idea on the GUI brainstorm.

Status as of 12 July 2009: Ready for testing and feedback by interested end-users.


Another implementation (based on previous work, but seems slightly different) - iportnovs_en

[edit] Brainstorm

For problems related to MyPaint, but that are wider or outside the scope of MyPaint itself see tools and integration page. See also the GUI Brainstorm.

[edit] Hake Brush

It might be beneficial to approach MyPaint like I do in Charcoal... with a Vine charcoal in one hand and a Hake Brush to wipe away/smudge/smooth/soften/etc by varying the pressure/direction/angle of the Hake brush. Please consider adding it.

Positives:

  • Creates a natural Back and Forth attack to creation when combined with vine charcoal
  • Quick creation due to a back and forth attack
  • Provides a simplicity of creation

Negatives:

  • It seems to me the implementation of what a Hake Brush does in real life would be a bear to implement.

[edit] Background Layer

I believe the utility of the background layer would be improved by the ability to load images in well known formats (.jpg, .png, .bmp?) as backgrounds.

Possible Uses:

  • Using a fractal, gradient or other computer generated backdrop as your background
  • Importing a scanned or photographed physical painting for background
  • Using a sketch created in GIMP or scanned from paper as the basis of your painting
  • Perspective grids or other sized/calibrated grids for rigidly laid out compositions, like cityscapes.

Scope-limiting considerations

  • No scaling/tiling. Trust the user to use GIMP or other means to get the background the size they want.
  • Possibly a toggle. I can imagine a use for customized repeating patterns
  • Set canvas size at image size if not repeating (Dependent on implementation of non-infinite canvas)
  • I am assuming Python has a well-developed suite of image-loading classes. If not, limit to a single well known format for ease of coding, at least in v1 of the feature.

Songwind apogee 16:05, 27 June 2009 (UTC)

[edit] Perspective tools

File:Perspective.png


One of the main useful things for planning and creating an image from scratch is to prepare the perspective. Making a perspective grid is all in all a rather mechanical and dull process, especially once you start making more advanced grids, such as two-point perspective etc. There are a few points that would be useful in helping to make this initial step easier in myPaint, ordered from less to more complex:

  • Ability to draw straight lines. GIMP's click + shift+drag would be enough for this. Maybe using the Ctrl key as a qualifier to turn off all pressure sensitivity in the stroke as well (most of the time when I want to make straight lines I want them to be evenly thick, so maybe have this as a default?).


[edit] Selection/Masking

I have no idea how difficult this would be to implement. However, it is a pretty important part of brush-based arts. In particular, I think this is needed to get the most out of the new Airbrush tools.

  • Ability to select an area for painting, like surrounding it with a paper or tape mask IRL
  • Ability to invert the selection so that the selected area is the only place one can not paint.
  • An advanced form of this would involve saving/loading stencils.

Songwind apogee 16:05, 27 June 2009 (UTC)




Layers Transparency locks that affect active layer Author(s): Todor Imreorov Current state: pending Pros: painted pixels on any layer can be used as a selection mask, it SIMPLIFIES the process Cons: defeats the purpose of having a lasso tool or selections

Use layers as transparency locks (or masks). The whole idea is to have transparency still locked (layer A+B), while you work on your active layer (C). 

File:Example.jpg

Having locks for specific layers is the gives you the ability to use layers as alpha masks. That way you can lock areas which you dont want to paint on, independently of the active layer. Two ducks with one stone- the artist gets transparency locks and masks in one. Putting multiple layers on "Lock" lets you combine the masks. Ticking an "Invert" box lets you invert the transparency lock.

I sat down and made a mock up to explain visually. Here: https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B4WmGlTeh8z8NDA3NDg4NzktYmMyYS00YjE4LWIyYjktZmM5Y2JjNDNiYjNj&hl=en

[edit] Zoom Enhancements

These suggestions seemed pretty simple, so I did not think a screen mockup would be helpful

  • Zoom to extents/fit in window: It would be nice to have a single menu item and/or hotkey that would show you the entire currently used canvas in one press.
  • Zoom area: Standard zoom tool, where you select a rectangle and it zooms in to that area
  • These two together are very useful for fixing detail work.
  • Zoom level indicator: when doing details at high zoom, you can't see the whole canvas, so it's difficult to know if you're keeping the right proportions, especially if you're zooming in and out multiple steps frequently. If there was a zoom level indicator then at least you'd know that you're at the right level. In other programs, this is usually in the status bar down the bottom, but if you want to save space, maybe it could go on the right end of the menu bar? Similar, but less useful would be a rotation indicator. --Naught101 05:47, 27 October 2009 (UTC)

[edit] Rotation Control

Would it be possible to get the ctrl modifier to work with Middle Mouse Button? For interactive rotation of the view. Right now it only works with space bar.

Submitted on behalf of Cessen (Project Durian) --SeanJM 13:28, 27 October 2009 (UTC)

[edit] Full Layer Control

A layer control window would vastly improve current layer functionality. IMHO good layer functionality is absolutely essential to any graphics/drawing app like this, and greatly simplifies complex image composition. Currently you can create and change to and hide layers but with no control menu or window you are blind, you have no positive confirmation which layer you are on. And you can't quickly change to a far off layer, you have to scroll through each layer. This is okay if you have only a couple of layers but a real mind-bender no keep track of if you have more than four layers or so. A window for layer control would also mean that you can easily drag layers up and down to reorder them, and to turn on-off various layers quickly, adjust transparency. A thumbnail of each layer would be nice, but in absence of that a simpler solution would be to just allow naming and renaming of layers.

Good layer support also can replace or augment the function of a 'background' image for tracing etc. You simply need to be able to import an image to a layer and be able to raise/lower the layer and adjust it's transparency.

Any graphics program like Gimp/Photoshop/Illustrator can be used as a model, all have similar layer tool windows. --ArtInvent 19:30, 4 September 2009 (UTC)

  • Layer Blending modes: It would be great to be able to select layer blending modes, like in GIMP/photoshop, so that you can have line art under a colour layer, and multiply them together. --naught101 24 October 2009.
  • Display Layer boundary: dunno how useful this would be, but it could give you an idea how big your layer is, so you can keep file sizes down --Naught101 12:48, 27 October 2009 (UTC)
  • Show Layer Size: draw a dotted line around the outer box of the current layer, like in GIMP. This would be useful for reducing layer size. Obviously it'd need to be redrawn every time the layer size changed..--Naught101 22:38, 16 November 2009 (UTC)
  • Lock Layer Opacity: With this on any further drawing on the layer does not change the opacity of pixels in the layer (if the area of the layer is currently empty, it remains empty). This should be a per-layer setting, probably with a button/checkbox near the layer visibility button. Gimp/photoshop have something like this --Naught101 12:35, 14 February 2010 (UTC)

[edit] Misc

  • Changing the windows from regular windows into pop-up windows when in full screen. (This will prevent the taskbar from forcing itself on top of the canvas. (By Clement Skau))
  • Add an optional cross-hair to improve visibility of the cursor position when the brush size is very small. I sometimes have issues seeing where the cursor is when using the pencil brush on already complex images, for example. (By Nathan Vegdahl)
Sounds like a good idea. Matumio 05:57, 21 May 2009 (UTC)


  • Interactive drag-based zoom and rotate. Right now zooming and rotating the image view is done via hotkeys. It would be awesome to do it with modifier+middle-button click-and-drag. It would make rotating the image much more like rotating paper to get a better angle to stroke from. (By Nathan Vegdahl)
That's what I have implemented in the beginning, but even on fast computers the current rotation code is too slow for interactive mouse-dragging rotation, sadly. You wouldn't want to use it like that. I'm sure it is possible to make this fast enough (even without using OpenGL) but it's probably lot of work. Matumio 05:57, 21 May 2009 (UTC)
Ah, yes. That makes sense. Well, perhaps some time in the future. :-) (Nathan Vegdahl)
Actually it is 'trivial' - just do an interactive rotate of a low resolution image, and update the rotation of the final image on mouse release (Tom Musgrove)
[edit] Brush Search / Canvas Brush Selector

File:Brush_picker.png --SeanJM 18:16, 9 October 2009 (UTC)

[edit] Scraps Browser

File:Scrap_browser.png

[edit] More Brush stuff

  • "go back to last brush" hot key - always remembers previous brush, making it easy to quickly switch between, say, a pencil and a paint brush.
  • auto-sort brush palette by most frequently used and/or last used.
IIRC early mypaint versions had brushes automatically sorted by usage. Highly confusing. Anyway, brush history (done the same way as the color history) should solve both points above. Portnov's branch already got one, but it also needs a hotkey. --maxy 14:24, 24 October 2009 (UTC)
  • Save Brushkeys WITHOUT associated colour (use colour from previous brush when restoring a brush.
Done. --maxy 14:24, 24 October 2009 (UTC)
Rock on :D --Naught101 11:59, 27 October 2009 (UTC)
  • Brush state indicator: a small panel with a colour sample, the transparency (in percent, I guess), and the brush size multiplier (D,F key multiplier) would be good to have. Perhaps in the same layout as the "Zoom level indicator" listed above.
  • Fix brush size indicator circle: currently it doesn't go smaller than about 5px, nor bigger than about 50px, even when the brush does. Can be confusing when you accidentally increase the brush too much.
  • Brush blending modes: possibly more important than layer blending. dodge and burn especially, for adding highlights and shadows.

Just a little list of thoughts. I'll come back and add stuff if I think of it :) --Naught101 10:57, 24 October 2009 (UTC)

[edit] Auto generate brush

I wish there is a randomizer of brush setting. It could be an "auto-generate" button in brush setting window/ edit section of brushlist window. When clicked, it will cycle all values in setting array, then randomize its value based on default min and max limit (probably set more strict limit for unexpected settings like radius, slow tracking & eraser or just exclude them). Or probably before implement that, maybe settings grouping need to be done for clarity first.

Purpose? a lucky "initial" brush for artist to start with and further tweak it. Reason? Current brush settings are too complex and scare most users (I think) --tumagonx 02:23, 10 January 2010 (UTC)

[edit] Autosave!

I'm finding MyPaint extremely enjoyable to use. The major drawback of this is that I get so into painting that I completely forget to save. Twice already I've had MyPaint crash after I finish something, having not saved for hours. Autosave every X minutes would be a killer feature. Especially if it worked for new (unsaved) documents - just save them to a temp directory or something. Inkscape also has a feature where if the program crashes, it dumps the working file to an auto-named file in the user's home directory. Might be rippable? -- naught101 11:36, 17 October 2009 (UTC)

Autosave is working in my branch (it's configurable and can be turned off). Mypaint crashes on my laptop, but not on other computers. Seems this is hardware bug. --Portnov 16:14, 26 October 2009 (UTC)
Good point about hardware. Regardless of cause though, it should be assumed that at some point, some how, something will screw up, and data will be lost. --Naught101 11:59, 27 October 2009 (UTC)
We currently have counter that return duration of actual drawing process, So I think an autosave based this duration (whether it's scrap or tempfile) is good. If this is no good (most likely :)) I still hope there is a non-obstructive warning periodically, maybe in form of floating text say "Dont forget to save your %duration% of work!" (like color ring but with a text instead) in top center canvas, flashed twice and slowly fadeaway. Or whatever it seems and let user decide whether he/she want to save or scrap it. --tumagonx 02:16, 10 January 2010 (UTC)
Flashing a warning goes against the principle that MyPaint should not interrupt the user's flow during the painting process. Autosave might be appropriate during a natural break of several minutes, though. maxy 09:29, 10 January 2010 (UTC)

[edit] UI stuff

Show a progress bar when saving: since there's no statusbar, this would be fine in a pop-up (since you can't do anything else while it's saving anyway)--Naught101 22:41, 16 November 2009 (UTC)

[edit] Other key commands

  • Control + Mouse Wheel could scale the brush. (In Blender, Down makes it bigger, Up makes it smaller. Perhaps it should be an option.)
  • Control + Shift + Mouse Wheel: Zoom but keep brush size relevant to the screen, so you could just zoom in to add details instead of zooming + making the brush smaller.
  • Control + Shift + Z as an alternate redo.
  • Tab - show/hide all dialogues (brush palette, layer dialogue, GTK colour picker, etc.), like in GIMP. This would make working in full screen much more quick and easy. Ideally, if there were dialogues open, tab would close them and remember which ones it closed, and if there were no dialogues open, it would only open the ones that it last closed.--Naught101 04:04, 31 January 2010 (UTC)

[edit] Real-time network collaboration support

Allow multiple users to share a canvas over the internet, along the lines of what OpenCanvas v1.1-b72 did. OpenCanvas used a client/server model, but perhaps a more peer-to-peer model would work better. When a canvas is shared, all users can draw on it by default and see changes made by others in real-time. I would love to see a well-maintained open source version of this. --TimothyFrisby 03:44, 26 May 2010 (UTC)

[edit] Stroke 'Engine'

I've just started dabbling in Alchemy (http://al.chemy.org/ but don't really care for the java implementation on linux. Honestly, some drawing 'effects' (affecting strokes) would really benefit MyPaint, so I propose a stroke engine as to strokes just as the brush engine defines brushes. Some neat effects drawn directly from Alchemy:

  • Displace :: stroke follows brush, 'displaced' along a predifined axis (as though by wind force)
  • Gradient :: (probably can be handled by the brush). Already many brushes [watercolor] mix existing surfaces. But this changes the actual color of the stroke. I'd really appreciate a brush that can assume the color of its surroundings yet [after] mixing pre-existing mediums.
 -- Use case: I use watercolors to mix boundary colors, then assume the [previously] mixed color to 'push' the gradient. This proposed stroke would automate this.  
  • Mirror a stroke :: all-around useful
  • Random :: Randomize existing strokes (don't think this is possible; MyPaint is a raster editor while Alchemy is a vector painter)
  • Smooth :: super useful, especially for mouse users
  • Color switcher :: script stroke / rainbow affects
  • Repeat :: use mouse input to repeat previous stroke
  • Mic input :: meh interesting! audio input -> brush size

[edit] Vector Editor

Save brush stroke as vector with attached brush data (xml/svg), Then reconstruct the image when loading - or not: save to disk for more speed.

Pros

  • select/edit by stroke/brush/color/region
  • export to inkscape for editing
  • infinite resolution (if using vector-mapped brushes)

Cons

  • Lots of work
  • Might slow down rendering (can be solved, though, by more work)


Questions

I. How to quickly layer new strokes over several thousand previous other strokes?

-- Keep 'current image' layer above the vector brush information. Then, when drawing a new stroke, rather than having MyPaint parse through thousands of lower strokes to interpolate color and paint mixing, MyPaint simply samples from the 'current image', draws a new vector, and updates the 'current image' buffer.

That's what old versions of MyPaint have done for undo/redo. Part of the code is still there for "modify last stroke" in the brush editor. The main problem is, re-rendering the old strokes is slow. So while you could in theory modify them, you would have to wait for all strokes above to render if you do. Nobody is that patient, even the last 5 strokes are were enough to render. --maxy 17:38, 9 November 2010 (UTC)

[edit] Multiple Keyboard Shortcuts

I'm planning on (hypothetically) purchasing some sort of tablet, and using my usb number pad beside it to access MyPaint functions. It would be great to have functions asigned to duplicate keys for (a) when I am without tablet (b) when I simply prefer using an external number pad (c) when I accidentally reach for my laptop keyboard anyway.

[edit] 6DOF Device Support

Support for a 6dof device such as a Space Navigator. Use the device to rotate, zoom, and translate paper while painting at same time. When an object is selected device can rotate, translate, and scale.

Pros

  • Fluid manipulation of both paper and selected objects
  • No need to access hotkey for zoom, rotate

Cons

  • Not a critical feature

[edit] Tracked feature requests

[edit] Frame

A "cropping frame" would be useful when saving/loading images. With the infinite canvas, this would crop the area outside the frame when you save to "flat" fileformats (PNG, JPEG, etc). Saving to PSD should keep all image data outside the frame, but set the canvas-size apropriately. When loading these fileformats, the frame would be set to the visible area of the file. (PSD:s would have layers sticking outside of the frame, while "flat" fileformats would only have image data inside the frame.) The frame could be visualized as a "walking ants" line or a semi-transparent black mask outside of the frame. It should be possible to toggle the viewing of it, and to resize/ move the frame freely.

This is a known missing feature, see also this bugreport

[edit] Recording painting process

Recording of a painting process with the possibility to replay it later would be a nice feature.

[edit] External lists of feature requests

That one was already done some time ago. maxy 18:30, 27 October 2009 (UTC)
    • Layer blending modes
We had a lot of discussion about this, will most likely have to wait a bit longer. maxy 18:30, 27 October 2009 (UTC)
https://gna.org/bugs/?15136 and http://forum.intilinux.com/mypaint-development-and-suggestions/layer-blending-mode/ --Naught101 05:29, 31 January 2010 (UTC)
    • Save Next Scrap
    • Scale image
This could probably be done with external tools, right? Like imagemagick? --Naught101 12:58, 27 October 2009 (UTC)
Only if you want to make it complicated... maxy 18:30, 27 October 2009 (UTC)
Personal tools