表情と AnimationClip¶
送り手で作った表情は、表情ファイルか AnimationClip として保存できます。
どちらも送り手の 表情を読み込む… で読み込めます。
| 形式 | 中身 | 向いている使い方 |
|---|---|---|
表情ファイル(.json) |
既定値から変えたブレンドシェイプだけ | 作業途中の保存、別のアバターへの持ち込み |
AnimationClip(.anim) |
登録したすべてのブレンドシェイプの値 | アバターの表情としてそのまま使う |
表情ファイル¶
保存する¶
送り手の 表情を保存… を押し、保存先を選びます。
既定の保存先は %LOCALAPPDATA%\Kaotsuki\Expressions\、ファイル名は <マップ名>_<日時>.json です。
保存されるのは、既定値から変えたブレンドシェイプだけです。 別のアバターで読み込んだとき、表情と関係の無いブレンドシェイプ(体型など)を書き換えないためです。
別のアバターで読み込む¶
表情ファイルはメッシュのパスとブレンドシェイプ名で記録されます。読み込むときは次の順に当てはめます。
- メッシュのパスと名前が両方一致するブレンドシェイプ
- 無ければ、名前だけが一致するブレンドシェイプ(そのアバターに 1 つだけある場合)
- どちらも無ければ既定値
同じ素体の衣装違いのアバターなら、顔のメッシュの名前が違っても(Body と Face など)同じ名前のブレンドシェイプに適用されます。
読み込むと 表情を読み込みました(N 件を適用、M 件はこのアバターにありません) のように結果が表示されます。
AnimationClip を読み込む¶
送り手の 表情を読み込む… で、Unity の AnimationClip(.anim)も開けます。
クリップの表情がスライダーに入り、Kaotsuki が ON ならそのままアバターに送られます。
既存の表情のクリップを VRChat の中で確かめ、スライダーで調整してから書き戻す、という使い方ができます。
読み込めるクリップ
- Unity の
Project Settings → Editor → Asset SerializationがForce Text(既定)で保存されたものだけ読めます。 それ以外ではテキスト形式で保存された AnimationClip だけを読み込めますと表示されます。 - 時間で変化するクリップ(まばたきのループなど)は、各ブレンドシェイプの最初のキーの値を使います。
このとき、メッセージの後ろに
時間で変化するカーブは最初のキーの値を使いましたと表示されます。 - ブレンドシェイプ以外のカーブ(オブジェクトの表示切り替えなど)は無視します。
AnimationClip として保存する¶
送り手の AnimationClip として保存… を押し、保存先を選びます。
Unity のプロジェクトの Assets/ の中に保存してください。Unity に切り替えると、自動で取り込まれます。
- 登録したすべてのブレンドシェイプの値を書きます(既定値のままのものも含みます)。 Write Defaults が OFF のアバターでも、前の表情が残らずにこのクリップの表情になります。
- 保存ダイアログは、前回 AnimationClip を保存・読み込みしたフォルダから開きます。
既存のクリップに上書きしても大丈夫です
上書きしても .meta は変わらないため、そのクリップを使っている Animator やメニューはそのまま新しい表情になります。
AnimationClip ではないファイルを選んだ場合は、上書きせずに AnimationClip ではないファイルは上書きできません と表示します。
表情を調整して書き戻す手順¶
- 送り手の
表情を読み込む…で、調整したい表情のクリップを開きます。 - VRChat の中で見ながら、スライダーで調整します。
AnimationClip として保存…で、同じクリップを選んで上書きします。- Unity に切り替えると、クリップが更新されます。
Unity で表情ファイルから AnimationClip を作る¶
受け手の Inspector の 表情ファイルから AnimationClip を作る… でも、表情ファイルからそのアバター用の AnimationClip を作れます。
- 表情ファイルを選びます。
- 保存先を選びます(
Assets/の中)。
別のアバターで保存した表情ファイルでも、このアバターのメッシュのパスでクリップが作られます。 既存のクリップに保存すると、中身だけを書き直します(GUID は変わりません)。