drawpile / Drawpile

A collaborative drawing program
http://drawpile.net/
GNU General Public License v3.0
1.03k stars 131 forks source link

Changing layer opacity locally. #960

Open abrasivetroop opened 3 years ago

abrasivetroop commented 3 years ago

I would like to change the opacity of a layer locally but unfortunately it is controlled by the operator. A lot of people draw a quick sketch and then reduce the opacity of that layer and start drawing on top of that layer. But this is not possible in drawpile because it would change the opacity for all users :( I was wondering if it is possible to implement this feature? It would be so good. Thanks!

P.S. - Thanks for this great app! I really love it :)

blurymind commented 3 years ago

Imagine having little link toggle buttons to different sliders in drawpile that let you sync/unsync parameters from the server

On Thu, 18 Mar 2021, 00:52 abrasivetroop, @.***> wrote:

I would like to change the opacity of a layer locally but unfortunately it is controlled by the operator. A lot of people draw a quick sketch and then reduce the opacity of that layer and start drawing on top of that layer. But this is not possible in drawpile because it would change the opacity for all users :( I was wondering if it is possible to implement this feature? It would be so good. Thanks!

P.S. - Thanks for this great app! I really love it :)

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/drawpile/Drawpile/issues/960, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABRRWVITUW2V37YGMZUUQPDTEFFD3ANCNFSM4ZLUBOIA .

notfood commented 3 years ago

As a workaround, you can use a big eraser with lower opacity and flat drawing mode. It'll lower the opacity of whatever you have.

Wade821 commented 3 years ago

This is more trouble than it's worth. It'll lead to things looking different for different users and possibly lead to confusion trying to figure out how to reset it back to the operator controlled view. I personally don't think it's a good idea as it detracts from the idea of a drawing board for many people. As @notfood said, that would be a better work around to do that.

As such, I'm going to change the labeling for this unless we have a better reason to use it. Feel free to discuss further.

askmeaboutlo0m commented 1 year ago

(I've taken over development on Drawpile, so I'm going through these tickets and organizing them.)

Drawpile 2.2 has local canvas backgrounds to solve a similar issue: you want a different background color, but only operators can change it. Wanting to change the opacity of a layer seems like a very similar case to me, I think it's just a matter of figuring out a good user interface for it that isn't confusing. Allowing arbitrary parameters to be synchronized would be technically possible, but would be overkill.

Then again, with canvas backgrounds there's no workaround, with coloring sketches there totally is by just lightening up your lines. So I'll leave this open for now, just relabeling it.

abrasivetroop commented 1 year ago

(I've taken over development on Drawpile, so I'm going through these tickets and organizing them.)

Drawpile 2.2 has local canvas backgrounds to solve a similar issue: you want a different background color, but only operators can change it. Wanting to change the opacity of a layer seems like a very similar case to me, I think it's just a matter of figuring out a good user interface for it that isn't confusing. Allowing arbitrary parameters to be synchronized would be technically possible, but would be overkill.

Then again, with canvas backgrounds there's no workaround, with coloring sketches there totally is by just lightening up your lines. So I'll leave this open for now, just relabeling it.

Hey! Thanks a lot. First responses to my request was quite obnoxious and they immediately labeled it as Invalid without even giving it a thought. This is could be a very useful feautre if implemented right.

Wade821 commented 1 year ago

(I've taken over development on Drawpile, so I'm going through these tickets and organizing them.) Drawpile 2.2 has local canvas backgrounds to solve a similar issue: you want a different background color, but only operators can change it. Wanting to change the opacity of a layer seems like a very similar case to me, I think it's just a matter of figuring out a good user interface for it that isn't confusing. Allowing arbitrary parameters to be synchronized would be technically possible, but would be overkill. Then again, with canvas backgrounds there's no workaround, with coloring sketches there totally is by just lightening up your lines. So I'll leave this open for now, just relabeling it.

Hey! Thanks a lot. First responses to my request was quite obnoxious and they immediately labeled it as Invalid without even giving it a thought. This is could be a very useful feautre if implemented right.

The problem was that Calle was barely around to do development work. With a timeframe potentially spanning anywhere from a couple of months to years, requests for changes that could potentially be obnoxious to implement wasn't practical and thus labeled as invalid. Now that it has changed who is the main dev, we have more options.

And while it's possible to do... what happens if a board operator changes the opacity after you've set it locally? What happens if the board operator changes the blend mode? How many settings should be made locally adjustable if the board operator can change them, and which mode should take priority? How does one display the current settings that the operator has set vs what you have set? I still don't think this is a very practical request in the long run and just leads to a more confusing, complicated interface. That's why I said before, feel free to discuss and offer ideas on how to implement it in a way that makes sense and keeps things simple.

askmeaboutlo0m commented 1 year ago

Yeah, I agree with the issues too, I'm not sure how to solve them in a sensible way. I'll leave this standing as-is for now.

leandro2222 commented 1 year ago

I totally agree. People need to change the opacity multiple times while drawing to see/unsee the rough sketch lines so imo it should be local (each user controls its layers opacity) no doubt.

I made this same request in this old post if someone is interested: https://github.com/drawpile/Drawpile/issues/445

askmeaboutlo0m commented 1 year ago

Well, they don't need to change the opacity to lighten the lines of a sketch, they can also select the area they want to lighten/darken, pick a lighter color and Edit > Recolor Selection (Ctrl+Shift+Comma). The problem is if they want to do it but they can't because the session uses some permission structure that doesn't let them or because they're drawing with multiple people on the same layer.

The solution is tricky because of the various issues listed above. It definitely shouldn't be local-only, that would make it effectively impossible to ever sensibly do shading and lighting in Drawpile because it'd keep forgetting your opacities every time you reconnect. It must either be global-only, as it is right now, or have some kind of local override, which has unsolved problems.

askmeaboutlo0m commented 11 months ago

I've been told about a feature in Clip Studio Paint that was described to me as "bluescaling". It lets you turn the contents of a layer light blue, allowing you to sketch over it easier.

That seems like it could be a solution: instead of letting you control opacity locally, there's a "sketch mode" you can activate on layers, which will turn down the opacity and make it blue or something by default, with the specific parameters being adjustable. I think this would solve the issues with UI complexity and such, since it's a clearly distinct mode, rather than some overloading of the existing opacity controls.