VRChat avatar3.0の表情設定レシピ!
【はじめに】
皆さん今日は!vrchat楽しんでますか?
vrcはavatar3.0になってから設定の自由度が高く、製作者のアイデア次第でアバターに多様な機能が付けられるようになりました。
その反面、コレという定番設定もありません。
それゆえに私としてもモヤっとした所が多かったので思い切ってまとめてしまうことにしました。
Unityの基本操作やモデリングなど細かい技術説明は省いて「手順のみ」のまとめになります。
よかったら参考にしてください。
【めざす方向】
現状はavatar2.0の設定を踏襲したものが多いので、次の状態を目指します。
- 現段階でvrc公式が推奨する設定に準拠したもの
- avatar2.0と同じくハンドサインで表情が変わる
- 自動まばたき対応
- リップシンク対応
【用意するもの】
①ブレンドシェイプのあるFBXモデル(モデリングツール等で作成)
・VRC公式指定の口の形15種類
・blink他まばたき関係
・独自の表情
②アニメーションクリップ(unity内で作成)
・ハンドサイン用8種類(左右の手共通)
・表情用8種類
【手順】
A、ブレンドシェイプの作成
使用するアバターの3Dモデルにはモデリング段階で次のブレンドシェイプ(モーフ)を作っておく
・自動まばたき専用の1種類(blinkのみ)
・リップシンク専用の15種類の口の形
・独自の表情(目、眉、口、その他など好きなだけ)
独自のまばたきはblinkを複製して名称を変えたものを作るとよい
15の口の形についてはこちらを参考にしてください
又はアニメ系モデルなら大体このような感じで設定すればよいです。
顔モーフ(指定名称) | 類似表情など(参考) |
vrc.v_sil | 真顔/デフォルト |
vrc.v_aa | あ |
vrc.v_ih | 「あ」の50% |
vrc.v_th | 「あ」の50% |
vrc.v_kk | 「あ」の50% |
vrc.v_ff | 「あ」の20% |
vrc.v_rr | 「あ」の20%=ff |
vrc.v_e | え(または「い」) |
vrc.v_dd | 小さめの「え」/または「え」 |
vrc.v_ss | 小さい「い」=ch |
vrc.v_ch | 小さい「い」=ss |
vrc.v_ou | 小さい「お」 |
vrc.v_oh | 大きい「お」 |
vrc.v_pp | にやり |
vrc.v_nn | ん/=ih or =dd「え」または「あ」の50% |
vrc.lowerlid_left | |
vrc.lowerlid_right | |
vrc.blink_left | |
vrc.blink_right | |
blink | 両目まばたき |
<注意点>
リップシンクや自動まばたきで使うブレンドシェイプはハンドサインで変形する表情では使用できないので、使いたい場合は同じブレンドシェイプ複製して別名にしておく
B、アニメーションクリップの作成
1、ハンドサインのみのアニメーションクリップを作る
vrchatで決められている手のポーズのアニメーションクリップを作る。
次の8種類
・fist(グー)
・peace(チョキ)
・open(パー)
・gun(人差し指と親指でピストル)
・point(ゆびさし)
・rocknroll(グーから人差し指と小指を立てる)
・thumbsup(グーから親指だけたてる、「いいね」の形)
・idle(力の入ってない自然な手の形)※vrcsdkのProxy_Hand_idle2をそのまま使ってもよい
今回は(2.0準拠のため)両手に同じハンドサインの形が入ったアニメーションクリップにする
なお、vrcsdkの中に各ハンドサインのデータがあるのでそれを流用する場合は作成不要(ただし、アバターに合う形でないこともある)
vrcsdk→exsamples3→Animation→proxyAnim→proxy_Hand_〇〇となっているクリップ
2、表情のみのアニメーションクリップを作る
ハンドサインに対応して変化させたい表情のみのアニメーションクリップをつくる
idleを除く7種類まで作れる
<注意点>
表情を作るときにvrc.v_aaなどリップシンクで使用するブレンドシェイプは使わない。クリップ内に含まれているとリップシンクが動かなくなる
3、表情リセット用のクリップ作成
独自表情のブレンドシェイプにゼロでキーをうったクリップも一つ作る
(ここではzeroshapeというクリップ名にしました)
<注意点>
リップシンク専用、自動まばたき専用のブレンドシェイプにはゼロキーを打たないこと
C、アニメーターコントローラーの設定
1、Gesture用(ハンドサイン用)のコントローラーを作る
vrcsdkからアニメーターコントローラーを複製して使用する
vrcsdk→exsamples3→Animation→controllersと進み
「vrc_AvatarV3HandLayer2」を選択、ctrl+Dで複製。
複製したものをrenameしてわかりやすい名前に変える
作っておいたハンドサインのアニメーションクリップをLeft Hand /Right Handレイヤーの各ステートにセットする(クリップを独自のものに差し替える)
leftとrightに同じアニメーションクリップが入ることになる
なお、vrcsdkのハンドサインをそのまま流用する場合はコントローラーの複製とリネームのみでよい。(クリップの差し替えは不要)
◎確認ポイント◎
□アバターマスクで左右の手が分けられていること
□レイヤーのウエイトは1になっていること
□write defaltのチェックがはずれていること
※コントローラーを複製して使用している場合は設定済みなので確認不要
2、表情用のコントローラーをつくる
vrcsdkからアニメーターコントローラーを複製して使用する
vrcsdk→exsamples3→Animation→controllersと進み
「vrc_AvatarV3HandLayer2」を選択、ctrl+Dで複製。
複製したものをrenameしてわかりやすい名前に変える
作っておいた表情のアニメーションクリップをLeft Hand /Right Handレイヤーの各ステートにセットする(クリップを独自のものに差し替える)
leftとrightに同じアニメーションクリップが入ることになる
idleは何もシェイプキーが入っていないアニメーションクリップにする
※vrc_AvatarV3Hand_idle2のままでもよい。ハンドサインで自作したクリップでもよい
3、表情リセット用のレイヤーを追加する
レイヤーのプラスボタンを押してレイヤーを新規作成する。適当な名前を作る。
ここではfaceDefaultと命名する(わかりやすければなんでもよい)
レイヤー内にB-3で作成した「zeroshape」のクリップをドラッグ&ドロップ
オレンジのステートになったことを確認。
ステートを選択してインスペクターからwrite defaltのチェックをはずす
レイヤーの歯車ボタンを押して、weitを1にする
レイヤーをLeft hand /Right handよりも上の位置にドラッグして移動する
◎確認ポイント◎
□レイヤーのウエイトが1になっていること
□ゼロシェイプのレイヤーがLeft hand /Right handよりも上の位置にあること
□write defaltのチェックがはずれていること
D、VRC_Avatar Descriptorの設定
playablelayersの項目のcustomを押して、
guestureの欄にはハンドサインのアニメーターコントローラーを入れる
FXの欄には表情用のコントローラーを入れる
この他は普通の設定なので省略します。
vrchatにアップロードして動作を確認します
Rキーを押して、円盤メニューからコンフィグ→デバックを表示してgestureやFXの項目で正しくアニメーションが動いているか確認できます。