the GIMP 2.4 + gimp-painter-

これはやまかわが、しげっち氏のMixBrushツールとG-Penツールをthe GIMP 2.4.xに移植したうえで、MixBrushツールに独自の改造を行ったものです。

試用される方へ:当方は、これらのツールにどれだけの需要があるのかという点に非常に関心を持っています。試用後、将来のGIMPにこれらのツール(または同種のツール)が追加されることを希望する・しないのいずれかをメールなどでお教えください。また、「G-PenやMixBrushは求めているものとは違う。かわりにこういうペイント系ツールがあればよい」という意見や、実際にG-PenやMixBrushで描かれたイラスト(のURL)があれば併記していただくとよいかと思います。メールの送り先はページの末尾をご覧ください。

gimp-painter

イラストを描くという用途においては機能的に不十分とされることもあるthe GIMPを拡張して、よりハッピーになろうというような趣旨のプロジェクトです。プロジェクト管理者はしげっち氏です。当方はプロジェクトメンバーですが、単に場所を間借りしているだけのような気がしないでもありません;-)

プロジェクトホームページ

http://sourceforge.jp/projects/gimp-painter/

しげっち氏のWikiサイト(各ツールの説明など)

http://www24.atwiki.jp/sigetch_2007/pages/20.html

プロジェクトのページで配布しているパッケージのうち、gimp-painter-(マイナスがお尻に付く方)のreadmeファイルを今読んでいただいているわけですが、マイナスが付いているのはコードの質がオリジナルより劣るというところに由来しています。

インストール

ソースからビルドする

GIMPのソースを展開したら、あとはパッチを適用して普通にビルドするだけです。すでに以前のパッチが適用済みの場合は、ひとつ前の版からのパッチもありますのでそちらを使ってください(版によってはないかもしれませんが)。

Note:x86系CPU用にビルドされる方は、コンパイルオプションとして浮動小数点数演算にSSEの使用を強制するスイッチを追加することを推奨します。例えば、gccでは"-msse2 -mfpmath=sse"(SSE2を使用する場合)といった内容になります。

Windowsバイナリのインストール

先に公式ビルドまたは野良ビルドのGIMP 2.4.3をインストールし、インストール先のgimp-2.4.exeをgimp-painter--YYYYMMDD_win32_bin.zip(binの後に対応CPUに応じた文字列が追加されることもあります)に入っているものに差し替えてください。また、起動時にlibfreetype-6.dllが無いと言われてしまう場合には、freetype6.dllを探して同じ場所にlibfreetype-6.dllの名前でコピーしてください。

ちなみに、公式ビルドまたは野良ビルドの適当なバージョンがない場合には、baseアーカイブ(gimp-painter--YYYYMMDD_win32_base.zip)をダウンロードし、適当なフォルダに解凍してください。このbaseアーカイブにはGTK+のEnginesとしてNodokaとAuroraが同梱されており、デフォルトのテーマではNodokaが使われています。GTK+アプリケーション全般のテーマ設定がMS-Windows(またはwimp engineを使用するその他のテーマ)になっているとボタンやコンボボックスなどの描画がおかしくなりますので、その場合はGIMPのテーマをMS-Windowsに変更するか、またはGTK+アプリケーション全般のテーマを他のものに変更してください。

MixBrushの設定項目

Reduce update frequency

通常は描点毎に行われるドキュメントウインドウ上の表示更新を抑制することで、体感速度を改善します。実際の更新頻度はブラシサイズとストロークの速度によって動的に変化します。

ペイント系の全ツールで有効ですが、望ましい効果が得られるかどうかはツールの種類やブラシサイズによって異なります。

Minimum scale

ブラシサイズを筆圧でコントロールする際の、(最大筆圧時のサイズを基準にした)最小倍率です。

例えば、1.0を指定すると圧力感度の筆圧をオフにするのと同じことになりますし、0を指定すれば従来どおりの変化の仕方をします。0.5を指定した場合には、最も軽い筆圧で最大筆圧時の50%サイズになります。

Alpha channel mixing

アルファ付きのレイヤーで、アルファ値を含めた混色を行います。また、混色結果のアルファ値が描画対象ピクセルのアルファ値より小さい場合、実際に描画結果のアルファ値が描画前より小さくなることを許容します(図右側のようなイメージ)。

アルファ付きレイヤーと、それ以外のdrawableとの描画結果の違いを最小限に抑えるには、Paint with pigmentにチェックを入れ、Canvas colorのdensityを1.0に固定してください。

Note:Alpha channel mixingの使用には次の制限があります。

  1. 重ね塗りにチェックが入っているときのみ機能します。
  2. 描画モードは常に「標準」と見なされます。
  3. 選択範囲は無視されます。
  4. チャンネルダイアログでの選択は無視されます(常にRGBAすべてのチャンネルに描画されます)。

Note:Alpha channel mixingが有効のとき、体感速度の改善のため画面の再描画を行う頻度を減らします。減らす度合いはカーソルの移動速度とブラシサイズを元にして、動的に決定されます。

Main color(density)

Main colorは筆の穂に含まれる塗料のコントロールになります。Densityは塗料の量を指定するもので、0では全く着色する能力がなくなり、1.0にすると下地の色が混ざらなくなります。

※Paint with pigmentがオフの場合には、Canvas color densityが0でない限り、Main color densityが1.0でも下地の色が混ざります。

Main color(rate)

塗料の中に前回打った描点のカラーが混じってくる割合を指定します。値が小さいほどより多く混じるようになります。

混色をしたい場合には、Main color rateを低くし、Canvas color rateを高くします。さらに不透明度を筆圧で調整するようにするとよりきれいに処理できるでしょう。

Dryout

Painterの「色の伸び」に相当するパラメータです(単位はピクセル)。ストロークの長さに比例してMain colorのDensityが下がっていき、指定値に達すると0になります。

Dryoutの値が0の場合は例外として、全く減衰しません。

Paint with pigment

Main colorとCanvas colorのブレンドには、両者の不透明度(×濃度)の比率を用いる方法と、レイヤーの重ね合わせと同じ方法の2種類があります。Paint with pigmentがオンになっている場合には、後者の方法でブレンドされます。

11月4日以前の版に近い処理をさせたい場合には、Canvas colorのDensityを1.0に固定した上で、Paint with pigmentをオンにしてください。このとき、Main color densityはCanvas color rateに、Main color rateはOriginal color rateに対応します。

Canvas color(density)

下地のカラーが混じる分量を指定します。あえて例えるなら、水や溶剤の分量と言えるかもしれません。

Main color、Canvas color双方のDensityが0の場合には、ペイントしても何も起こりません。ただし、Alpha channel mixing有効時にアルファ付きレイヤーへペイントすると、消しゴムのような振る舞いをします。

Canvas color(rate)

下地のカラーとして、ストロークを描画する前のカラーを加味する割合を指定します。値が小さいほどより多く加味されるようになります。高い値では色の伸びが良くなり、若干低い値にすると絵の具の粘りやかすれ感が強調されます。

値がある程度低くなってくると、描点の形が見えて不自然になる傾向がありますので、1.0を基準にして値を少しずつ下げていくのがベターです。

Pressure

筆圧のパラメータは、入力と出力それぞれの最小・最大値を指定する形式になっています。

例えば、入力が0.25~0.75、出力が0.3~0.9となっているとすると、筆圧が0から25%までは30%という出力になり、以降筆圧75%までは出力も上がっていきます。75%の筆圧で最大出力の90%に達し、それを超える筆圧では90%を維持します。

この出力値は、筆圧の適用対象となるパラメータに掛け合わされます。対象パラメータの設定値を1.0に固定しておくと、出力の上限・下限がそのまま対象パラメータの上限・下限になるのでコントロールしやすくなるでしょう。

ちなみに、筆圧によるコントロールを無効にしたい場合は、出力側を両方とも1.0にしておきます。また、出力の1が2より大きな値を取る場合、筆圧が反転されます(筆圧が軽いほど出力が上がる)。入力側については、1と2のどちらが大きい値をとっても(内部処理で入れ替えるので)動作に違いはありません。

Delay

ストロークを描画する前のカラーを得る際に、ストロークを開始する前のデータからカラーを取得してしまうと、自分自身のストロークをにじませることができません。

そのため、ストロークの開始後、実際に描点を打ち込むのを一時保留することで適切なカラーを取得できるようにしています。

Delayパラメータは、処理を保留する描点の数を指示するものです。大きな値を指定すると、スタイラスの動きに対して実際の描画が追いかけてくるようになるので多少の違和感があるかもしれません。逆に小さな値を指定すると違和感が軽減されますが、直前の描点のカラーを拾ってしまうため、Canvas color(rate)の効果が得られなくなります。

Paint the tail of stroke (delay > 0)

ストロークの終端Delay個分の描点を処理するように指示します。Delayを1以上にしている場合の描画が気になる方はチェックを外すと気分的には改善されます。

Sample size

カラーを拾う範囲(直径)の上限をピクセル数で指定します。

GIMPに元々あるAPI関数で平均を取っているのですが、結構重たいのでこのパラメータで制限をかけています。

Use merged color

描画対象レイヤーのカラーではなく、全てのレイヤーを統合した結果のカラーが混じってきます。ブラシサイズがある程度大きくなってくると重くなるので注意。

本来なら、Painterの「下の色を拾う」にならって、描画対象のレイヤーより上位のレイヤーを除いた統合カラーを使用したいところですが、知識不足と手抜きのため現在の仕様になっています。何もないよりはマシだろうということで。あと、制限事項として、レイヤーのキャンバス外にあるピクセルカラーが拾えず、白か黒が混じってくる、というのがあります。

Assume that the hidden color is

アルファ付きレイヤーにペイントするとき、Canvas colorに白または背景色が混じります。normalは単に(半)透明色として処理します。

以前の版からの修正点

1月11日版

1月3日版

12月22日版

12月9日版

12月7日版

12月3日版

11月24日版

11月9日版

11月7日版

11月4日版

10月29日版

10月22日版

10月21日版(Windowsバイナリのみ)

その他

Sample sizeを大きくしていると、透明部分のペイントで余計な色が混じることがあります。これは平均を取ったあとに透明部分を白(背景色)に置き換える処理をしているのが関係していそうです。

いずれは、自前の平均処理を入れないとだめかなあという感じですね(範囲が広い場合は適当に間引かないと重くなるし)。


やまかわ <yamma-ma at users.sourceforge.jp>