lilxyzw / lilycalInventory

Modify avatar at build time.
MIT License
21 stars 3 forks source link

lilycalInventory

This project is under development and may be subject to breaking changes

このプロジェクトは開発中であり破壊的な変更がされる場合があります

説明

このツールは非破壊でVRChatのアバターを編集するツールです。オブジェクトのオンオフ、BlendShapeの切り替え、マテリアルの置き換え・プロパティ操作・プロパティ統一などができます。VRChatでの同期周りの事故も意識されており、全パラメーターがオフときの見た目がprefabの状態と一致するようになっています。

インストール

Releaseからunitypackageをダウンロードしてインポートしてください。1.0.0リリース時にはVPMでのダウンロードに対応予定です。

使用方法

オブジェクトのオンオフ

オンオフしたいオブジェクトにLI Propコンポーネントを追加するだけです。オブジェクトが初期状態でオフの場合はオンになるアニメーションが、初期状態でオンの場合はオフになるアニメーションが生成されます。同時に切り替えたいオブジェクトがある場合は一緒に操作するパラメーターオブジェクトのオンオフにそのオブジェクトを追加してください。

複数衣装の切り替え(排他)

各衣装のルートにLI AutoDresserコンポーネントを追加するだけです。このときオンになっていた衣装がデフォルト衣装になります。アバター標準衣装などオブジェクトがまとまっていない場合は、衣装のメイン部分にLI AutoDresserコンポーネントを追加し、一緒に操作するパラメーターオブジェクトのオンオフに衣装の他部分を追加してください。

アバターの明るさ調整

lilToonの場合はPrefabsフォルダ内のLightChangerをアバターに追加するだけです。他シェーダーの場合は手動でプロパティを設定してください。

  1. Hierarchyで右クリックしCreate Emptyでアバター内に新しいオブジェクトを作成
  2. そのオブジェクトにLI SmoothChangerコンポーネントを追加
  3. フレームの+ボタンを押し、フレーム値を0に設定しマテリアルのプロパティ操作に操作するメッシュとプロパティを指定(メッシュが未指定であれば全メッシュを操作)
  4. フレームの+ボタンを押し、フレーム値を1に設定し3の手順同様に設定

アバターの体型調整

  1. Hierarchyで右クリックしCreate Emptyでアバター内に新しいオブジェクトを作成
  2. そのオブジェクトにLI SmoothChangerコンポーネントを追加
  3. フレームの+ボタンを押し、フレーム値を0に設定しBlendShapeの切り替えに操作するメッシュとBlendShapeを指定(メッシュが未指定であれば全メッシュを操作)
  4. フレームの+ボタンを押し、フレーム値を1に設定し3の手順同様に設定

作成したメニューの整理

  1. Hierarchyで右クリックしCreate Emptyでアバター内に新しいオブジェクトを作成
  2. そのオブジェクトにLI MenuFolderコンポーネントを追加
  3. 作成したメニューをこのオブジェクトの配下に入れる(移動できない場合はオーバーライドでこのオブジェクトを指定する)

メニューをModular Avatarで管理する

このツールのコンポーネントを付けたオブジェクトはMA Menu Groupの中に入れたときに自動的に対応するMA Menu Itemが生成されます。もしオブジェクトを移動できない場合はMA Menu Groupの中に新規のMA Menu Itemを作成し、移動できないオブジェクトのオーバーライド (Modular Avatar)に作成したMA Menu Itemを設定してください。

オンオフするオブジェクトに直接コンポーネントを付けたくない場合

LI PropLI ItemTogglerLI AutoDresserLI CostumeChangerで代用できます。こちらのコンポーネントではオンオフする対象を手動で設定してください。

lilAvatarModifierからの移行

移行したいアバターのルートやprefabを選択してTools/lilycalInventory/Migrate From lilAvatarModifierを実行すると自動的にスクリプトが置き換えられます。こちらの移行機能は1.0.0リリース時に削除されます。

メニュー生成コンポーネント

名前 説明
LI MenuFolder メニューのフォルダとなるコンポーネントです。各コンポーネントを整理したい場合に使います。パラメーターは生成されません。
LI Prop 付けたオブジェクトをオンオフできるシンプルなコンポーネントです。オブジェクトが初期状態でオフの場合はオンになるアニメーションが、初期状態でオンの場合はオフになるアニメーションが生成されます。
LI ItemToggler オブジェクトのオンオフ、BlendShapeの切り替え、マテリアルの置き換え・プロパティ操作を行うコンポーネントです。Boolパラメーターが生成されます。
LI CostumeChanger 複数衣装の着替えを想定したコンポーネントで、排他的に動作します。各衣装でItemTogglerと同じような操作ができます。Intパラメーターが生成されます。
LI SmoothChanger アバターの明るさ調整や体型調整を想定したコンポーネントです。無段階でオブジェクトの操作ができます。Floatパラメーターが生成されます。
LI AutoDresser 複数衣装の着替えを想定したコンポーネントです。LI CostumeChanger同様に動作しますが、こちらは各衣装のルートにつけるだけで動作します。Intパラメーターが生成されます。
LI AutoDresserSettings AutoDresserに関する設定を行うコンポーネントです。現在は生成されるメニューの位置と名前の変更だけ行うことができます。1アバターにつき0または1つだけ設定してください。

その他コンポーネント

名前 説明
LI MaterialModifier アバターのライティングの統一などを想定した、マテリアルの設定を指定したマテリアルに統一するコンポーネントです。
LI MaterialOptimizer マテリアルから自動的に不要なプロパティを削除するコンポーネントです。
LI Comment GameObjectにコメントを表示するだけのコンポーネントでこれ自体に機能はありません。prefabの説明を残す用途を想定しています。

LI Comment

これはGameObjectにコメントを表示するだけのコンポーネントでこれ自体に機能はありません。prefabの説明を残す用途を想定しています。メッセージの種類をMarkdownにすることでマークダウン構文を使用したコメントを表示することもできます。現在は下記の構文に対応しています。

上記構文に加えて<color=#ffffffff>色</color>のような構文で文字に色をつけることもできますが、Unityにはダークテーマとライトテーマの二種類が存在するためどちらでも見やすい色を指定するように注意する必要があります。

Direct Blend Treeを使用した最適化

Tools/lilycalInventory/Use Direct Blend TreeがオンのときにDirect Blend Treeを用いてこのツールで生成されるAnimatorControllerレイヤーを1つに統合します。ただしこちらの機能はExpressionParametersとAnimatorControllerでパラメーターの型が異なっても動作することを利用しており、VRChatの仕様変更で正常動作しなくなる可能性があるためデフォルトではオフになっています。