the GIMP 2.4 + gimp-painter-

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

gimp-painter

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

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

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

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

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

やまかわのWikiサイト(Windowsバイナリの導入手順・MixBrushの説明など)

http://cue.yellowmagic.info/main/index.php?gimp-painter-

http://cue.yellowmagic.info/main/index.php?gimp-painter-%2F%C5%C1%B8%C0%C8%C4(連絡用ページ)

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

パッチについて

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

2008年8月24日時点での最新版は20080824です。これはGIMP 2.4.7でビルドできることを確認しています。

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

Windowsバイナリについて

Note:推奨される導入手順をWikiサイトの方で紹介していますので、参考にしてください。

現在配布されているgimp-painter-のWindows用バイナリは、以下のような複数のパッケージ(圧縮ファイル)に分かれています。

gimp-painter--[version]_[date]_win32_[type].zip

[version]の部分にはGIMPのバージョン番号が入ります(例:2.4.7)。[date]にはファイルの公開日が入ります(適用されるパッチはこの日付を超えない最近の日付のものとなります)。また、[type]には次の区別があります。

bin_pentium3

GIMPの実行ファイル本体(gimp-2.4.exe)で、PentiumIII以降のCPU向けに最適化されています。

インストール済みの同名ファイルを差し替えるか、後述のbaseを解凍した後こちらのファイルを解凍先のbinフォルダにコピーします。

bin_pentium4

GIMPの実行ファイル本体(gimp-2.4.exe)で、Pentium4以降のCPU向けに最適化されています。

最近のPCをお使いの方は、こちらの方が多少処理速度が向上すると思われます。ただし、gimp-2.4.exeがスプラッシュウインドウの表示前に強制終了してしまう場合には、bin_pentium3のgimp-2.4.exeを使用してください。

base

gimp-2.4.exe以外の、GIMPの実行に必要なファイルが一通り入っています。適当な場所に空のフォルダを作成し、その中に解凍してください。その後、bin_pentium3またはbin_pentium4からgimp-2.4.exeを解凍し,binフォルダにコピーします。

Note:Pythonサポートを有効にするには、lib\gimp\2.0\pythonフォルダ内の_gimpenums.pyd_gimpui.pydgimp.pydgimpcolor.pydgimpthumbs.pyd(その他、拡張子.pydのファイルがあれば全て)をPythonのインストール先にあるDLLsフォルダにコピーし、lib\gimp\2.0\interpretersフォルダ内のpygimp.interpをテキストエディタなどで開き、"python="と"/usr/bin/python="の右側をご自分の環境に合わせて修正してください(大抵はそのままで大丈夫でしょう)。

また、baseを使用する場合、GTK+アプリケーション全般のテーマ設定がMS-Windows(またはwimp engineを使用するその他のテーマ)になっているとボタンやコンボボックスなどの描画がおかしくなりますので、GIMPのテーマをMS-Windowsに変更するか、またはGTK+アプリケーション全般のテーマを他のものに変更してください。

特に断りがない限り、[version]の部分が同じbaseとbin_~は[date]が異なっていても組み合わせて使うことができます。

追加プラグイン

baseパッケージ内には、以下のサードパーティープラグインがあらかじめインストールされています。

Separate+ 0.5.3
ICCプロファイルを使用し、RGB画像をCMYKに分解しTIFF形式で保存できるようにします。また、CMYK TIFF画像の読み込みプラグインとICCプロファイルの割り当て、変換プラグイン(標準のものと比べて多少改良されています)も含まれます。
Gimp UserFilter 0.9.7
Photoshopのフィルタファクトリに相当する機能を提供します。とりあえずビルドが通った、という状況のため、きちんと動作するかは十分確認が取れていません。
Save for Web 0.28.6
Web用途向け画像形式への保存をサポートします。圧縮率や減色方法、トリミングなどの設定をプレビューやファイルサイズを確認しながら行うことができます。保存形式の選択肢にJPEG2000がありますが、今のところサポートされていません。
Wavelet denoise 0.2
デジタルカメラでの撮影時に見られるようなノイズを軽減します。
Fix-CA
写真に見られる色収差を軽減します。
焦点ぼかし 3.2.3
カメラのレンズのような光学的表現を模倣します。Photoshopのぼかし(レンズ)フィルタに似ていますが、より高度な処理ができるようです。
滲みペン 0.4
モワモワした絵を簡単に描ける描画ツールです。
乾燥ブラシ 0.1
主に乾燥した画材の素材感を出す事を試みる描画ツール系のプラグインです。
gimp-ace2
コントラスト調整を適用します。
Colorize
モノトーンの画像への着彩作業を支援します。動作が不安定なので、プラグインがクラッシュしても「仕方がないなあ」と大目にみてやってください。画像のサイズが小さすぎるとほぼ確実にクラッシュします。

追加素材

baseパッケージのcontribフォルダには、作者の再配布許可を得た以下の素材が収録されています。Windows以外のプラットフォームでお使いの方、またはbaseパッケージをご利用でない方はWikiサイトにてダウンロードしてください。

それぞれの詳しい説明や使用条件などはcontribフォルダにreadmeファイルがありますので、それらを参照してください。

MixBrushの設定項目

ニコニコ動画にも説明をアップロードしていますので、参考にしてください。

Reduce update frequency

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

以下のパラメータはデバッグ用なので通常はデフォルト値で使用します。しかし、テスト環境(PentiumD 820 / RAM 2.5GB)と比較して特に遅い、または速いPCを使う場合には調整した方がよいかもしれません。

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

Note:Use merged colorをオンにして全レイヤーの結合色を拾うには、表示更新処理が必要です。Reduce update frequencyをオンにした状態で素早いストロークで描くと、本来とは異なる結果になることがあるので注意してください。

Minimum scale

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

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

Use texture

Alpha channel mixingが有効になっている時、テクスチャ効果を適用します。テクスチャのソースはパターンのグレイまたはRチャンネル(要するに最初のコンポーネント)を使用します。

Grainを正の方向に上げていくと、目がだんだんと潰れ着色される部分が増えていきます。逆に負の方向に下げていくと目が粗くなり着色される部分が減っていきます。

チョーク風の表現は-1.0~0、水彩・インク風の表現は0~1.0の範囲で値が変化するように設定するのが目安です。実際には使用するテクスチャの明度やコントラストを見ながら、適当に範囲をずらしてみてください。

Contrast

テクスチャ適用後のブラシ形状(描点マスク)に対してコントラスト調整を適用します。1.0は無調整で、値が大きくなるほどコントラストが高くなります。

Jitter

描点毎にテクスチャの位置をずらします。ずれる分量は±指定値の範囲でランダムに決まります。

Apply fringe

テクスチャの適用度をブラシのマスクで調整します。結果としては描点の縁にテクスチャが適用される形になります。パターンをうまく選べば絵具がにじんだようにも見えなくはないです;-) Contrastの値が1.0のままだとブラシマスクのグラデーションが出てぼやけた感じになりがちなので、適当に調整してみてください。

Grainは0がいちばん荒い状態で、絶対値が大きくなるほど質感が弱くなります。このとき、正の方向に増やすとテクスチャがオフの状態に近づいていき、負の方向に減らすと描点が痩せていきます。

Alpha channel mixing

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

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

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

  1. 重ね塗りにチェックが入っているときのみ機能します。
  2. 描画モードは常に「標準」と見なされます。
  3. 選択範囲は無視されます。
  4. チャンネルダイアログでRGBのいずれか1つ以上を選択解除しても、必ずRGB全チャンネルに描画されます(「アルファ値」のチャンネルは選択解除しても正しく描画できます)。
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に対応します。

Note:このオプションはAlpha channel mixing導入以前に表現の幅を広げる目的で追加したものです。Alpha channel mixingとの相性はあまり良くないので、基本的には常にオンにしておいてください。

Canvas color(density)

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

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

Canvas color(rate)

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

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

Pressure

筆圧のパラメータは、入力(タブレットドライバから渡される値)と出力(MixBrushツールが受け取る値)それぞれの最小・最大値を指定する形式になっています。

例えば、入力が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は単に(半)透明色として処理します。

以前の版からの修正・変更点

9月1日版

8月24日版

8月19日版

6月20日版

6月8日版

6月5日版

6月1日版

5月18日版

5月4日版

3月6日版

2月5日版

1月28日版

1月26日版

1月22日版

1月21日版

1月19日版

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>