-
Clover Paintはスマホ向けアプリとしては比較的豊富なブラシ設定を持っています。
ここではブラシで設定できるパラメータについての完全な説明を行います。
かなり難解な内容も含みますが、理解しなくても利用はできるのでご安心ください。
近い将来、ブラシをユーザー間で簡単に交換できる仕組みを実装予定です。
(Clover Paint v1.20のCBSv2でブラシを簡単に交換できる仕組みが実装されました)
こちらはClover Brush Synthesizer version 1(CBSv1)の解説ページとなります。
現状CBSv1はCloverメモ/CloverメモLiteで利用できます。
Clover Paintはv1.20でCBSv2に移行し、さらに強力なブラシ設定を行えるようになっています。
Top描画単位用語
-
Clover Paintでは描画単位について以下の用語を使います。
-
ピクセル内部をX軸/Y軸それぞれ7bit(128段階)に分割したピクセルです。
計算途中で仮想的に現れるだけで、データとしては存在しません。
-
画面上の1dotに対応するデータです。
Clover Paintでは内部でチャンネル毎に14bit精度のデータとして保持します。
-
ブラシの毛先形状を一回描画したものをspotと呼びます。
spotはピクセルの集合体です。 -
ペンがキャンバスに触れてから離れるまでの1描画単位をストロークと呼びます。
ストロークは基本的にはspotをペンの動きに合わせて並べたものです。
サブピクセル(sub-pixel)
ピクセル(pixel)
スポット(spot)
ストローク(stroke)
静的パラメータ設定
ペン太さ このブラシがとる最大のspot半径です。
ストロークの最大太さと考えても間違いではありませんが、
位置拡散等でストロークの見た目がこれより太くなることはあります。ペン流量(移動トリガ) 一定距離移動する度に描画するspotの不透明度を指定します
0なら何も描画しません。ペン流量(時間トリガ) 一定時間経過する度に描画するspotの不透明度を指定します
0なら何も描画しません。停止流量 ペンが停止している時の流量を指定します。 複合時開始遅延(秒) ペン流量について、時間トリガと移動トリガが両方有効なとき、
停止してからどの程度の時間後にペン流量(時間トリガ)が有効になるかを設定アンチエイリアス サブピクセルを利用して1ピクセル以下の細かい座標を補間してキャンバスに書き込みます ぼかし(ペン先が円形で有効) ペンの太さに対してペン外周のどの程度の割合までぼかし演算の対象とするか指定します。 ぼかし補間法 ペン外周にぼかしがあるとき、そのぼかしをどのような曲線で表現するかを指定します。 → 柔らか(square) 中心付近ではあまり変化がなく、外に行くに従って急激に透明度を増すタイプ → 普通(linear) 変化開始点からの距離に対してリニアに変化するタイプ → 少し硬め(square^-1) 中央付近ですぐに変化をはじめて透明に近づくタイプ → 鋭い(cube^-1) さらに急峻に0に近づくタイプ。見た目ペンが細くなります。 Clover Paintのストローク描画内部動作
-
描画演算タイプやペンストローク合成の動作について理解するためには、
-
混合モードは描画演算タイプに編集面の色と混合を選択した時に有効になる特殊な描画モードです。
組み込みブラシでは、ぼかしや指先、水彩、油絵等はこの混合モードで実現されています。
混合モードではストローク時に確保されるテンポラリレイヤーに選択中のレイヤーの内容が最初から書き込まれる以外に、
ブラシ側にもspotと同じサイズの色情報を持つバッファが確保されます。
このバッファにはspot内のピクセル情報の他そのピクセルの濃度等が確保されます。
ブラシにテンポラリレイヤーの画像情報を取り込むことで色を伸ばしたり、ぼかしたりといったことを可能にしているわけです。
様々な動作が可能になるよう、ユーザーが調整可能な多数のパラメータがあります。
画面色初期取得量 ストローク開始時に触れた場所の色をどの程度取得するか指定します ペン色初期取得量 描画色をどの程度バッファにあらかじめ設定しておくか指定します
これと画面色初期取得量の合計が1.0を超える場合、バッファの流量は最初から最大になります。
2つの色は指定された値の比率で混合されます。ペン色最低維持流量 ストロークを中、画面色移動中取得量によりバッファ内のペン色比率は減っていきます。
ここではその比率が一定以下にならないように指示します。画面色移動中取得量 ストローク中spot描画の度に、キャンバス色をバッファに取り込みますが、その取得量をここで指定します。 取得量-不透明度相関率 取得量をキャンバス不透明度で変化させる比率を設定します。
これを0にすればキャンバスが透明でも取得します。
1にすればキャンバスの不透明度に比例して取得量が調整されます。画面色混合タイミング → 描画前に画面色を取得して混合 描画前にバッファにキャンバス色を取り込みます。
画像を動かさないもの、ぼかし等を作りたい時に利用します。→ 描画後に画面色を取得して混合 描画後にバッファにキャンバス色を取り込みます。
取り込んだ内容を移動して描画することになるので画像が必ず移動します。画面色取得量変化 キャンバス色の取り込み量を他のブラシパラメータで変化させるか指定します → 取得量は他の影響を受けない 取り込み量を変化させません → 取得量を流量で変化させる 取り込み量は流量を乗算した結果になります → 取得量を不透明度で変化させる 取り込み量はペン合成不透明度を乗算した結果になります → 取得量を流量×不透明度で変化させる 取り込み量は流量とペン合成不透明度を乗算した結果になります 取得ペン濃度調整 バッファに取り込まれた色の濃度が一種のペン流量として利用されますが、
その濃度をどのように演算して変化させるかを指定します→ 取得量を単純加算 バッファへのキャンバス色取り込み量を濃度に加算します → 取得量を変調加算 濃度に(1-取り込み量)を掛けたものと、取り込み量を加算したものを新たな濃度とします → 取得量×不透明度の変調加算 濃度に(1-取り込み量)を掛けたものと、取り込み量にキャンバス不透明度を
乗算したものを加算し、新たな濃度とします混合:画面色取得ぼかし キャンバス色をバッファに取り込む際に周囲の色の平均を行いぼかして
取得したピクセルとの混合量を指定します。
特に必要なければ0にしておくべきパラメータです。
描画処理が内部でどのように行われているのか理解しておく必要があるため、ここで説明します。
ストロークを開始すると、ペン描画エンジンは仮想的なレイヤーをいま選択中のレイヤーのすぐ上に作ります。
(実際の動作はもう少し複雑ですが、結果は同じなのでこう考えても動作の理解には問題ありません)
実際の描画は、すべてこの一時的に作られたレイヤー(テンポラリレイヤー)の上に行われます。
ストロークが終了すると、テンポラリレイヤーは指定されたペン合成不透明度とペンストローク合成モードにより、
選択中のレイヤーと自動的に統合されます。
描画演算タイプ
-
描画演算タイプでは、ブラシの流量をどのように(先ほど説明したテンポラリレイヤーの)不透明度として反映するか、その演算式を指定します。
マスクなしで上書き 常にspot上のピクセル濃度と流量を掛けあわせた不透明度で書き込みます。
spotの外周部分にアンチエイリアスやぼかしがあると、その透明度がある部分で
すでに書き込まれた部分を上書きしてしまい、美しくつながったストロークには見えません。濃度マスク付き加算 テンポラリレイヤーの不透明度を参照し、そこに新たにピクセル濃度と流量を掛けあわせた
不透明度を足して、新たな不透明度にします。
綺麗に繋がって見えますが、流量が少ない場合も急峻に不透明度が飽和します。濃度マスク透明度を乗算して加算 テンポラリレイヤーの不透明度を参照し、残った透明度をブラシから
新たに書き込まれようとしている不透明度に掛けあわせて、その結果を足します。
単純な加算に比べると徐々に飽和していくタイプです。濃度マスクして最大値を書き込む テンポラリレイヤーの不透明度と、そこに新たに書き込もうとしているピクセル濃度と流量を
掛けあわせた不透明度を比較して、大きい場合にのみ、その値を書き込みます。
流量で指定した値が比較的不透明度に近くなるモードです。
演算方法から明らかですが、ストローク中に重ね塗りしても殆ど濃度が変化しません。常にマスクして上書きしない テンポラリレイヤーの不透明度が0以外のとき、新規の描画を無視します。
二値ペンなど書き込まれるべきピクセルが一定濃度であることが明らかな場合は
これを使って高速化できます。編集面の色と混合 このモードは非常に特殊で他のモードとは処理が全く異なります。
まず、一時的に作られるレイヤーは透明なレイヤーではなく、選択中のレイヤーのコピーです。
そのコピーしたピクセルを直接操作することでぼかしや指先ツール、水彩、油絵等を実現します。
このモードでは合成モードに通常モードの変調・線形と背景モードの変調以外は選択できません。
(合成を有効にするとストロークの度に触っていないピクセルにまで効果が入ってしまいます)
詳細は混合モード設定で説明します。混合モード設定
静的パラメータ設定:続き
Topペン合成不透明度 テンポラリレイヤーの不透明度を指定します 合成モード設定 ストローク合成:カラー テンポラリレイヤーのカラー合成モードを指定します。
合成モードについては色合成モードを参照してください。
ただし、混合モードに関しては通常モードの変調・線形と背景モードの変調以外は使用できません。ストローク合成:不透明度 テンポラリレイヤーの不透明度合成モードを指定します。
合成モードについてはα合成モードを参照してください。編集レイヤーの不透明度でマスク 描画されるペンの不透明度に編集レイヤーの不透明度を乗算して利用します。
結果として選択中のレイヤーでマスクされているように見えます。ペン先形状 ペン先の形状に円を使うか、四角を使うかを指定します 縁取り 縁取りエフェクトを使うかを指定します。縁取りには背景色が利用されます。 粗さ設定 Perlinノイズを利用してテクスチャをプログラムから生成します 強度 0:Perlinノイズを利用しません
<=1:Perlinノイズを利用する比率です(1.0=100%)
>=1:Perlinノイズに強度を乗算します
サンプル表示は黒い部分が不透明度の高い部分を表します周波数 ノイズ周波数を指定します。小さいほど緩やかな変化を持つテクスチャになります。 周波数 - サイズ比例 ペンの太さに比例させて周波数を変えるか指定します。 鋭さ +の値を指定すると鋭く、-の値を指定するとゆるやかになります。 乱数初期化値 乱数の種となる数値を指定します 砂ブラシ ランダムな点でspotを描画するようになります 砂ブラシ流量 砂ブラシだけで利用される流量調整バーです 間隔自動調整 → ペンの太さによって描点間隔を調整する ペンの太さでspotの間隔を調整します。間隔倍率10.0でペンの太さと間隔が一致します。 → ペンの太さによらず描点間隔は一定 ペンの太さを10.0固定と考えて間隔を計算します。 動的な間隔自動調整 入り抜きや筆圧など、動的な太さ変化で間隔を調整します。 間隔倍率 spotの描画間隔を指定します。
小さな数値にするほど間隔が狭まり、高周波成分を含む(輪郭などがハッキリした)
ペンでも破綻なく描画できますが、その分遅くなります。破線タイプ 点線パターンを指定できます 動的パラメータ設定
入り抜き設定 ストローク末端での効果を指定できます 開始(入り)太さ 開始時の太さを指定します。
0.0で太さ0、1.0でペンの太さで指定した太さ(他の効果がない場合)になります。終了(抜き)太さ 開始(入り)流量 終了(抜き)流量 開始(入り)砂ブラシ流量 終了(抜き)砂ブラシ流量 開始(入り)色変化 開始時の色を指定します。
0.0で背景色100%、1.0で描画色100%となります。終了(抜き)色変化 開始(入り)編集面色混合量 開始時の混合モードでのキャンバス色取得量の減衰率を指定します。 終了(抜き)編集面色混合量 速度効果 ストロークの速度変化による効果を指定できます 動的速度レンジ最小 このブラシの移動速度の最小値を指定します。単位はpixel/sです。
これ以下を0として考えます動的速度レンジ最大 このブラシの移動速度の最大値を指定します。これ以上は1として考えます 速度 → 太さ相関率 計算式は以下のようになります
速度動的値=[(速度-レンジ最小)/(レンジ最大-レンジ最小)]→
速度動的値を0.0~1.0にクリップ→
太さ変化=(速度動的値*相関率+(1-相関率))^(1.5^太さの硬さ)
ただし相関率がマイナスの時には変化が逆転するように計算されます。速度 → 太さの硬さ 太さが速度変化に対して急峻に変化するか、ゆるやかに変化するかを指定します。 筆圧効果 筆圧による効果を指定できます。
内容についてはすでに説明したパラメータと同等です。ジッター効果 ランダム効果を指定できます。 位置拡散(横方向) 進行方向に対して垂直に、ランダムに位置をズラします。
単位はペンの現在の動的太さになります。位置拡散(進行方向) 進行方向に対してランダムに位置をズラします。 サイズ ジッター(spot毎) ペンの太さをspot毎にランダムに変える度合を指定します 流量ジッター(spot毎) ペンの流量をspot毎にランダムに変える度合を指定します FG色->BG色 ジッター(spot毎) ペンの色を描画色から背景色へをspot毎にランダムに変える度合を指定します 色相 ジッター(spot毎) ペンの色の色相をspot毎にランダムに変える度合を指定します 彩度 ジッター(spot毎) ペンの色の彩度をspot毎にランダムに変える度合を指定します 輝度 ジッター(spot毎) ペンの色の輝度をspot毎にランダムに変える度合を指定します 不透明度 ジッター(spot毎) ペンの色の不透明度をspot毎にランダムに変える度合を指定します サイズ ジッター(stroke毎) ペンの太さをstroke毎にランダムに変える度合を指定します 流量ジッター(stroke毎) ペンの流量をstroke毎にランダムに変える度合を指定します FG色->BG色 ジッター(stroke毎) ペンの色を描画色から背景色へをstroke毎にランダムに変える度合を指定します 色相 ジッター(stroke毎) ペンの色の色相をstroke毎にランダムに変える度合を指定します 彩度 ジッター(stroke毎) ペンの色の彩度をstroke毎にランダムに変える度合を指定します 輝度 ジッター(stroke毎) ペンの色の輝度をstroke毎にランダムに変える度合を指定します 不透明度 ジッター(stroke毎) ペンの色の不透明度をstroke毎にランダムに変える度合を指定します 時間効果 ストローク開始後の時間経過による効果を指定できます - 補間範囲最小(秒) 効果開始までの秒数を指定します。これ以前は0.0として扱われます - 補間範囲最大(秒) 効果終了までの秒数を指定します。これ以降は1.0として扱われます 移動効果 ストローク移動距離による効果を指定できます - 補間範囲最小(Pixel) 効果開始までの移動距離を指定します。これ以前は0.0として扱われます - 補間範囲最大(Pixel) 効果終了までの移動距離を指定します。これ以降は1.0として扱われます -
ピクセル内部をX軸/Y軸それぞれ7bit(128段階)に分割したピクセルです。