自分からお得情報とか言ってくるやつはだいたい胡散臭いぜ。
前提条件: シェーダーは特に記載のない限り lilToon を用いています。
lilToon にメインカラー4th/5thを追加する改造版 については別記事の lilToon (Mod) を参照のこと。
MDIS を Modular Avatar で導入するやつ については別記事の MDIS_forMA を参照のこと。
NormalMap for MatCap
を設定してました
カスタムノーマルマップ
NormalMap
をお借りしていますtl;dr わたしのlilToonでの設定例です
つまり肌用のノーマルマップとマットキャップを拝借するんですが、出来が良いのでおすすめです。ノーマルマップが結構細かめなのでメインのマットキャップ用が7x7、マットキャップ2ndで1x1でも足りるかも。わたしは足りてます。あとはデフォルトだと結構写真やミラーでの見栄えがギラつくので、マイルドにしたければお好みでマットキャップのぼかしを調整してください。わたしは 4.5
です。
水滴については各素体のUVに合わせてあるので非対応モデルで使うのは向いてないと思います。わたしのイメリスちゃんの場合、水滴なし(プレーン)での使用です。
Body
と胴体である Imeris_body
それぞれに適用することで3種類の切り替えアニメーションが作れます。- | プロパティ | 地肌 | 日焼け1 | 日焼け2 |
---|---|---|---|---|
メインカラー2nd | Skinned Mesh Renderer.Material._Use Main 2nd Tex |
0 | 1 | 0 |
メインカラー3rd | Skinned Mesh Renderer.Material._Use Main 3rd Tex |
0 | 0 | 1 |
完成。動画→ https://twitter.com/hotatech/status/1638294627936776194
これを活用することで、マテリアル1つだけで好きなテクスチャを上から重ねて使うことが出来ます。
例えば2Pカラーを作っていて、素体は爪の色だけを変えたいということもあるでしょう。爪だけの透過テクスチャを置けば簡単ですね! 素体のPSDには入っているけれどデフォルトでは非表示の、何とは言わないレイヤーを使いたいけど、おはツイには写り込んで欲しくない…そんなときにも当該レイヤーだけを背景透過で書き出してアニメーションを組みましょう。 あとはタトゥーのオンオフなんかも出来ますね。したいかどうかわからんけど。
もうこれらのために素体のテクスチャを複数枚書き出す必要も、その容量を気にすること[2]も、またテクスチャの数だけマテリアルを複製する必要もありません。上に書いたMatCapの設定をマテリアルごとにやり直す地獄のような作業からも開放されます!
…とまあこれらを欲張り過ぎると、メインカラー2ndと3rdの2枚だけでは到底足りなくなることもあります。わたしは足りなくなったので4thと5thを追加しました。…lilToonを改造することで。
追記: 要望があったので(まだlilToon本体を上書きして使うことになりますが)試験的に置いておきます。
https://wiki.maud.io/vrchat/liltoon
シェーダーには不慣れなため直接 lilToon 本体を改造しており、まだ共存できるカスタムシェーダーとして配布できる状態にはないのですが、一応できなくはないよというデモ程度に紹介しておきます。やることといえばメインカラー3rdの項目全部調べ上げて複製するだけなんだけど、結構多いんだこれが…
ちなみに 2nd, 3rd と数のデカいほうがレイヤーとしては上に表示されるようなので、例えば日焼けよりは爪のほうを数のデカい側に置いといたほうが良いみたいです。
「新しい方の金ビキニ」「金ビキニ2」とか呼ばれる 【3D衣装モデル】swimwear_2set - HornetBbeeeee の金色が結構銅っぽいエレガントで落ち着きのある金色なので、前作であるところの 【3D衣装モデル】bikini - HornetBbeeeee みたいな明るく派手めのゴールド[3]にしちゃいましょうよ、というやつ。
ビフォー
アフター
これを弄るのが一番効く。
GIMPの場合は 「色(C)」→「色相-彩度(S)」 を開き、色相を 15.0
から 18.0
あたりのお好みの値に調整する。輝度や彩度は触らなくて良い。
他のソフトでどうするかまでは知らん。
MatCap同様に 「色相-彩度」 ウィンドウを呼び出して、今度は
10.0
10.0
20.0
くらいにする。このへんもお好みで。ぶっちゃけやらなくてもMatCapだけでだいぶ良くなってる。
うちのイメリスちゃん(Imefox)のトレードマークとなりつつあるバイザーですが、もともとは衣装の付属品[4]でした。
なので容量がもったいないからといって解像度を落とすと、衣装のテクスチャの隅っこ故に更に小さくなってしまい、縞模様がぼやけて悲しいことになります(画像左)。
簡単な図柄については lilToon のデカール化を活用することで、右のようにクッキリとした表示でかつテクスチャ容量や描画負荷を減らすことができます。やってみましょう。
あ、先に言っておくと今回は MSDFテクスチャ には触れません。サンプルがたまたまシンプルな直線で済んだので触る機会がなくわたしもわからん…
今回は幸いにもバイザー本体に布地のようなちょっと手の込んだテクスチャやノーマルマップは入っていないので、画像を入れずに色指定で真っ黒にしてしまいます。まあこれは極端な例であって、普通は衣装のメインテクスチャが入っていると思います。少し解像度を落としたりするのもいいでしょう。
128x128 のキャンバスに、白の縦縞3本を入れただけの透過画像を用意しました。ここで デカール化 を有効にします。
すると項目が増えるので、シーンビューを見ながら貼る場所をいい感じに調整します、X/Y座標、X/Y軸サイズ、角度、だけでだいたいなんとかなるでしょう。デカールを自由に貼れるレースゲーム(わたしはForzaシリーズやTrials Risingしか心当たりが無いですが)を触ったことがあればだいたい通じると思いますが、要はああいうやつです。
思いつく例としては、素体のテクスチャ解像度を2048とかに抑えつつ、タトゥー単体を別に画像で用意してデカールで乗せると解像度稼げてきれいにできる気がします。レイヤーの枚数にも限りがあるので全身あちこちに入ってるとかだと難しいですが、どこかにワンポイントで入ってるくらいだとこの手法がうまくハマりそうですね。たまにタトゥーのためだけにメインテクスチャ8192で入れてるみたいな話も聞くので…。一方で、淫紋みたいに同じ位置でEmissionも使うことがあるとかだと位置合わせ的には不利な気がします。知らんけど
衣装の解像度を下げて図柄をデカールで貼るのはちょっと試したんですが、よく見ておかないと影響範囲が意外とデカくて失敗します(一敗)。
https://twitter.com/hotatech/status/1634296946264506368
Sync Elements
活用法このセクションは Avatar3.0 での着せ替えギミックを組むのに マジックドレッサーインベントリ / MagicalDresserInventorySystem を使用している人が想定読者層です。
これ使ってまで複雑な着せ替え組んでるほうのアバターでは Modular Avatar を使わず AvatarAssembler で着せており[5]、MA 環境での使い方は知らないので答えられないです。ごめんね。
ナイト・イン・ヨシワラ 、いい衣装ですよね!今日はこの衣装を例に説明していきます。
ヨシワラの暖簾こと NiY1_Tails
、普段はオンオフできるとちょっと嬉しいけど、帯を無くしてインナーだけのときは暖簾の出処が無くなって宙ぶらりんになってしまうのでオフにしたいですよね?
これをMDISで組もうとしたらどうなるでしょうか?以下のように、排他で組もうとして全てのパターンを作っていませんか? それとも、各パーツを全部 Toggle で組んで事故ったりしてませんか?
- 📂 Layer_A
- 👚 帯あり_暖簾あり
- 👚 帯あり_暖簾なし
- 👚 帯なし_暖簾あり // 要らないかも
- 👚 帯なし_暖簾なし
もはや全ての状態を個別のメニューアイテムとして作る必要はありません。 Sync Elements
を活用しましょう。
実は 作者の解説動画 でちょこっとだけ触れられてます
NiY1_Tails
のオンオフは普通に Items(IsToggle
) として独立させましょう。
NiY2_Ribbon
を一緒にしたので Ribbon/Tails
という項目名になっています。IsDefault
のチェックを入れておきます。そして Layer_A などで排他にしている、帯などの衣装パーツ[6]を操作する各項目から Sync Elements
を開きます。
そしたら他の項目名が並んでいるので、先程の Ribbon/Tails
にチェックを入れて、On / Off は この項目でのデフォルト値 にしたいほうにチェックを入れておきます。デフォルトの組み合わせの項目では On に、インナーのみの項目では暖簾が必要ないので Off にチェックを入れる感じですね。
ちなみに Scene ビューには表示上反映されないので、セットアップしてから GestureManager などで動作確認することをおすすめします。
結果的にはこのようになります。
- 📂 Items (toggle)
- 🎀 Ribbon/Tails // 暖簾オン
- 📂 Layer_A
- 👚 帯あり // デフォルト: 暖簾オン
- 👚 帯なし // デフォルト: 暖簾オフ
Ribbon/Tails
は Layer_A の項目切替時に同期されますが、その後 Expression Menu から手動で切り替えることもできます。
これは Items と Layer_B の項目を Layer_A から Sync Elements
で制御する例(実際に使ったものを簡略化)。もちろん Layer_A に書かれているのはデフォルト値でしかないのでそれぞれの項目は好きにオンオフしてよい。
ここまでやるならアニメーションは手組みしたほうがいいという意見もあるとは思いますが、Animator組むのが圧倒的にだるいのと、ツールが触ってるところに人の手を加えるのもだるいため MDIS 内で完結させます[7]。
- 📂 Items // 単純にオンオフだけで良いアイテム
- 🎀 アイテム X: オン
- 📂 Layer_A // 全体の着せ替え制御
- 👚 組み合わせ1 // アイテムX: オン, アイテムY: オン, Y干渉防止: 100
- 👚 組み合わせ2 // アイテムX: オフ, アイテムY: オン, Y干渉防止: 0
- 👚 組み合わせ3 // アイテムX: オン, アイテムY: オフ
- 📂 Layer_B // シェイプキーの値を複数持ちたいなどで排他が必要なアイテム
- 👢 アイテム Y: オン // 干渉防止シェイプキー100
- 👢 アイテム Y: オン // 干渉防止シェイプキー0
- 👢 アイテム Y: オフ
GIMP とかの一部のソフトでは該当する機能がなく正しく開けない。わたしは Affinity Photo の v1 を持ってたのでそれで。 ↩︎
素体のテクスチャ丸ごとを2枚書き出せば容量は2倍ですが、ベースと小さな差分いくらかだったら1.5倍以内には収まるんじゃないでしょうか…という雑な予想。メインテクスチャと同じ解像度である必要もなかったりするし、結構抑えられるような ↩︎
単に前作のMatCapを持ってくるだけではあんまり良くならない。前作の金色はほとんどテクスチャの力が強すぎたため… ↩︎
そうじゃない新規のアバター組むときとか、人に教える時はちゃんとMA使ってるからゆるして… ↩︎
ここでは帯 NiY1_Obi
、そして帯なしのときに消している首元の NiY2_NeckCloth
、こいつの有無で首用のシェイプキーの値が変わるインナーの NiY2_Under
など ↩︎
実際 MDIS で操作される GameObject に対して自分で組んだアニメーションを優先して反映させるためには、MDIS でセットアップを完了させるごとに FX 内のレイヤー順を変えてやる必要があり、ここがだるいポイントのひとつ。Modular Avatar で組むなら MA Merge Animator
の入っている GameObject の並び順になるのでやや楽かも。 ↩︎