Bug 297971 - Opacity and Flow separation
Summary: Opacity and Flow separation
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Brush engines (show other bugs)
Version: unspecified
Platform: unspecified All
: NOR wishlist
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-04-12 13:51 UTC by SirPigeonz
Modified: 2014-11-20 22:34 UTC (History)
6 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description SirPigeonz 2012-04-12 13:51:54 UTC
User-Agent:       Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20100101 Firefox/11.0
Build Identifier: 

As discussed with deevad and me on IRC:

Opacity and Flow use the same curve, that make few things problematic when pressure or other sensor is used for "Opacity":
1. When Opacity and Flow are 100%, curve is used only for Opacity.
2. When Flow slider != 100%, curve is used only on Flow
3. User can't use Opacity and Flow at the same time for example: Opacity with Pressure + Flow with slider or Opacity and Flow with Pressure at the same time.

Reproducible: Always




n-pigeon: I only know from user perspective how it works. Opacity is like old Wash mode in krita and Flow is Build up mode
n-pigeon: Wash edits opacity of brush "mask", and build up edits opacity of each dab of brush
n-pigeon: if you use brush dab with black it is like 100% flow if you use middle grays it's like 50% flow

deevad: I agree with Flow and Opacity should have separate curve. I also miss to set -BOTH- on pressure :D

deevad: opacity is alpha on the composited stroke ; flow is opacity on each dab
n-pigeon: (Using traditional terminology) Opacity == Paint + how much Medium (acrylic, water, oil, turpentine ) ; Flow == How much paint is on brush.
Comment 1 Halla Rempt 2012-04-12 14:27:19 UTC
Thanks.
Comment 2 Paul Geraskin 2014-03-12 14:28:35 UTC
Here is some tests about Flow:
http://i.imgur.com/kkUcFbz.png
http://i.imgur.com/u5a8aVF.png

And here is the explanation what need to do if someone cannot find Flow :)
http://i.imgur.com/jsF8e7M.png
Comment 3 David REVOY 2014-05-22 13:55:37 UTC
>> Flow and Opacity need to have independent sensors entries

Today, I've hit a wall in my research for finding a softer preset with Pixel Brush. I wanted my preset to get a better response to the pressure, and a softer look.  I figured I needed pressure on the Flow value to reach the effect I wanted on my brush stroke, along pressure on the Opacity value. In Krita, a pressure curve on Flow along a pressure curve on Opacity still can't be set. Flow value is still linear in Wash mode and the slider is obsolete when switching to Build mode. In fact, when switching to 'Build mode' the opacity sensor transform into a 'Flow' opacity. 
Thank you for your consideration on this Flow/Opacity bug.
Comment 4 David REVOY 2014-05-29 21:48:05 UTC
Hi, I did research this evening on the code of 'flow' and 'opacity'. 
on /krita/plugins/paintops/libpaintop/kis_pressure_flow_option.cpp

I tweaked the line .91 :
>> painter->setFlow(quint8(getFlow() * 255.0));
into :
>> painter->setFlow(quint8(getFlow() * getDynamicOpacity(info) * 255.0));q

My goal was to use the datas of the 'opacity curve sensor' ( getDynamicOpacity(info)  ) merged into the Flow ( getFlow() ) linear value, and turn it into a dynamic setting.
Results are good : ( http://i.imgur.com/8uYMeEq.png )  I can get opacity pressure AND flow pressure with this ; using same dynamics ( witch is fine ). The problem of this tweak is it force all preset to do this usage. It's bad, and does bad things on other brush engine than pixel brushes. 

A checkbox to activate or not such a basic 'Flow' dynamics ( one who copy the 'Opacity' dynamics curves ) could be a cool enhancement of the pixel brush engine. But this , I have no idea how to do it. It certainly beyond my nooby skill.  :-)
Comment 5 Halla Rempt 2014-05-30 07:51:48 UTC
Well, we can do that, no problem :-).
Comment 6 David REVOY 2014-05-30 11:29:16 UTC
oh super, thx !

Here is a mockup idea, for Pixel Brush, Opacity panel :
__________________________________

Opacity:  ███████1.00███████
     Flow:   ███████1.00███████
☑ Flow Dynamics
__________________________________
Comment 7 David REVOY 2014-11-18 08:54:23 UTC
Video reference :
==============
FengZhu video – EP 34 - Photoshop & Wacom Basics Part 01 ( the video should start when he setup his basic brushes , at 11m34s )
link : http://youtu.be/eaH_WlD_rP4?t=11m34s
[ Note : Feng Zhu says a mistake about 'Flow jitter/dynamics' parameter in Ps , he says this settting is for "thick or thin" the start of his lines.  It's not, it's for the dynamics of the flow ( painting dabs individual opacities ). The size of his brush is managed by the top checkbox 'size dynamic'. ]

Description :
==========
His default brush-setup ( simple pressure curve on Flow and keep Opacity linear and control it manually with keyboard ) makes subtle flow variation on the start and ending of his strokes while keeping the core of the stroke 100% full opacity. FengZhu uses this for all his brushes according to this video and recommend it to his students, and channel suscribers.   

Problem :
========
It's currently impossible to replicate this setup in Krita because Flow and Opacity not being independants.  On Krita, you can :
- Or use pixel-brush Build-up , and get only Flow dynamics ( overwritting opacity sliders ) with 100% opacity locked. 
- Or use pixel-brush Wash, and get only Opacity dynamics ( and flow become linear ) with Flow possible to tweak, from 0% to 100%, but linear, no dynamics. 
I admit it's frustrating to cannot try this, and my workaround on previous comments ( #4 and #6 ) can't fix this.
Comment 8 Paul Geraskin 2014-11-18 09:13:49 UTC
Yeah. FengZhu is one of the best CG artists.

+1. We need to separete Flow and Opacity curves.
Comment 9 animtim 2014-11-20 22:34:48 UTC
fixed in commit 1104470ee0258c2ca884ed6d390e89e700d1e747