VRoid Studioのパレット機能について


待望のパレット機能だが。。。

3月24日リリースのVRoid Studio 1.5よりテクスチャ編集画面のカラーセレクターの下にパレットが追加されています。

で、そのパレットですが、6列固定で、固定縦幅の「ブラシカラー」項目の下に末尾に追加される形で色が増えていき、スクロールバーでアクセスする構造となっています。削除して新規登録する以外では一度作ったカラーの再編集は不可能 (だったらパレットはポップアップ表示でいいのでは?)
正直このスクロールが煩わしくて、使い勝手が良くない印象は受けます。

いずれにしてもパレットの整理(色の再編集や並べかえ)はしたいですね

パレットデータはどこに保存されているのか

VRoidの設定ディレクトリの preferences/palette.xml に保存されます。

設定ディレクトリの場所

以下のページ説明でいえばcustom_itemsフォルダから一つ上がったフォルダのことを指します。

つまり、パレットファイルのパスは(macOSの場合)

/Users/<username>/Library/Containers/net.pixiv.vroid.macosx/Data/Library/Application Support/net.pixiv.vroid.macosx/preferences/palette.xml

となります。

VRoidにおけるパレットデータの読み書きのタイミング

今回追加されたのは、各.vroidモデル依存ではなくアプリケーション全体で持つパレットとなりますが、VRoid Studioの起動時にXMLを読んで、終了時に吐き出しているようです。
つまり起動中にparelle.xmlを別のアプリで編集してもVRoid Studio終了のタイミングで持っているパレットで上書きしてしまうので、もし手動編集するならVRoid Studioを起動してないときにするのがよいでしょう。

パレットデータの構造

Wellsという配列に各色が保存されている至ってシンプルなデータ構造です。
下記のXMLは3色のみのパレットの場合です。

<?xml version="1.0" encoding="utf-8"?>
<ColorPalette xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Wells>
    <Well>
      <Color>
        <r>0.2</r>
        <g>0.2</g>
        <b>0.2</b>
        <a>1</a>
      </Color>
      <Id>e313369a-6b28-45a9-9541-1a7a4dd6e538</Id>
    </Well>
    <Well>
      <Color>
        <r>1</r>
        <g>0.54273504</g>
        <b>0.54273504</b>
        <a>1</a>
      </Color>
      <Id>bbc597cc-8c89-4c64-b772-a651e6482447</Id>
    </Well>
    <Well>
      <Color>
        <r>0.5982906</r>
        <g>0.5982906</g>
        <b>0.5982906</b>
        <a>1</a>
      </Color>
      <Id>3a4bcff4-962b-49d9-82c1-283a5e38b518</Id>
    </Well>
  </Wells>
</ColorPalette>

コードで表すなら...

これをC#コードでいうとこういうシンプルな構造になるかと思います。

class RGBA {
    public float r { get; set; }
    public float g { get; set; }
    public float b { get; set; }
    public float a { get; set; }
}
class Well {
    public RGBA Color { get; set; }
    public string Id { get; set; } //GUID
}

RGBは0.0から1.0までの実数値をリテラルとして持つようです。
255を掛けて小数点以下四捨五入すると、整数のRGB値が得られるはずです。
(また整数値から逆に実数表現に変換するには255.0で割ればいいことになります)

Aは多分不透明度(Alpha)を指すと思われますが、常に1になっているようで今のところ使い道がありません。
(VRoid Studio側の不透明度の設定などは読み書きしていないように思われます)
あるいは将来的に使うのでしょうか?

また、IdはGUIDを割り振っていますが、重複しないIDを乱数を使って機械的に採番されているものと思われるので特に規則はないと思います。
(極端な話、外部ツールで新たにカラーを追加する場合UNIX/Linuxのコマンドラインツールのuuidgenあたりが吐き出す値でも好きに使えばいいと思います)

所感

構造がシンプルなのでPhotoshopやクリスタのカラーパレットを移植するのはそうそう難しくもない気がしますが、果たして。