コンテンツにスキップ

04_Hair Tone Matcher

差し替えた髪の色味を、元の髪へ近づけます。

追加のパッケージは不要です。 色を書き込む先(新しい髪)のマテリアルが lilToon または Poiyomi である必要があります。 元の髪のマテリアルは、どのシェーダーでもかまいません。

こんなときに使います

髪を差し替えると、テクスチャの色合いやマテリアルの設定が違うため、同じアバターでも別物の質感になります。 手で直そうとすると、シェーダーの色調補正のスライダーを目視で合わせることになり、 正解が分からないまま時間だけが溶けます。

このツールは、元の髪と新しい髪のテクスチャの色を統計で比べ、寄せるための補正値を算出します。

合わせられるのは色味だけです

メッシュの形や陰影の付き方の差は埋まりません。 また、彩度と明度には上限があるため、元の髪より暗い髪を十分に明るくできない場合があります。

使い方

  1. 元の髪のマテリアルを 1 つ以上指定します。マテリアル単体でも、Renderer のスロットからでも追加できます。
  2. 新しい髪を指定します。GameObject(Prefab を含む)を指定して配下の Renderer をチェックで選ぶか、Renderer を直接追加します。
  3. 「色を比べる」を押します。
  4. 一覧から対象を 1 つ選び、補正値と平面プレビューを確認します。
  5. 書き込み方法と出力フォルダを確認し、「適用」でチェックした対象へまとめて反映します。

対象は既定ですべて未チェックです

Renderer を足すと、その Renderer が持つ全マテリアルスロットが対象として並びます。 髪の Renderer が「髪」と「髪飾り」の 2 スロットを持つ構成は珍しくないため、 既定ではチェックが入りません。色を変えたいスロットだけにチェックを入れてください。

元の髪が複数あるときは、全部の画素をまとめて 1 つの統計にします(目標にする色は 1 つです)。 新しい髪は対象ごとに別々の補正値を算出します。前髪と後ろ髪でテクスチャが違っても対応できます。 同じマテリアルを共有する対象は 1 つにまとめて扱われます。

色の合わせ方

どの色を目標にするかを選びます。

方式 内容
統計(既定) 指定範囲全体の代表色どうしを合わせます
スポイト 2 枚のテクスチャからそれぞれ 1 点を選び、「この色をこの色に」と指定します

スポイトは、「元の髪のこのハイライトに、新しい髪のこのハイライトを合わせたい」という 狙いがあるときに使います。拾うのは 1 画素ではなく周囲を含めた平均のため、拾い直しても値が安定します。

どう合わせるかも選べます。

方式 内容
色調の補正(既定) 色相・彩度・明度・ガンマで寄せます
階調を合わせる 色の分布どうしを合わせる曲線を作ります。影の色味やハイライトの色被りまで揃います

階調を合わせる方式は、統計方式のときだけ選べます(分布を使うため、2 点からは作れません)。

書き込み先

モード 挙動
複製 + テクスチャ焼き込み(既定) マテリアルとメインテクスチャをどちらも複製し、補正を新しいテクスチャの画素へ焼き込みます
複製して差し替え(補正は設定として保持) マテリアルを複製し、補正をシェーダーの設定として書き込みます
上書き 新しい髪のマテリアルそのものを変更します

既定が焼き込みなのは、シェーダーのフォールバックに強いからです

補正をマテリアルの設定として持つ方式は、シェーダーがフォールバックすると補正ごと消え、 髪の色が元の状態に戻ります。 焼き込んだテクスチャならその影響を受けません。

代わりにファイルが増え、値だけをあとから微調整することはできません (下記の「焼き直し」で作り直せます)。

上書きモードは、そのマテリアルを共有している他のオブジェクトにも影響します

適用前に、参照している Renderer の数がウィンドウに表示されます。必ず確認してください。

複製または新しいテクスチャを作る場合は、Assets/ 配下の出力フォルダを指定します。 階調をマテリアル設定として書き込む場合は階調 LUT が、マスクを書き出す場合は適用範囲マスクが、 同じフォルダに作られます。

色を変えたくない部分を除く

適用する範囲は、次の重ね合わせで決まります。

条件 内容
サブメッシュの UV そのマテリアルスロットが使っている範囲だけを対象にします
既存のマスク マテリアルがすでに持っている適用範囲マスク
追加のマスク 自分で指定するマスクテクスチャ
アルファ 透明な画素を統計から除きます

髪飾り対策の主役はサブメッシュの UV です。 髪飾りが別マテリアル・別サブメッシュに 分かれていれば、それだけで対象から外れます。

「マスクを書き出す」を選ぶと、この範囲をマスクテクスチャとして出力し、マテリアルへ設定します。 同じテクスチャを共有している他のパーツを巻き込まずに、髪だけの色を変えたいときに使います。

適用したあとの調整

適用後、ウィンドウの下部に「反映の切り替え」が出ます。

  • 色調補正の反映を切り替えられます。外すと適用前の状態へ戻ります
  • コピーしたマテリアル設定を、機能グループごと・行ごとに切り替えられます
  • 色調補正の 4 成分とコピーした値は、その場で直接編集できます
  • 「適用時の値」と「編集中の値」のテクスチャが左右に並び、結果を見比べられます

焼き込みモードで適用した場合は、「この値で焼き直す」で元のテクスチャから作り直せます。 生成済みの PNG が同じパスで更新されるため、ファイルは増えません。

焼き直しは「元に戻す(Undo)」では取り消せません

テクスチャファイルの更新であり、Undo の対象外です。 また、階調を合わせる方式で焼き込んだテクスチャは焼き直せません。

切り替えが有効なのは、ウィンドウを閉じるか再コンパイルが走るまでです

それ以降は、この欄から元の値へ戻すことはできません。

マテリアル設定のコピー

色味だけでは埋まらない差(影の濃さ、リムライト、マットキャップ)を揃えるために、 元の髪のマテリアル設定を選んでコピーできます。

  • 同じシェーダー同士でのみ行えます
  • 値が食い違う項目だけが一覧に出ます。既定ではすべてチェックが外れています
  • 機能グループごとに折りたためるほか、プロパティ名や表示名で絞り込めます

テクスチャは原則としてコピーしません

マスク・ノーマルマップ・メインテクスチャは、新しい髪のメッシュの UV に合わせて作られています。 元の髪のものを持ち込むと壊れるためです。 マットキャップなど UV に依存しないテクスチャだけがコピーの対象です。

制限と注意

項目 内容
実行できない状態 再生中
対象にできないもの 対応シェーダーでないマテリアル、ロックされているマテリアル、元の髪と同一のマテリアル
既存の補正 新しい髪にすでに色調補正が入っている場合、算出値で置き換えます(足し込みません)。走査時に警告が出ます
Undo マテリアルと Renderer の変更は取り消せますが、生成したファイルは残ります

マテリアルがロックされている場合は、解除してから実行してください

ロック中はプロパティを書き込んでも見た目が変わりません。複製してもロックは外れません。 このツールから解除することはできないため、シェーダーのインスペクターで解除してください。

よくある症状

髪の一部だけ色が変わらない

そのマテリアルを使っている Renderer が対象に入っているか確認してください。 前髪・後ろ髪・アホ毛が別 Renderer の場合、すべてを指定すると適用範囲がまとまります。

髪飾りが同じマテリアルを共有している場合は、逆に色が変わってほしくない部分まで含まれます。 その場合は追加のマスクで除外してください。

適用したのに色が変わらない

マテリアルがロックされていないか確認してください。 また、シェーダー側でその機能が無効になっている場合は、 シェーダーのインスペクターで一度その機能を有効にしてから実行してください。

色調整後のテクスチャが見当たらない

書き込み先が「複製して差し替え(補正は設定として保持)」になっていませんか。 このモードでは補正はマテリアルの設定として保存され、テクスチャは作られません。 テクスチャが欲しい場合は「複製 + テクスチャ焼き込み」を選んでください。

アバターを別のプロジェクトへ移したら色が戻った

シェーダーがフォールバックしています。 「複製 + テクスチャ焼き込み」で適用し直すと、フォールバックしても色が保たれます。

元の髪をもう消してしまった

元の髪はマテリアル単体で指定できます。Renderer は必須ではありません。

重ね塗りの警告が出る

メインテクスチャ以外のレイヤーが有効になっている髪です。 メインテクスチャだけを合わせても最終的な見た目は一致しません。 マテリアル設定のコピーで、該当のレイヤー設定も合わせることを検討してください。