Research [you can skip to the part called "Current ideas"]
Medibang
"Add panel material" to the layer (so not a separate kind, not a group layer)
- only "inked" panels (aka looking as if made with a line tool, standard simple vector lines)
There is a knife tool that cuts frames, you can select a width of the gap and just run the knife over it.
Shift + drag => line at an angle. Standard is just horizontal/vertical. (I guess it's debatable).
"Operation Tool" adjusts just one panel.
It seems to be just a layer with lines around the frames. Looks like Krita's vector layer with additional Knife tool to cut rectangles and polygons.
Workflow: create frames, then fill inside them and use clipping masks over those filled polygons to draw inside the frames.
Research questions:
- is there a way to adjust multiple frames at once? (For example make bigger page margin at one side, move the top border down, etc.)
- is there a way to restrict painting inside a frame? It doesn't seem to be...
It's simple, but seems to be very limited. CSP had much, much more functionality.
Good for usability, but Krita's needs to be better.
Clip Studio Paint
Video link: https://www.youtube.com/watch?v=zJOO4Tn9HIE
Two "toolsets": create border, and cut frame.
Create border:
- rectangle
- polygon
- freepath
- you can snap to things (for example rectangle to guides)
You can adjust frames using "object tools", which are probably just vector tools.
In CSP, you can get "pencil border" (border drawn with a custom brush) by using the frame as if it was an assistant.
In Krita, maybe we could have both, pencilling by hand like that (good for variable width! - needs kind of temporary assistants) and automatic penciling (the same as with stroking the selection).
It allows constraining the frame to aspect ratio. Is it really needed/useful? (Probably not a priority).
Frames are inside "a folder", which I guess is a group layer? And that group layer contains painting that goes into the frame. (This seems to be a bit of a limitation).
Cut frames tools:
- divide frame folder (divides, and one frames goes into one folder, the other to another folder).
- divide frame border (divides, but doesn't split into two folders, so you can have one big painting showing through multiple frames (as if it was a window with dividers, every part of the window shows different part of the outside))
- note that you can divide in multiple ways: straight line, polyline, B-spline (no freepath? and why B-spline cannot be used to create a frame?).
- there is a gap setting so you can have standarized gaps sizes (for example 10 for standard gaps, 15 if you want some bigger one - it's common to have multiple widths, but it's good to have them consistent)
There are layout templates available. Possible new resource type?... (Krita does have document templates, but that's different, you got to choose it before you start a document). Also the layouts automatically adjust to crop marks/margins on the document.
To research:
- how the "adjusting multiple frames at once" work with frames on the same and on different "folders"
- how it works after moving one frame
- how it works when you have one row with frames and then other rows/frames below -> in CSP it does actually adjust all of them to keep the gap exactly as it was
- how it works in all other untrivial situations
- how to stroke the border with a brush in regards to all the new folder-based knowledge
- cutting through two frames so there is X (there are four frame parts after that, not three)
David Revoy
Krita Artists
Needed functionality
- new special layer type (so it's all easy to use) - or something else?
- stroke with brushes after creation (it will make the layer into a paint layer, until we get brush vector lines) (it should work the same way how now we can stroke selections) - that will make it possible to make pretty "pencil" frames
- should be possible to use NO frames (see https://www.peppercarrot.com/en/webcomic/ep36_The-Surprise-Attack.html)
- wondering, how to make it possible for some things to go out of the frame? so one frame border cuts, but another border doesn't cut. -> needs lots of thinking on that. (examples: see frames 4 and 5 from the end in https://www.peppercarrot.com/en/webcomic/ep36_The-Surprise-Attack.html, the one with text "I's working!"; the same happens on page 5, and page 9 with her hat)
- use vector tools + transform tool on frames (familiar tools, especially transform tool)
- every content for the frame should allow for multiple layers of all kinds
- frames over other frames (no gap between them, and one clearly covers another)
Frames have outside, inside and a border. <- that's an important clue, even if it sounds obvious. Medibang's comic frames are just lines; we want them to help define areas of opaqueness, but with enough flexibility to sometimes use it and sometimes not. Or to have frames that are kind of in the background of other frames, etc.
Current idea (12.04.2022)
Parts
Layer
The most complicated of all of them.
- hidden or embedded vector or raster layers
- "vector or raster" -> it's a bit like a Local Selection Layer, it can be either vector or raster, depending on what the user wants/needs
- one paint or vector layer for frame borders
- one paint or vector layer for "backgrounds" (the insides of the borders; used both for actual background, and/or for alpha inheritance)
- user just creates new child layers and they appear automatically clipped to the panel borders
- there is some way to create "backgrounds" for panels automatically, even for raster paint borders, but the user can "unlink" it and draw or edit it themselves?
- calculating backgrounds for raster borders happens when the user requests, maybe? or automatically, only on idle, after detecting a change
- the frame borders and backgrounds layers must be somehow accessible to users but shouldn't bloat out layer stack
- the frame borders and backgrounds layers can be rasterized by the user if they wish to
- so, the composition:
- first the background (visibility can be turned off)
- then the content of all child layers, clipped to the background (alpha inheritance can be turned off)
- then the borders (visibility can be turned off)
- this can actually hold multiple panels (this seem unnecessary but it is quite important for some (allows for "separated by sketch, color, inking" workflow instead of "separated by panels" workflow), and should be easy enough to keep that I think it's very reasonable to design with it in mind).
- nice example in current Krita, note that the vector layers with borders and backgrounds will be kinda integrated into the Panel Layer:
Knife tool
- allows cutting through the shape to create a gutter
- it's kind of like making a boolean operation with a rectangle shape being subtracted from the general panel shape
- in the tool options, you should have an option: either the shapes will stay on the same panel layer, or not
- in case of "not", layers inside are duplicated or created clones (also an option)
- backgrounds: depends on the layer settings, if linked to panels, then calculated again
- user chooses the width of the gutter (horizontal, vertical, or "closest", which can mean different things depending on the angle of the gutter)
- possibly later select a gutter and change the width? -> this must be done *somewhere*, here it would make sense, but how it could guess that it's a gutter and not something else?
- it will be in the "vector tools" category (on top of the Toolbox)
- +Shift makes it go in 30 or 15 degrees (by default any direction, because it's very common for panels to have at least some edges in an angle, plain rectangles are often boring, also it's the general theme in Krita that no Shift means all angles and Shift restricts to specific angles).
Improvements to vectors for panels (points/edges binding)
- if you create a panel using a creator, or if you use a knife, then Krita will by default bind some points together (in an intuitive/smart way, which will be defined by the binding and clear to the user)
- user can edit the bindings
- bindings might be different: absolute, or maybe horizontal/vertical (will need user testing to determine fully)
- that way if the user uses a standard vector Edit Shapes tool, they can move one point and another will follow in a way that makes sense (to keep the gutter nice, to make things parallel still parallel, etc.)
- would that be available only on panel layers, or on standard vector layers too?
- if only on panel layers, it can be some kind of meta info
- tools related: knife tool, edit shapes tool
- there must be a way to "unbind" points or to "bind" them together layer
- it must work across layers (because it must work with panel shapes, even when they are on different panel layers)
- needs thinking about a standard way for every tool to interact with it (for example, if user moves a panel using a Select Shapes Tool, does it move the other panel too, or maybe it only makes the bound points update their "distance" to the points in the shape).
Panel creator
- it's definitely going to be one of the last tasks, because it's not necessary to use the system in general, it's just a shortcut, a "syntax sweetener"
- user can define a whole layout based on some templates, and then edit it in Krita
- it should speed up the process of setting up the panels
- it will include creating the edge guides (guides that show you where the edges of the panels should be) (of course it can be disabled too)
- the layouts should include both very simple layouts (like, 3 rows with 2 panels in each) and more complicated (3 in top row, then two rows of single long horizontal panels; or a page with panels on top of other panels)
- the complicated ones have two functions:
- to show how complex pages you can create
- to speed up creation of such complex pages
- choosing the default layouts will require some research to be not overwhelming but useful
- it would be good to allow users to create their own layouts definitions (it could be either a true resource or a resource a bit like document sizes) -> not sure about this, it would make sense to make it a true resource but I don't want to create too many resource types -> it's not the same as templates, because templates also include document size, color space and lots of other things (but will suffice at first, I guess)
- note that the layout will adjust itself to the page size, with the margins the user defines
- it will automatically "bind" appropriate points to allow easy handling (as explained in "Improvements to vectors for panels")
- user will have an option to decide whether they want every panel on the same layer or not
- example plugin that does something similar (only with very simple layouts): https://www.youtube.com/watch?v=Pz0sG--VhBA
Edge Guides
I'm not sure yet if we'll need anything special.
Maybe it will be enough to just use the guides we already have.
Another option is to have something very similar but rectangular, possibly defined a bit like grids (numerically, instead of freehand).
Missing/unclear functionality
Here is a list of functionality which I'm not sure how to implement to complement the system.
- "spillover" - it's somewhat common for a comic artist to make most of the content of the panel to be inside the panel, but parts of it "spill out" over the background or other panels.
- example: heads of characters on the last panel here: https://www.peppercarrot.com/0_sources/ep36_The-Surprise-Attack/low-res/pl_Pepper-and-Carrot_by-David-Revoy_E36P14.jpg
- option 1: do nothing, artists will have to just paint over the panel on a normal layer and make sure the content is nicely cut to the panel edges where needed
- it's ok to not support 100% of all kinds of workflows
- maybe it should be easy to duplicate the panel layer, hide borders and backgrounds, then let's say move the top panel border higher up so the content will appear on top of the border (because the border is drawn by the panel layer below)...
- actually it won't really fix the problem because the border drawing will still be incorrect on the bottom of the panel (imagine a thick, semi-transparent custom border, it will look correct only if part of the image is blended underneath the border on the main panel layer... I will try to create and put an image here later showing the problem).
- option 2: (rejected by me) make it configurable like this: "this edge can be spilled over, and this one can't"
- it would be difficult/non-trivial to implement
- it doesn't take custom shapes into account
- option 3: allow custom ("un-linked" to the panels) backgrounds, either vector or raster; if vector, the user can just move the "spillable" vector lines further away from the panel border so it can spill over. But it's not ideal either.
- in case of panels with borders, the content won't appear on top of the border, but below it, which is not the intended look.
- joining panels together - in case the user changes their mind (or modifies a template) and wants just one panel instead of two
- maybe just in a right-click menu? on a layer? but how can it calculate which points should stay?
- needs more thinking
- assistance on raster drawing borders
- should work just like assistant tool's assistants
- somehow work automatically when the user wants to edit the borders in the raster mode
- shouldn't affect user's work on other layers, including child layers -> or, should it? what if the user wants to draw the border on a different layer, not the panel layer?
- note to self: that special kind of panel that is divided into multiple (though should be possible to make, with some imagination, maybe we shouldn't do anything special for this, it's not even a workflow but just one kind of panel that I've seen once): example: second panel here: https://krita-artists.org/uploads/default/original/3X/7/9/797fcfc511840a171d75cf4dacc390237a94b967.jpeg
Workflows
Basic
- (optional) sets up edge guides.
- user creates a new panel layer.
- creates a new shape there using one of the standard vector tools (rectangular tool, bezier tool, polygon tool, even freehand path tool).
- uses a knife tool to cut it into two. Uses option so that they are on two different layers.
- uses a knife tool to cut one of the panels into two. Uses option so they are on the same layer.
- adds a layer to the panel that is alone on its panel layer. (so, the layer is a child of the firstly made panel layer).
- paints on it. The content is automatically clipped to the panel.
- moves to the other panel layer, creates a new layer. Paints a landscape. Because it's on the same layer, the landscape shows up on both panels.
- cuts the first panel with a knife tool again, into two panel layers
- continue working until satisfied
Using a panel creator
- uses a panel creator to create a layout the most similar to what they intend to use.
- edits the panels to their liking (removes a panel, joins panels, moves them around, moves the points so the panels are "skewed" and not just boringly rectangular)
- continue working
"Separating by sketch/color/inking" workflow
Some users don't make group layers for panels, but group layers for sketch/colors/inking. To allow this workflow, the user can create all panels on one panel layer.
- creates panels, either using a panel creator or creating from scratch
- all panels are on the same panel layer
- inside the panel layer, user can create group layers with sketches, colors and inkings
- the alpha inheritance works on all panels indiscriminately, so there is additional nuisance of making sure the image for one panel doesn't spill over to another panel (but for non-zero width gutters, it should be fine enough)
Priorities
Easy of use for both beginners and advanced users
Should be flexible enough to allow various things
Shouldn’t be too complicated for a beginner
Should allow very fast set up!
One click creation (unlike Colorize Mask which is great but can be confusing, you need both a layer and a tool? But options for the layer are in the tool… weird!)
All beginner-used options should be very easy to find
All advanced options can be hidden away, maybe in Properties
All options that are often used or toggled or switched should be easy to access
Timeline
Phase 1: Layer
- a new type of layer
- on/off of visibility of frames
- on/off of visibility of backgrounds
- on/off of alpha inheritance from backgrounds (even if invisible, can be useful)
- vector and raster counterparts
- composed: backgrounds; child layers; frames
Phase 2: Knife tool, easy changing of panels
- special vector features!
- new tool: knife, to create gutters
- binding vector points together to move around (automatically if you use the knife tool)
- knife tool: +shift to get special angles
Phase 3: Easy panel creator, rectangular guides
- new dialog to create panels
- edge guides (if deemed useful/necessary to make)