mieki256's diary



2024/07/28() [n年前の日記]

#1 [krita] Kritaのブラシプリセットファイルについて調べてた

Krita 5.2.3 上で、以下で公開されているKrita用ブラシセットの、一部のブラシプリセットが正常に動作していない。

_Environment Brushes and Forest Vegetation 3 by IForce73 on DeviantArt

原因はどこにあるのだろう…。Krita のブラシプリセット関連ファイルについて、中身がどうなってるのか少し調べてみた。

リソースライブラリについて :

Krita のリソースライブラリファイル、*.bundle について調べたところ、実態は zipファイルで、*.zip を *.bundle にリネームしている、という話を見かけた。

試しに、ENV_Brushes_Trees_and_Bushes.bundle を、ENV_Brushes_Trees_and_Bushes.zip にリネームして解凍してみたところ、以下のファイル群が得られた。たしかに中身は zipファイルらしい。

> tree /f /a ENV_Brushes_Trees_and_Bushes
./ENV_BRUSHES_TREES_AND_BUSHES
|   meta.xml
|   mimetype
|   preview.png
|
+---META-INF
|       manifest.xml
|
\---paintoppresets
        ENV_Brushes - Barkbrush_.kpp
        ENV_Brushes - BushyBuilder1_.kpp
        ENV_Brushes - BushyBuilder2_.kpp
        ENV_Brushes - Dense Forest_.kpp
        ENV_Brushes - Distant Evergreen _.kpp
        ENV_Brushes - Distant Tree Silouhette 1_.kpp
        ENV_Brushes - Distant Tree Silouhette 2_.kpp
        ENV_Brushes - Randombranch2_.kpp
        ENV_Brushes - Randombranch_.kpp
        ENV_Brushes - TreeGen1_.kpp
        ENV_Brushes - TreeGen3_.kpp
        ENV_Brushes - Treestamp1_.kpp
        ENV_Brushes - Treestamp2_.kpp
        ENV_Brushes - Treestamp3_.kpp
        ENV_Brushes - Treestamp4_.kpp
        ENV_Brushes - TwigCreator_.kpp
        ENV_Brushes Bark Texture_.kpp
        ENV_Brushes- TreeGen2_.kpp

ちなみに、.kpp は、Krita のブラシプリセットファイル。

ブラシプリセットファイルについて :

Kritaのブラシプリセットファイル、*.kpp について調べたところ、以下が分かった。
  • .kpp の実態は 200 x 200ドットの png ファイル。
  • 拡張子が .png から .kpp に変更されている。
  • その pngファイルの中に、ブラシプリセットの情報が xml で記述されている。
  • png の画像部分は、そのブラシプリセットのアイコンとして利用される。

Krita Brush Info を試用しようとしたけどダメだった :

Krita用ブラシプリセットファイル(.kpp)内の情報を出力してくれる、Krita Brush Info というツールがあるらしいと知り、Windows10 x64 22H2 上で使ってみようとしたのだけど…。

_KennethEvans/VS-KritaBrushInfo: C# application to get brush parameters in a readable form and compare brushes for Krita paintoppreset .kpp files.
_Krita Brush Info
_ExifTool by Phil Harvey

動作には ExifTool が必要とのこと。

KritaBrushInfo_1-1-0.zip と、exiftool-12.92_64.zip を入手・解凍して、任意のフォルダに置いて実行してみたのだけど…。.bundle の中身を覗いたり、.bundle内に含まれている .kpp を一覧から選択するところまでは動いたものの、情報を表示しようとしても「exiftool.exe が見つからない」と言われて動作してくれない。環境変数PATHが通っている場所に exiftool.exe は置いているし、あるいは KritaBrushInfo.exe と同じフォルダに exiftool.exe を置いたりもしたのだけど…。

KritaBrushInfo.exe のタイムスタンプは 2018/11/22 とそこそこ古いので、exiftool.exe が新し過ぎるのではないかと exiftool 11.77 を入手して試してみたり、元々HDDに入ってた exiftool 9.24 を利用してみようとしたけれど、状況は変わらず。

_ExifTool by Phil Harvey (WebArchive, ExifTool 11.77)

※ 2024/07/29追記。exiftool.exe の場所を指定する方法が分かった。テキストウインドウ内で右クリックするとメニューの中に Preferences という項目がある。これを選べば、exiftool.exe の場所を指定する設定ダイアログが表示される。exiftool 11.77 を指定したら動作した。

ExifToolについて :

余談。exiftool 12.92 は exiftool.exe の他に、exiftool_files/ フォルダの中身も必要になってしまうけれど、12.87 以前のバージョンなら exiftool.exe 単体で動作する。

また、公式バイナリのファイル名は exiftool(-k).exe になっているけれど、exiftool.exe にリネームしても動作する。ファイル名に「(-k)」を付けることで、オプションとして -k を常時つけて実行する仕様になっているらしい。

_ExifTool.exe の簡単な使い方 − 表示編 | 穀風

バージョンの確認は以下。
> exiftool -ver
12.87

ExifToolで.kppの中身を調べる。 :

.kpp を .png にリネームして、ExifTool 9.24 に渡して内容を出力してみた。

_env_brushes_-_distant_evergreen__.png

※ 2024/07/29追記。対象のブラシプリセットは以下。

env_brushes_-_distant_evergreen__ss01.png

exiftool.exe "ENV_Brushes - Distant Evergreen _.png" > "ENV_Brushes - Distant Evergreen _.kpp.txt"

結果は以下。

_env_brushes_-_distant_evergreen__.kpp.txt

「Preset」というところに、xmlらしい情報が列挙されてる。これがブラシプリセットに必要な情報なのだろう…。

DevToys Version 2.0-preview.2 の XMLフォーマッターを使って、xml部分を整形してみた。これで少しは読みやすくなった。

_env_brushes_-_distant_evergreen__.kpp.xml.txt

「Brush」で検索してみると、利用しようとしているブラシ画像ファイル名が分かる。brush_definition と requiredBrushFile が関係しているらしい。

$ grep Brush "ENV_Brushes - Distant Evergreen _.kpp.xml"
<Preset paintopid="paintbrush" name="ENV_Brushes - Distant Evergreen _">
  <param type="string" name="brush_definition"><![CDATA[<Brush scale="0.16151" type="gbr_brush" useAutoSpacing="0" autoSpacingCoeff="1" ColorAsMask="1" BrushVersion="2" filename="Tann??1.gih" spacing="0.06" angle="0"/> ]]></param>
  <param type="string" name="requiredBrushFile"><![CDATA[Tann??1.gih]]></param>

「Tann??1.gih」というブラシ画像ファイルを使おうとしているけれど、「??」の部分は日本語環境では文字化けしてしまう文字を使っているっぽい。故にこのブラシプリセットを使おうとしても、日本語環境のKrita上ではブラシ画像ファイルが見つけられなくて正常動作しない、ということだったらしい。

対策してみる。
  1. 「Tann??1.gih」を「Tann1.gih」にリネームしながらコピー。
  2. Krita で、設定 → リソースを管理、を選択。ダイアログ上から「Tann1.gih」をインポート。
  3. 「ENV_Brushes - Distant Evergreen」というブラシプリセットの設定を変更する。ブラシ画像として「Tann1.gih」を利用するように変更。
  4. このブラシプリセットを別名で保存。
これで、件のブラシプリセットはそれっぽい動作になってくれた。

余談。Krita のブラシ画像ファイルとしては、.png、.svg、.gbr、.gih、.abr が利用できる。
  • .png : png画像 (ラスターデータ)
  • .svg : svg画像 (ベクターデータ)
  • .gbr : GIMPのブラシ画像ファイル。画像が1枚だけ入ってる。
  • .gih : GIMPのブラシ画像ファイル。複数の画像が入っていて、ランダムにどれかの画像を使ったり、使う画像を順々に切り替えたりできる。
  • .abr : Photoshopのブラシ素材ファイル。ただ、一部の機能しか利用できないらしい。

_7. ブラシの追加
_Kritaのブラシ先端についてのメモ - Kritaでぐるぐるお絵かきブログ

#2 [prog] XML整形ツールについてメモ

XMLを整形してくれるコマンドラインツールが無いものかとググってみたら、xmllint というツールがあるらしい。

_色々なコマンドラインでの XML の整形方法 - 重要なお知らせ
_4. xmllint使用方法

Windows上で動作する版は無いかとググったら、MSYS2 でパッケージが用意されていた。libxml2 をインストールすれば xmllint.exe もインストールされる。

_Base Package: libxml2 - MSYS2 Packages
_Base Package: mingw-w64-libxml2 - MSYS2 Packages

pacman -Ss libxml2
pacman -S mingw-w64-i686-libxml2
or
pacman -S mingw-w64-x86_64-libxml2
or
pacman -S libxml2
$ which xmllint
/mingw64/bin/xmllint

$ xmllint --version
D:\msys64\mingw64\bin\xmllint.exe: using libxml version 21209
   compiled with: ...

以下で整形結果を出力してくれる。
xmllint --format hoge.xml

hoge.xml を整形して fuga.xml として保存したい時は以下だろうか。
xmllint --format hoge.xml -o fuga.xml

以上、1 日分です。

過去ログ表示

Prev - 2024/07 -
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project