でこぶろ

MMDやvrchatなど、3Dモデリングに関するブログになります。

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を複製して名称を変えたものを作るとよい

f:id:chibideko:20210104100143p:plain

ブレンドシェイプ作例

15の口の形についてはこちらを参考にしてください

vrchatjp.playing.wiki

又はアニメ系モデルなら大体このような感じで設定すればよいです。

顔モーフ(指定名称) 類似表情など(参考)
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準拠のため)両手に同じハンドサインの形が入ったアニメーションクリップにする

 

f:id:chibideko:20210104201621p:plain

ハンドサイン例

なお、vrcsdkの中に各ハンドサインのデータがあるのでそれを流用する場合は作成不要(ただし、アバターに合う形でないこともある)
vrcsdk→exsamples3→Animation→proxyAnim→proxy_Hand_〇〇となっているクリップ

 

2、表情のみのアニメーションクリップを作る
ハンドサインに対応して変化させたい表情のみのアニメーションクリップをつくる
idleを除く7種類まで作れる

 

f:id:chibideko:20210104201900p:plain

困り眉のシェイプキーを入れた例

<注意点>

表情を作るときにvrc.v_aaなどリップシンクで使用するブレンドシェイプは使わない。クリップ内に含まれているとリップシンクが動かなくなる

 

3、表情リセット用のクリップ作成

独自表情のブレンドシェイプにゼロでキーをうったクリップも一つ作る

(ここではzeroshapeというクリップ名にしました)

f:id:chibideko:20210104213450p:plain

ゼロキーを打ったところ

<注意点> 

リップシンク専用、自動まばたき専用のブレンドシェイプにはゼロキーを打たないこと

 

C、アニメーターコントローラーの設定

1、Gesture用(ハンドサイン用)のコントローラーを作る
vrcsdkからアニメーターコントローラーを複製して使用する
vrcsdk→exsamples3→Animation→controllersと進み
vrc_AvatarV3HandLayer2」を選択、ctrl+Dで複製。
複製したものをrenameしてわかりやすい名前に変える

 

f:id:chibideko:20210104213311p:plain

VRC_AvatarV3HandLayer2の場所

作っておいたハンドサインのアニメーションクリップをLeft Hand /Right Handレイヤーの各ステートにセットする(クリップを独自のものに差し替える)
leftとrightに同じアニメーションクリップが入ることになる

f:id:chibideko:20210104213315p:plain

アニメーターコントローラー

f:id:chibideko:20210104214609p:plain

アニメーションクリップの差し替え

なお、vrcsdkのハンドサインをそのまま流用する場合はコントローラーの複製とリネームのみでよい。(クリップの差し替えは不要)

 

◎確認ポイント◎

アバターマスクで左右の手が分けられていること
□レイヤーのウエイトは1になっていること

write defaltのチェックがはずれていること

※コントローラーを複製して使用している場合は設定済みなので確認不要

 

f:id:chibideko:20210104215903p:plain

アバターマスクとウエイトの設定

f:id:chibideko:20210110122618p:plain

Write defultのチェックを外す


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よりも上の位置にドラッグして移動する

 

f:id:chibideko:20210104220538p:plain

表情のコントローラー設定

◎確認ポイント◎
□レイヤーのウエイトが1になっていること
□ゼロシェイプのレイヤーがLeft hand /Right handよりも上の位置にあること
write defaltのチェックがはずれていること

 

D、VRC_Avatar Descriptorの設定

playablelayersの項目のcustomを押して、
guestureの欄にはハンドサインのアニメーターコントローラーを入れる
FXの欄には表情用のコントローラーを入れる

f:id:chibideko:20210110125739p:plain

descriptarの設定

この他は普通の設定なので省略します。

 

vrchatにアップロードして動作を確認します

Rキーを押して、円盤メニューからコンフィグ→デバックを表示してgestureやFXの項目で正しくアニメーションが動いているか確認できます。