Ahaha, should’ve erased the arrows on the right side in my adjustments to the mockups.
But generally speaking I agree, Krita already has that “alpha” button, and I honestly like it the best out of other software - you have a clipping and locking buttons right on the layer and it’s very convinient and intuitive.
So I think if anything there’s already a visual representation and the “alpha” button is already familiar to the existing Krita users. I’m not sure whether most of them know why it’s “alpha” and what it does (to be called that way), but I bet they are used to it and know to press it for a particular functionality.
To me personally, changes to the visual representation have lower priority, I just would love that additional functionality of clipping to a layer below and to a group below as we already have a neat “alpha” button to do it in one button press.
To me it just makes sense: you have that button - you press it - and now it’s clipped. But without creating a group it won’t work that way even though the system lands itself for that (non-group) clipping functionality really well already without getting in the way of people liking the groups imo.
Hi, my English is not very good so I will write in Portuguese:
Pensando um pouco no UX eu acho que seria legal criar um botão de “clipping mask” na layer. acho que se colocasse um botão amplo no lugar do botão de bloquear camadas ficaria bem intuitivo
eu não gosto das layers se distanciando para a direita, pois com o uso, vai sumindo da visão, acho que um ícone de seta entre as camadas funcionaria melhor.
outra coisa que pensei é usar ícones com cores para indicar, afinal somos artistas e nos damos muito bem com elas. acho que o botão de trancar o layer na miniatura da camada ajudaria também a organizar. ele pode ficar oculto quando as camadas estão desbloqueadas e aparecer quando passar o cursor do mouse em cima, indicando que vc pode bloquear clicando no ícone, e quando bloqueada, aparecer sempre o ícone de cadeado dentro da miniatura da camada.
meu sonho é conseguir criar um clipping mask com 1 click no krita hahahah
o ícone do clipping mask pode conter cores quando ativo e ser diferente para a camada mestre, assim temos um feedback visual bem limpo de qual camada é a “mestre”.
Acho que essas implementações seriam boas tanto para usuário de longa data do krita, quanto pra novos usuários. Pois parecem deixar as coisas mais intuitivas, e fácil de entender visualmente.
Inclusive pode ajudar a adptar quando o krita tiver uma interface amigável para Android e outros dispositivos moveis. Pois vc consegue aplicar com 1 click sem necessidade de teclado, e consegue entender nitidamente o que está acontecendo ali. Mesmo que houvesse uma redução da interface.
Essas ideias não vem de outro software. O que pode acabar dando um destaque para o krita com uma maneira única e intuitiva de organização.
Did someone already suggest to display the clipping mask just like Krita displays any other mask?
I like the way it is now, simply because it is consistent with how all the other layers work but that aside reading this whole thread makes it looks like people spend most of their time creating clipping mask instead of actual painting. I use alpha inherence a lot but it doesn’t even take a fraction of a percentage of my time, when working on a painting whereas some people make it sound like it’s the crucial time saver that stops them from finishing their projects in time. When I switched to Krita it took me maybe five minutes to understand how they work and then I never thought about it ever again because it just works. If it’s all about how much space it takes on the screen, maybe making the thumbnail or indentation smaller is the better solution? Instead of implementing a feature that’s already there but looks different.
The other masks are attached to the layer but the clipping mask is not. If it is placed below, the mixing sequence can be confusing. And blending mode should not be available either.
It would be at least consistent with how Krita displays every other masks. Enabling blending modes for that doesn’t sound too hard since we mostly talk about how things are displayed in the layers docker not how things work in the background.
The first misunderstanding is why it is a “mask”? It is because other software calls it “clippingmask”. I actually don’t like this name very much.
In krita, it may be called “inherit alpha (one layer)”, so its behavior should not be consistent with “mask”, but should be consistent with “inherit alpha”
Regarding the order, normally it should be from top to bottom, but according to your method…
In addition, there are also issues such as nesting and using to layer groups
So we’re really getting into the weeds here now, but IMO “mask” is the proper term, and “inherit alpha” is a tiny bit confusing. “mask” implies modifying the existing alpha with another - masking it . “Inherit alpha”, to me, would strictly speaking imply replacing the alpha of one layer with that of another altogether. I mean, in practice it’s pretty clear what it means, but IMO “mask” is a pretty well understood term.
What I actually mean is: the distribution of the layer should be set according to the specific situation, not the name “mask”
The suitability of “mask” is not under discussion
I personally don’t particularly care how it’s displayed (unless it’s made worse ofc) or semantics and technicalities of what a mask or alpha is or what have you.
But a functionality of just clipping one layer to the layer below with a button press without needing groups would be very lovely and doesn’t seem like something that will get in the way of people who are used to grouping things.
On something simple that is just one object or have 2-3 layers overall why would you need groups?
Being able to clip a layer to a group would actually be a time saver, tho.
Say, I have a bunch of layers grouped as background, and a bunch of different goups for individual characters, that are grouped into one “characters” group. Then I can create a layer with a blending mode or a filter layer, clip it to that group and affect all of the characters at once without affecting background with one button press. Without any more nesting groups just to make inherit alpha working the same way.
Os ícones de ordem podem ser na lateral da camada tbm, ou no próprio botão.
mas ter o botão de clipping mask e um bom feedback visual ajuda muito a organizar o projeto
That’s because inherit alpha is not clipping, it’s literally inheriting alpha from all layers below. And you can make it work without a group, it’s just if you have fully opaque background everywhere, it’s kind of useless.
No, actually, the “mask” term is confusing, unless you call the base layer “clipping mask” and all the rest of layers “clipped layers”.
The problem with the mask idea (CC @TheTwo, @Takiro) is that usually, there is a base layer, and a mask that influences the look of the base layer. (Only Colorize Mask doesn’t work like that, it’s a bit of an odd one out, but we’ll talk about it later). So there is Transparency Mask, which influences where the base layer has alpha; there is Filter Mask, which influences the look or the colors of the base layer; there is Selection Mask which… well, belongs to the layer, I guess, at least. Colorize Mask is kind of its own layer but it does render underneath of its parent (= base layer), which means it’s more consistent with people’s expectations, since it shows up in the Layers docker underneath the parent.
In case of Clipping Mask, you either treat this name as a name of a method, or as a name for the layer on top, that borrows the alpha from the layer below. So as you can see, if we define mask as “something that influences the base layer”, Clipping Mask is the opposite of that, because it’s the base layer that influences the mask. One could argue that Colorize Mask is like that as well, but in case of Clipping Mask we have this additional issue of rendering order that would be counter-intuitive if we put it below the parent/base layer, as we usually do with masks.
We could do it the other way around, as in, the base layer would be the mask of the, let’s say, highlights layer, but then we get another problem, which is the fact that there is only one layer that can be a parent, which would limit the clipping mask to only one clipped layer. That’s kind of not neat at all…
(I was thinking about how Krita renders layers and how maybe the Layers docker could fake the clipping mask while the underlying model would still use groups, which would help with rendering. That could be some direction to explore but I don’t really know the layer stack that much, tbh. Though, note that Layer Styles exists, despite not being compatible with Krita’s layer stack ideology… and are basically one of the slowest things there).
@johnmatosd it’s better to not use colors; first, because colors in the GUI makes your eyes don’t see the colors on the canvas properly, and second, because some people are colorblind and there is no reason to make the GUI harder to read for them. For reference, I put your screenshot into the colorblind filter, see how it looks for a colorblind person:
It’s best to rely on the icons themselves, because using colors might actually hide the problems with the icons themselves if you rely on the colors to much. At least that’s what I think. Something like Blender does, which is distinguishing groups of icons by colors, is fine (since the colorblind people can just use the icons because the icons themselves are good), but we don’t have any colorful icons in Krita anyway, so adding them in this one place would be a controversial choice.
Ok I have a better idea. It just needed some thinking outside of the box, you’ll see why… I don’t have a mockup picture yet, will do tomorrow.
Let’s say we have “Base Layer” (BL in short), and then layers A, B, C, D and E which are clipped to Base Layer.
Let’s first consider BL and A. Let’s use the “BL is a mask” method. So now A is the parent of BL. There are no issues: The rendering order is consistent with expectations. The relatiomship is clear too.
Then we want B to ve clipped to BL too. Now we get the problem I talked above: two parents of one mask (BL). …Or do we? Because if B is clipped to BL, it is also clipped to A. Which means we can make B the parent and A should be first mask/child and BL the second one (counting from the top). Again: relationship clear, rendering order intact.
It would look different from how other apps are doing it, but it would be perfectly exchangable, I guess. And on the bright side, it would be different from how ither apps are doing it I think it kind make more sense than the others.
It would of course have some kind of icon of something and be easily accessible.
What do you think?
I mean we still haven’t established what exactly is wrong with having groups (my current understanding is that it takes too much mind energy, and maybe a little too much vertical space in case of multiple clipping mask used just for one or two clipped layers) and if a new function that can do all the same things as the old function but differently is really needed (it’sgenerally something not to do), or if it’s possible in Krita without huge refactoring of the layer stack, but since we talk esthetic now, this is my current idea.
Do you mean this? It seems to be hierarchical, and there is no room for inserting other layers in the middle
The effect should be similar to “transparency mask”? Not through grayscale, but through alpha
There is another problem, if A is a group, and there are multiple groups in it. BL will be indented far away, right?
I think I’m misunderstanding, but doesn’t this only work if, in this example, A occupies an alpha identical to BL? Wouldn’t that not work unless you fill in the entire clipped area on layer A, something which rarely ever happens?
I can’t speak for others, but for me the interest mostly dies with the (dead) cross-compatibility sister thread, since as you said, it is redundant. Other than that, it’s just one thing that bloats the layer stack unnecessarily IMO. Mind energy is a non-issue lol, and I think what most here want is just the convenience/cleanliness.
But yeah, the bloat is a topic for another thread I suppose, but mainly I think the indents are too fat, which is something that I also saw discussed elsewhere, and I really don’t think layer lock, alpha lock, and inherit alpha all need to be visible on every layer at all times, regardless of whether they’re being used. Also IMO it feels a bit arbitrary that these three are forced on in this way, while other equally significant layer properties, like blending mode and opacity, are relegated to the area above the layer stack. It’d be best if it was customizable to allow any or none of these to display on the layers directly, or be kept out of the way in the upper area.
I’d definitely say horizontal clutter is much more of an issue than vertical clutter, especially since the layer docker is usually much taller than it is wide. As it is now, without having my layer docker wider than is comfortable, the space to view layer names quickly becomes tiny with the indents required by inherit alpha groups + groups needed for organization.
Sorry for going off topic, maybe I should start another feature request for all this, since the previous discussion I saw was also slightly off-topic (it was in my thread requesting users be able to toggle layer info display on layers).
I think the only thing that should be changed ui wise is the icon for inherit alpha. Since there would be 3 modes (normal, inherit alpha, inherit from 1), that “button” would have a tristate. If you click it, the icon and the state rotate.
For the user that is the only thing that would change. That and the effect of the new mode.
I think that keeping that simple is the best. I took a quick look at the code that handles that and it can be a bit intricate.
I also think that it should be useful to have kind of a table that explains what should happen in every combination of modes between two layers. For example:
if the top layer has no inherit alpha, just paint the layer
if the top layer has normal inherit alpha, take the alpha from everything below (current behavior)
if the top layer has inherit alpha from 1 layer, things get more complicated:
if the layer below has no inherit alpha, then take the alpha from it
if the layer below has normal inherit alpha, then use its inherited alpha. The result would be the same as having normal inherit alpha in the top layer.
if the layer below has inherit alpha from 1 layer, then we should go down the stack until a layer with no inherit alpha or with normal inherit alpha is found. This is the most complex case (well, maybe when you start having groups into account, more complex cases appear).
Now, what should happen when you put groups into the mix?
I don’t see a big problem with this. The mixing of groups is from the inside out. Mixing on the outside does not need to take into account what is inside the group, but considers it as a whole.
groups make the task complicated when you don’t need them.
if you only have the layer you know you are creating everything on that layer, if you disable clipping of the layer that is linked to it, this layer becomes a “base” tabem and you can freely work on it. in my workflow sometimes I need to disable the cliping mask to work on the layer, base observing the layers above, this is quite complicated to do in krita.
I used google translator, sorry if the translation is confusing.
I am envisioning a new possibility: “clone transparency mask”. It is first a kind of “transparency mask”. Then it can clone the alpha of the specified layer. (No, if you directly inherit alpha, it will cause nesting. It will transform according to the original pixels in the layer.)
In this way, we can say that we can inherit the alpha of any layer. When exporting, it can be compatible as a normal “transparency mask”.
An additional option is “invert” so that we can erase instead of inherit
And it leaves some room for expansion, such as setting up multiple sources in “Clone Sources” and performing Boolean operations (just like adobe ae)
E:
What is “raw pixel” :
Just like the content of a layer thumbnail, it is not affected by filters, inherited alpha or even layer transparency (layer transparency is generally used for blending, but if you want to include it, you only need to use multiplication)