すうぱあR

メタセコイア4で作るvrchatアバター【アイトラッキング対応・サンプルモデル付き】

2018/10/13 09:13 投稿

コメント:2

  • タグ:
  • VRChat
  • メタセコイア
  • 3DCG
  • Metasequoia
  • VRC
メタセコイア4を使って、一発でVRChat用のアバターとして使用できるモデルを作成できましたので、作成方法のまとめです。
メタセコユーザーでblenderが苦手な人向けの情報です。

用意するもの
・メタセコイア(EX)→EXをもってない場合はpmd→pmx→FBXの変換でできますが、アイトラッキングは出来ません。
・unityとvrchatのSDK


1、アバター作成のお約束
・ボーンの並び方と名称はVRChatManに準拠すること。
・目のブレンドシェイプ(モーフ変形)を含むメッシュの名称をBodyとすること。
・ブレンドシェイプは決められた順番にならべること
・目のボーンは縦に垂直に配置すること

2、ボーン名称
vrchatアバター用のボーンは最低限unityのhumanoid形式に対応していれば、問題なく動きますが、アイトラッキングまで対応するモデルは一定のボーン名称と配置を守らなければなりません。
一定のボーン配置とはvrchatのSDKにあるvrchatManモデルと同じにするということです。


チャットマンはSDKのExample,SampleAssete,TitorialAvatarにいるよ!

メタセコイアのプリセットボーンをベースに次のように名称を書き換えます。
なお、プリセットにあるUpperChest(上半身2)は使用しないので削除する
または、チャットマンからボーンを流用してもよいです。

体幹

Armatureはモデル本体の真下Y座標0の位置(MMDなどでは全ての親)あたりにあればいようです。

腕から手まで(Spineの子になります)



フトモモからつま先まで(Hipsの子になります)





頭から目、髪の毛など(Neckの子になります)


必須ではありませんが、大文字や小文字も間違えずに入れたほうが失敗しにくいです。
特に目については必ず(LeftEye,RightEye)である必要があります。

なお、これ以外の髪の毛やスカートなどモデル独自のボーンについては特に制限はないようです。

3、ボーンの組み方
メタセコイア4のボーンリストは「ボーン」と「ノード」の2種類あります。

・ボーンリストの違い
「ボーン」
作成したボーンの編集をするところで、親子関係やダミーボーンの挿入はこっちのリストを見ながらやった方がよいです。



「ノード」
ボーン同士のつながりや階層をみるところで、変形確認はこちらでやります。
ダミーボーンなどはノードリスト上では非表示になります。



・ダミーボーン
ボーン作成の基本は公式にもありますので省略しますが、メタセコイアのボーンはMMDなどとちがって、親と子のボーン位置が離れていると必ずそれをつなぐためのダミーボーンを必要とします。
他のモデリングツールでは単なる点線になっていたりしますが、メタセコイアではボーンの一種になっています。
出力すると消えてしまうので、単なる「親子のつなぎ」として考えればいいと思います。

・頭パーツと手足の接続
shoulder(肩)は次のようにspine(腰)の子とします。


親子を変えると、ダミーを付けるか聞かれるので
ダミーがない場合はYESを選択すると自動的にダミーボーンが作成されます。
すでにある場合はNOで既存ダミーが貼り替わります。
(ダミーがないとボーンそのものが親にくっついてしまうので注意)

Eye(目)やHair(髪)はNeck(首)の子にします
各指はForeHand(腕)の子にします。
UpLeg(足)はHipsの子にします。


こんな感じに腰の先端からダミーが腕につながっていればOKです。
頭関係は、首の先端からつながっていればOKです。

ここで当然、
肩はchest(上半身)の子じゃないのか?目や髪はHead(頭)の子じゃないのか?という疑問がわくと思いますが、これで正しいです。

ボーンリストを表示したまま、chestを選択しスキニングモードで回転させてみてください。
肩が付いてこないはずです。

次に
ノードリストを表示したまま、同様にchestを回転させてみてください。
ちゃんとchestに肩が付いてくると思います。



これはノード側では「spineの先端=chestの根元」としてみているためではないかと思います。(推測)

他の部分についても、同様に可動確認してみてください。

・目のボーン作成
これはvrchatアバター独特の仕様です。
アイトラッキングするためにはボーンを縦に並べる必要があります。
Y座標以外は同じ位置に先端と根元を並べ、垂直にしてください。



最後に、ノードリストへ切り替えて、ルール通りにボーン階層が並んでいれば完成です。


(正しくノードに並んだ状態)

unityに読み込んだときは、このような並びになっていれば大丈夫です。

(unityのヒエラルキーで確認したならび)

ここで_dummyや知らないボーンが階層に出ている場合は、親子の接続や不必要なボーンがある可能性がありますので、確認した方がよいです。


4、メッシュ(オブジェクト)の名称とブレンドシェイプ(モーフ)の作成


アイトラッキング可能なモデルの場合、目の開閉のブレンドシェイプ(モーフ変形)を含むメッシュ(オブジェクト)については必ずBodyという名称にする必要があります。
これはVRchatManさんがそうなっているからとしか言いようがありませんw
小文字のbodyではなく大文字のBodyであるのが注意です。

今回のモデルでは顔パーツのみリネームしました。


次にブレンドシェイプですが、次の順番に作成します



特に上4つの目の開閉に関わるものは必ずこの順番に並んでいなければなりません。
このモーフがないと正しくアイトラッキングが動きません。

ここまでできればあとは、FBX出力してunityで必要なセットアップをして、vrchatにアップロードすれば完了です。詳しくはwikiなどご参照ください。


コンポーネント設定ではfaceMeshにこの顔パーツのBodyメッシュを選択します

ミラーでキョロキョロしていれば成功です。
https://twitter.com/chibideko314/status/1049102533338259456

5、目の注意点

アイトラッキングに成功したものの、目が想定外の方向を向いてしまっていることがあります。
その場合の原因別対処法は次の通りです。

◎目が動きすぎる
おそらくアイトラッキングの目ボーンの回転具合はvrchatManさんにあわせてあるため、アニメ系の目の大きなモデルには回転角度が大きすぎるのです(±30°くらい回ってるみたいです)。これは変更することができないので、目のパーツのウエイトで対処します。
このモデルの場合は目:頭=4:6くらいのウエイト割合にしました。

◎目が極端に下、または上を向いてしまう
これはvrchat di で設定する、VR目の位置によって視線の基準が決まるようです。
なるべく左右の黒目中央同士をつないだ線上にグレーの球が来るようにして、ほどよい視線になるまで微調整してください。

◎目が奥に回り込む、より目又はひらき目になる
これは目ボーンが正しく垂直を向いていないことが原因です。
vrchatでは目ボーンの角度を強制的に調整しているようです。垂直でないボーンは矯正された結果、180°や90°回転させられてしまうようです。
なので、対処法としては目ボーンを垂直にすることです。


6、サンプルモデルDL
だいぶ長文になりましたが、ここまで読んでいただいた方に「sampleモデル」をご案内します。
このままFBX出力してvrchat用アバターとして設定すれば、すぐにアイトラッキングまでできるものとなっています。
※humanoidにはほぼ100%マッチングしますが、たまにjawボーンがずれることがあります。


https://bowlroll.net/file/179977




コメント

ちびでこ (著者)
No.1 (2018/10/13 20:15)
実際やってみるとなかなか思い通りには行かないこともあると思いますが、なにか疑問などありましたらお気軽にコメントしてくださいネ。
ちびでこ (著者)
No.2 (2018/10/13 22:02)
お世話になった参考資料
https://www.youtube.com/watch?v=gCPcg9y4ZBM

https://jellyfish-qrage.hatenablog.com/entry/2018/07/25/034610
コメントを書き込むにはログインしてください。

いまブロマガで人気の記事