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] 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?).
Straight lines should simply never use pressure sensitivity because you can't control it reasonably well. What I'm more worried is about the unusual speed input that the brush will see, but then again, the users simply could choose a brush that is not speed dependent. Matumio 15:34, 21 June 2009 (UTC)
Something like ruler tool would be useful in a lot of ways. For example to draw strip/comics frames. So I would say it is needed anyway. Pechenje 16:13, 7 November 2009 (UTC)
  • Selectable non-destructive background layer with a pre-set range of alpha-channel perspecive images (Example). This would force them to be used for specific resolutions though (unless they where scalable vector images...)
  • A dynamic changeable perspective grid. In such a tool you would place one or more vanishing points, be able to drag them around in order to set up your grid.

Griatch 14:26, 21 June 2009 (UTC)

[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)

Possibly also using layers as masks, like the quick mask in gimp - turn on the mask layer, draw the mask, with hard or soft edges as needed, and while it's turned on, painting on a lower layer will be multiplied by ( 1 - opacity )%...--Naught101 10:48, 28 January 2010 (UTC)

[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.
We discussed this in IRC, actually the problem was rather to discover that zooming keeps the cursor centered. Solved by saying so in the label. Matumio 17:56, 11 July 2009 (UTC)

Songwind apogee 02:20, 21 June 2009 (UTC)

  • 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)

Have you ever tried "pick layer at cursor"? maxy 05:54, 5 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)

How the heck did you manage to crash mypaint? And which version, and what error message? (Btw. there is already autosave in iportnov's branch, and it is highly annoying. Personally I have never managed to crash it, and some other long-term users report the same. Are you sure your hardware is okay when under load?) --maxy 20:38, 17 October 2009 (UTC)
It hasn't happened since, and it may have not been mypaint's fault: I left the room, and when I came back, the program was gone. Since I hadn't opened it in a terminal, I didn't get any error messages. Perhaps better than autosave would be something like inkscape's save-a-dump-on-crash? --Naught101 10:39, 24 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)

implemented in http://gitorious.org/~lukacu/mypaint/lukacu-mypaint/commits/saving and it actually works ... but we will probably have to rethink a few things to make the saving process optimal --Lukacu 11:20, 10 January 2010 (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.)
Not so nice, because Ctrl+Wheel does zoom in most apps. Currently wheel alone does zoom already, but actually wheel alone shold scroll... maxy 19:04, 15 December 2009 (UTC)
  • 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.
Why not simply press Y instead? And are there any apps allowing to do it that way? maxy 19:04, 15 December 2009 (UTC)
yeah, ctrl+shift+z is often re-do, check out http://en.wikipedia.org/wiki/Table_of_keyboard_shortcuts --Naught101 04:04, 31 January 2010 (UTC)
I see. Done. --maxy 07:59, 31 January 2010 (UTC)
  • 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] 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] 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)