Skip to content

Releases: yukkuri-aoba/Iroca

Release list

Iroca v0.2.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 11:46

ダウンロード

  • Iroca_v0.2.0.zip … これをダウンロードしてください。展開して、中の Iroca_Installer.unitypackage を Unity のプロジェクトウィンドウにドラッグ&ドロップします(導入方法は同梱の README.txt とマニュアルにあります)。
  • com.yukkuri-aoba.iroca-0.2.0.zip … VCC / ALCOM とインストーラが自動で取得するパッケージ本体です。手でダウンロードする必要はありません。
  • Source code … GitHub が自動で付けるソースコードです。導入には使いません。

0.1.0(旧名 VRC Avatar Color Changer / VACC)からの変更です。

重要な変更

  • 名前を「いろか(Iroca)」に変更しました。 メニューは Tools > いろか です。旧版(Assets/VACC フォルダ)とは別物として入るため、0.1.0 を使っていた場合は Assets/VACC を削除してください(プロジェクト内に保存したプリセットが必要なら、削除の前にバックアップしてください)
  • 導入方法が変わりました。 unitypackage で配るのは、インポートすると最新版をダウンロードして入れる Iroca_Installer.unitypackage(VPMPackageAutoInstaller 製)です。いろか本体はプロジェクトの Packages に入り、以後は VCC / ALCOM から更新できます。VCC / ALCOM にリポジトリ https://yukkuri-aoba.github.io/Iroca/index.json を追加して直接導入することもできます
  • 再着色アルゴリズムを OkLab(知覚的な色空間)へ刷新しました。 色ムラ・ベタ塗り化・色破壊を解消し、陰影や模様をより自然に保ったまま色を変更できます
  • ライセンスを「PolyForm Noncommercial License 1.0.0」から PolyForm Shield License 1.0.0 に変更しました。 商用利用と、改変・再配布ができるようになりました。本ツールと競合する製品・サービスの提供には使えません

追加

  • 非破壊で色替え(NDMF): 元のテクスチャとマテリアルを書き換えずに色替えできます
    • 「④ アバターに反映」の「アバターに非破壊で登録」で、Hierarchy で選んだ衣装やアバター(未選択なら、そのテクスチャを使っている所の共通の親)に「Iroca Recolor」が付き、色替えの内容は Assets/Iroca/Recipes の「レシピ」に保存されます
    • 再生・アップロードのときだけ、範囲内でそのテクスチャを使っているマテリアルを複製し、色替え済みのテクスチャへ差し替えます。外せば元に戻ります
    • 衣装や表情のトグルなど、アニメーションで後から切り替わるマテリアルも色替えします(元のアニメーションファイルは変えません)。VRCFury のトグルで切り替わるマテリアルも対象です
    • 差し替え後のテクスチャは元テクスチャのインポート設定(最大サイズ・圧縮形式・ミップマップ)に合わせます(PC / Android それぞれ)
    • 登録後もいろかウィンドウで編集でき、内容はレシピにも保存されます。2 回目以降の再生は Library/Iroca のキャッシュで速くなります
    • 同じオブジェクトへの登録は 1 つの「Iroca Recolor」にまとまります(テクスチャごとのレシピを一覧で持ちます)。同じテクスチャのレシピは置き換えます。複数付いている場合は、インスペクタの「1 つにまとめる」か、そのオブジェクトへの登録でまとめられます
    • 以前「適用して保存」で書き出した画像(_recolored.png)を使っているマテリアルは、登録のときに元のテクスチャへ戻します(確認画面に出ます。Ctrl+Z で戻せます)
    • 再生しなくても、シーンのアバターに同じ色替えが映ります(NDMF のプレビュー)。いろかウィンドウで設定を動かすとアバターも追従し(ドラッグ中は粗い版、手を止めると細かい版)、登録前のテクスチャでも試せます。登録済みのテクスチャを初めて映すときも、色替えの計算でエディタを止めません(できるまでは元の色で映ります)。オン/オフは Tools > NDM Framework > Configure Previews で切り替えられます
    • NDMF(Non-Destructive Modular Framework)1.8 以上 2.0 未満を使います。インストーラで入れると一緒に入り、VCC / ALCOM では、いろかのリポジトリから追加できます。NDMF が無いプロジェクトでは、画像の書き出しだけが使えます
  • 自動調整: スポイトで色を取ったパーツについて、暗部からハイライトまでを覆うように許容範囲などを自動で合わせます
    • クリックした位置の AI マスク提案を手がかりに使うため、Unity Sentis とモデルファイルが必要です(未導入のときは中止して導入を案内します)
    • ゾーンカード上に、スポイト位置があるか(AI 提案を参照できるか)を表示します
    • クリックしたパーツに実在する暗さ・鮮やかさ・色相の広がりから、色は近いがそれより暗い別パーツ・鮮やかな別パーツ・色相のずれた別パーツを、離れたかたまりごと選択から外します。スポイトでクリックした場所を含むかたまりは外しません(詳細設定の「暗部の明度下限」「別パーツの彩度上限」「別パーツの色相幅」。手動でも調整できます)
  • プレビューの右クリックメニュー(mac は Control+クリック): クリックした場所の部分を「ここも塗る」「ここは塗らない」「この部分だけ塗る」で直せます。部分は AI 提案か、メッシュの形(UV の島)で見分けます。直すゾーンはメニューの先頭に出ており、その場で切り替えられます
  • パーツ(メッシュの UV の島): テクスチャを使うメッシュを、開いているシーン → テクスチャと同じ素材フォルダの Prefab の順に自動で探し、見つかれば右クリックメニューの「メッシュの形で」から、クリックした島を塗る・塗らないようにしたり、そのメッシュ以外を塗らないようにしたりできます
    • 色では分けられない同じ色の別パーツ(アトラスに並んだ同色のパンツとブーツなど)を 1 回で分けられます
    • マテリアルが以前いろかで書き出した _recolored.png を使っていても見つけます
    • 使っているメッシュは本体ウィンドウのマスク欄の「メッシュ」に表示されます。見つからないときや違うものを拾ったときは、ここへ FBX・Prefab をドラッグして指定できます
    • 「UV の島をプレビューに表示」をオンにすると、UV の島の輪郭をプレビューに線で重ね、「この島」で足される範囲を選ぶ前に確かめられます
    • メッシュが無いテクスチャでは、これまで通り色だけで動作します
  • Scene でクリックした場所の表示: いろかのウィンドウを開いたまま Scene でモデルをクリックすると、その部分がテクスチャのどこか(UV の島とクリックした位置)をプレビューに示します。ボタンやモードの切り替えは無く、Unity の選択もそのまま行われます
    • テクスチャを何も開いていないときは、クリックした部分のテクスチャを開きます。別のテクスチャの部分をクリックしたときは、そのテクスチャ名と「開く」をプレビューの上に出します
    • 拡大表示中はその場所までスクロールします。ポーズやシェイプキーを付けた形のまま、マテリアルの両面・片面の設定どおりに当たります
  • AI マスク提案(実験的): 右クリックメニューで「ここも塗る」などを選ぶと、AI(MobileSAM)がクリックした部分を見分け、その場でマスクへ反映します
    • 使うには Unity Sentis(com.unity.sentis 2.1.3。Unity 2022.3.11f1 以降)とモデルファイル(約 44 MB)が必要です。導入・モデルのダウンロード(sha256 検証つき)・再起動は、ウィンドウ上部の帯から行えます。モデルは手動配置にも対応します
    • 1 回で取れるのは、画像上でつながった 1 つの領域です(モデルの UV は見ません)。画像上で分かれたパーツは領域ごとに繰り返します
    • 選ぶと即マスクへ反映され、確定ボタンはありません。間違えたら Ctrl+Z で 1 つずつ戻せます。追加後は通常のマスクとして編集できます
    • 見分ける部分の大きさ(自動/小さめ/大きめ)を選べます。右クリックメニューの「小さめの部分で」「大きめの部分で」からはその 1 回だけ、マスク編集ウィンドウの粒度ではいつも使う大きさを変えられます。推定を待つ間もプレビューを動かせます
    • ファスナーの歯・細い線・小さなロゴのように地の上に描かれた細い描き込みは、周りの地(落ち影などの陰影も含む)を含めず描き込みだけを範囲にし、AI が途中で切った描き込みの続き(ファスナーの末端の歯など)も範囲に足します。「小さめの部分で」→「ここは塗らない」で守っても、描き込みの周りの地が帯や塊で塗り残らず、1 回の右クリックでファスナー 1 本を端まで守れます(地とほとんど同じ色の細い部位は、これまで通り形のまま範囲にします)
    • MobileSAM(Apache License 2.0)を ONNX 形式に変換して使用しています
  • 含めるマスク: 塗った領域を「必ず色替えに含める」ゾーン別マスクを追加しました。色の判定で拾いきれなかった部分(強い光沢、離れた場所にある同色パーツの取りこぼしなど)をブラシまたは AI マスク提案で追加できます
    • 除外マスクと重なった画素は除外が優先されます
    • 追加した領域は、ゾーンの色マッチした部分から推定した素材の基準を使って「同素材として」色替えされます
  • ゾーン別の除外マスク: 共通マスクとゾーン別マスクを組み合わせられます。マスクはゾーンごとに異なる色で重ね表示し、プリセットへの同梱保存・読み込み(ON/OFF 切り替え可)に対応します
  • マスク編集ウィンドウ: 編集対象のゾーン、マスクの種類(除外/含める)、塗る/消す、ブラシの大きさ、AI 提案の粒度、取り消し、クリアを 1 つのウィンドウにまとめました。プレビューの隣に置いたまま作業できます
  • マスクデータのファイル永続化: エディタを再起動してもマスクが残ります。テクスチャを削除すると、対応するマスクデータも削除します
  • 連続領域モード: クリックした地点とつながった同色領域だけを対象にできます。ゾーンの「シード(任意)」行の「指定」ボタンから、プレビューをクリックしてシード地点を指定できます
  • 境界クリーンアップ: 境界の混ざった色(アンチエイリアス・にじみ)を、パーツの色が混ざっている割合だけ色替えします。縁のハロー(薄汚れた中間色)や元の色の残りが出ません(既定で有効。近傍半径は加工設定の「詳細設定」で調整できます)
  • ゾーンのソロ表示: そのゾーンだけをプレビューして、実際にどこを拾っているかを確かめられます(表示だけの機能で、保存内容は変わりません)
  • プレビュー: 操作モード(スポイト/シード指定/マスクを塗る・消す/AI 提案)を 1 行で表示し、Esc キーでどのモードも解除できます。ズームの「リセット」、押している間だけ変更前を表示する「元を表示」、シード位置とスポイト位置の目印を追加しました
  • どのモードでもプレビューを動かせます: 中ボタンドラッグと Alt+ドラッグがパンです(マスクを塗っている最中も使えます)
  • エクスポートの「Project で表示」: 直前に保存したテクスチャを Project ウィンドウで選択・表示します
  • 手順の案内: 主要な手順に番号を付け、済んだ手順に ✓ を付けて「次に何をするか」を 1 行で案内します
  • ゾーン詳細パラメータのリセット: 色・許容範囲・名前を保持したまま、詳細パラメータだけを既定値に戻せます

変更

  • ゾーンの優先度を、レイヤーインデックスからリストの並び順(ドラッグ&ドロップで並び替え)に変えました。重なり部分は上位のゾーンだけが適用されます
  • 「アドバンスモード」を廃止し、細かいパラメータはゾーンと加工設定それぞれの「詳細設定」折りたたみにまとめました。ゾーンの詳細パラメータは役割ごとの小見出し(選択の範囲/ハイライト/暗部・無彩色/色の写り方/マッチング距離の重み)で整理しています
  • 新規ゾーンの許容範囲は 0.20 で始まり、色を指定すればすぐプレビューが変わります。既定名は「ゾーン 1」「ゾーン 2」…の連番です
  • ゾーンが無いときは「スポイトで変えたい色を選ぶ」から始められるようにしました。押してからプレビューの色をクリックすると、ゾーンを作ってその色をサンプルカラーに入れます(Ctrl+Z 1 回でゾーンごと戻ります)。これまでは「+ ゾーン追加」→「スポイト」→ クリックの 3 手でした
  • ゾーンカードに常に出す項目を減らしました。連続領域モード(とシード)は既定のまま使うことがほとんどなので、詳細設定の「選択の範囲」へ移しました(プレビューの Shift+クリックでのシード指定はそのまま使えます)。「スポイト位置」の行は、位置が無いときの警告だけにしました
  • 既定値のまま使う設定を普段は見えない場所へ下げました。加工設定は最初から畳み、ゾーンの詳細設定のうちハイライト白寄せ合成(と自動補正)とマッチング距離の重みは、ウィンドウのタブの「⋮」メニューの「開発者向けの設定を表示」で出るようにしました(プリセットなどで既定から変わっているゾーンでは常に表示します)
  • 色を選んだ後も「次の手順」の案内が続くようにしました。変更先カラーを選ぶ → 自動調整(任意)の順に、どのゾーンで何をすればよいかを示します(自動調整を押すか、許容範囲を動かすと消えます)。② の ✓ は変更先カラーまで決めると付きます
  • 2 色目からも「スポイトで別の色を追加」→ プレビューをクリックの 2 手で色を足せるようにしました(1 色目と同じ操作です)。「+ ゾーン追加」は、色を決めずにゾーンだけを作る「+ 空のゾーン」としてその横に小さく残しています
  • プレビューの右クリックを「ここも塗る / ここは塗らない / この部分だけ塗る」に言い換えました。当てる相手は、いま直しているゾーン(最後に作った・触ったゾーン。ゾーンが 2 つ以上あるときはカードを枠で示します)です。「この部分だけ塗る」は部分の外を塗らないようにし、部分の中は今まで通り色で選びます(中にある別の色は変わりません)。後から選んだ操作が勝つので、「ここは塗らない」にした所も「ここも塗る」で塗れます。メッシュの島での操作はサブメニュー「メッシュの形で」へ移しました。マスクの編集対象の既定も、共通マスクから先頭のゾーンに変えました
  • マスクを元画像と同じ解像度で持つようにしました。これまでは Unity の取り込みの最大サイズ(既定 2048)に合わせていたため、4K の元画像では塗った境目が書き出しで 2 画素単位に粗くなっていました(長辺 8192 を超える元画像は 8192 に縮めます)。拡大表示では、見えている範囲のマスクの重ね表示も 1 画素単位で描きます(これまでは 4K で 2 画素ほどのブロックに見えていました)
  • ブラシは、画面上の大きさが拡大しても変わらず、拡大したぶん細かく塗れるようにしました。これまでは拡大しても全体表示のプレビューの格子単位(4K で約 11 画素四方)で塗っていたため、細かな模様に沿って塗れませんでした。全体表示では今までと同じ範囲を塗ります
  • ブラシでも、同じゾーンの「含める」と「除外」は後から塗ったほうが勝つようにしました。これまでは除外の上に含めるを塗っても効かず、重ね表示も 2 色が混ざっていました。消しゴムは選んでいる種類だけを消します。全部のゾーンに共通の除外は、今まで通りゾーンの含めるより優先されます
  • 完了・エラーのダイアログを通知に置き換え、適用&保存と自動調整を非同期化しました。エクスポートの失敗は、閉じるまで消えない表示としてエクスポート欄に残ります
  • Unity Undo を統合しました。スライダー・トグル・マスクのストローク・ゾーン操作・プリセット読み込みを Ctrl+Z / Ctrl+Y で取り消し・やり直しできます
  • ブラシカーソルの色が、塗ろうとしているマスクの種類(赤=除外/緑=含める)を表します。消しゴムは白です
  • プレビューの大きさがウィンドウに合わせて変わるようになりました。ズーム 100% はテクスチャ全体がプレビュー枠にちょうど収まる大きさで、ウィンドウを広げると大きく(拡大分は元の解像度からくっきり描き直します)、狭めると小さく表示し、余った幅には画像を中央に置きます。以前は大きさが固定で、広いウィンドウでは右と下が大きく空き、狭いウィンドウでは 100% でも一部しか見えませんでした
  • 編集内容(ゾーン・色・処理設定・マスク、結び付いたレシピ)を、編集が止まって 2 秒たったら自動で保存するようにしました。これまではテクスチャの切り替え・ウィンドウを閉じたとき・ビルドの直前だけで、Unity が落ちると直前の編集が消えていました
  • NDMF が入っているときは、ウィンドウの ④ を「アバターに反映」にして非破壊の登録を主にしました。テクスチャへの書き出し(「適用して保存」)は、その下の「テクスチャとして書き出す」を開くと使えます(衣装を配布・販売するときなど、画像ファイルが要るとき向け)。NDMF が無いときはこれまでどおり「④ エクスポート」です
  • 一括適用・UV 矩形モードは実装継続中のため、当面 UI から非表示にしています

パフォーマンス

  • 色処理とマスク生成のマルチスレッド化、後段パス(穴埋め・境界回復・ブラー)の変更領域への限定、OkLab 変換の高速化、マスクのビットパック化、エクスポートの非同期化などで、プレビューと書き出しを高速化しました

修正

  • 色マッチング精度の向上: 低彩度サンプルや無彩色(白・黒・グレー)での選択精度を改善し、隣接する似た色や白背景への巻き込み・誤検出を大幅に低減しました
  • 再着色品質の改善: 明部の白飛び・段差、エッジの不自然なフチ、極端なターゲット色でのバンディングなどを修正しました
  • 白・黒・グレーの部分を色つきの色へ変えたとき、指定した色より大幅に暗く(または白っぽく)仕上がる問題を修正しました。指定した色の明るさに仕上がります
  • 許容範囲を上げると、パーツの周りにうっすらと輪(ゴースト)が出たり、文字の周りが濁ったりする問題を修正しました。許容範囲が低いままだと、白い文字と布の境目などに元の色が点々と残る問題もあわせて直しました。色のついたパーツでは、境界の混ざった色をパーツの色の割合だけ色替えします(境界クリーンアップ ON のとき。縁のドット回収と穴埋め・境界復元の設定は、このときは使いません)
  • マスクの重ね表示: 拡大したときに境界がぼけて実際より広く見える問題、画像の端に接したマスクが薄れて見える問題を修正しました
  • UI 要素が長くなると隠れて操作できなくなる問題(エクスポートボタンの見切れを含む)を修正しました
  • ウィンドウの幅によって、設定欄の右端(数値欄・「自動へ」「探し直す」などのボタン)や、プレビュー見出しの「リセット」が切れて見えなくなる問題を修正しました(英語表示を含む)
  • 設定欄のスクロールバーを動かすだけで、プレビューが作り直されていた問題を修正しました
  • 高解像度プレビューの上下反転・スクロールずれ、ズーム / パン操作の感度を修正しました
  • テクスチャ切り替え時に古いマスクの重ね表示が残る問題を修正しました
  • 新しく生成したテクスチャが、元のテクスチャの読み込み設定を引き継ぐようにしました
  • テクスチャの Read/Write 設定を変更する前に確認ダイアログを表示するようにしました
  • 言語設定がエディタ再起動後も維持されるようにしました
  • 有効なゾーンが無いまま保存すると、無変更のファイルが「完了」表示になる問題を修正しました
  • 編集内容・マスク・プリセット・書き出しの保存が、ウイルス対策ソフトなどがファイルを一瞬開いているときに「置換されるファイルを削除できません」で失敗することがある問題を修正しました(少し待って書き直します)

ドキュメント

  • マニュアルを、画面写真と操作の短い動画つきの HTML にしました。
    マニュアルはオンラインで公開しています。いろかウィンドウ上部の『マニュアル』で開けます。
    設定の効き方はスライダーで試せます。テキスト版の MANUAL.md は廃止しました。いまは日本語だけで、英語版はあとで足します