상품 설명
「集合写真を撮ったら、自分の顔だけ真っ黒に潰れていた」。
顔が暗いなおしは、アバターの顔の受光の下限と上限を、実際に描いて測って決めるUnity Editorツールです。Blenderは使いません。
◆ 何をするのか
暗い場所で顔が沈むのも、明るい場所で顔が白く飛ぶのも、シェーダーの「受光の下限」と「受光の上限」で直せます。問題は、その2つをいくつにすればいいかが計算では出せないことです。シェーダーの版によって光の混ざり方が違い、肌の明るさやテクスチャの作りでも変わります。
このツールは推定しません。暗いワールドと明るいワールドを実際に作って、あなたのアバターの顔をその中で描き、出てきた絵の明るさから逆に2つの数字を解きます。
◆ 手で動かすツールとの違い
受光の下限を手で動かす仕組みは、すでにいくつもあります。それらは「値を変える手段」を渡すもので、いくつにすればいいかは使う人が目で探します。アバターを買い替えるたび、衣装を着せ替えるたびに探し直しになります。
こちらは値そのものを出します。顔を見つけるところから、値を決めて確かめるところまでが1回のボタンで終わります。
◆ 1回で当てにいかない理由
受光の効き方は直線ではありません。2点を測って直線とみなし、1回で当てにいくと行き過ぎます。実測で、狙い0.420に対して0.553になりました。
そこで、解いた値を入れてもう一度描き、ずれていたら今描けた点を足して引き直します。これを最大3回。しなので0.446まで寄りました。画面に出る数字は、最後に実際に描いて確かめた値です。
◆ 上限は1より下も探します
明るいワールドで白く飛ぶのを止めるには、受光の上限を既定の1より下げる必要があります。上げる側だけを探す作りだと、すでに飛んでいるアバターを1体も救えません。実測でしなの0.935、Felis 0.938。どちらも既定のままで飛んでいました。両方向を探して0.875と0.877まで下げています。
◆ 顔の見つけ方
Humanoidなら目のボーンを狙います。目と目の間隔から枠の大きさも決めるので、素体の大きさが違っても枠が合います。
「全体の高さの何割」では決めません。ネコ耳・アホ毛・帽子・尻尾が上下の端を押し広げて、枠が頭のてっぺんへ逃げるためです。開発中に実際にそうなり、後頭部を測っていたことがあります。
顔が画面に写らなかったときは、数字を出さずに止まります。写っていない絵から出した中央値は、数字の形をした嘘だからです。
◆ 元に戻せます
・元のマテリアルには書き込みません。複製を作って差し替えます
・Ctrl+Z で戻せます
・複製は Assets/顔が暗いなおしGenerated/<アバター名>/ にまとまります
・2回続けて実行しても複製が積み上がりません。同じ複製に入れ直します
・「測る」だけを押した時点では、何も書き換えていません
◆ 使い方
1. unitypackage を Import
2. Tools > tool > 顔が暗いなおし を開く
3. アバターをシーンに置いて、そのアバターをドラッグ
4. 「測る」を押す
5. 結果を見て、よければ「このアバターに反映する」を押す
◆ 検証
テスト36件すべて通過。うち5件は実際に描いて直すところまでを通しています。
実物のアバター6体での実測(顔の明るさ 0〜1、既定の狙いは暗0.420 / 明0.860):
しなの 暗 0.234→0.446 / 明 0.935→0.875
Felis 暗 0.431→0.442 / 明 0.938→0.877
LUMI 暗 0.402→0.446 / 明 0.877→0.878
ツールとは別に書いた物差し(透視投影・別の背景・別の平均の取り方)でも同じ向きに動くことを確認しています。素体の入っていない衣装だけのプレハブでは、測れないと言って止まることも確認しました。
※ lilToon か Poiyomi が必要です。同梱していません(再配布になるため)。
※ 受光の下限・上限を持たないシェーダーは、理由を画面に出して対象から外します。
※ Unlitとして描く設定のマテリアルは、光の設定が効かないので外します。
※ 元から暗くないアバターでは、ほとんど値が動きません。LUMIがその例です。
※ 顔の明るさは中央値で測ります。表情や口の中の色までは合わせません。
内容物: unitypackage / README / CHANGELOG / TEST_REPORT / LICENSE / ツール画面のスクリーンショット
動作環境: Unity 2022.3.54f1 / VRChat SDK3 (Avatars) / lilToon か Poiyomi
모든 리뷰
더보기리뷰 등록
리뷰를 작성하려면 로그인이 필요합니다.
로그인하고 리뷰 쓰기