VRChatを日本人に布教中

【VRChat改変】Unityだけでアバターの首をすげかえる手順。キメラアバターを作ろう!

VRChatをはじめて2年以上たちますが、首のすげ替え改変だけには手が出せませんでした。

この記事にたどり着いたみなさまなら理由はもうお分かりだと思いますが、ネットのどの改変記事をみながらやってもうまくいかないからです。多分私の理解力がないのが問題ですが…

どうやってもろくろ首になってしまったり、首のすげ替えはできた!と思ったら表情がなくなったりとどこかに問題が起きていました。

最近、やっとUnityについて知識が深まり、今回やっと自力で首のすげ替えをすることに成功しましたので備忘録的に記事を残したいと思います。

すげ替えができると他の素体の衣装を着せられるからすごく便利!

 

VRChatのUnityにおける各種FXやアニメーションの設定はアバターによって異なります。記事通りに進めても、設定が違うせいで改変がうまくいくいかない可能性があります。また、ガチの技術者ではないので「なんか分からんけど動いてるからヨシッ」の精神で進めてる部分が多くあります。1つの参考記事として読み進めてください!

Unityでアバターアップロードや基本的な操作ができる前提で記事を書いています。分からない方は「大好きVRChat-アバター改変カテゴリ-」を見て下さい!

どのアバターをキメラにするか決める

どのアバターの頭と体をくっつけるのか決めましょう。私はもう決まっています。以下の2つのアバターをキメラ化させていきたいと思います。モフィラちゃんのなんとも言えない可愛い表情と、桔梗ちゃんのむちむちの体をくっつけて最強アバターを生み出したいと思います。

みなさんもくっつけたいアバターを決めてください。

また、規約でパーツ取りや頭のすげ替えが禁止されているアバターもあるので、利用規約も併せてご確認ください。

Unityに2体のアバターをアップロードする

Unityへのアバターのアップロード方法が分からない方は【完全版】UnityでVRChatにアバターをアップロードする手順をご参照ください。

 

Unityに2体のアバターをアップロードしました。そのほかにもSDKやシェーダーもインポート済みです。ここから早速改変をしていきたいと思います!

身長が同じくらいだったのでよかったです。

身長が大幅に違う場合は、そのままのサイズでキメラにしてしまうと頭と体の比率がおかしくなってしまうので、ある程度どちらかの身長に合わせて身体を大きくしたり小さくしたりする必要があります。

あたまとからだの位置を合わせる

今回はモフィラちゃんの頭を桔梗ちゃんの体にくっつけるので、モフィラちゃんの頭以外を全非表示にしました

。そして、桔梗ちゃんの頭を表示させておくと、どの位置にモフィラちゃんの頭をもってくればぴったりなのか分かりやすいので、まだ桔梗ちゃん側の頭はまだ非表示にしない方が作業がしやすいです。

 

モフィラちゃんの頭を桔梗ちゃんの頭位置に重ねます。

身長が似ているので顔の大きさもほぼ一緒でした。

必要に応じて頭のサイズを調整して比率が合うようにしてください。

 

頭の位置が決まったので桔梗ちゃんの顔を非表示にしました。いい感じに乗っていますね~!

 

本当にぴったりに合っているかどうか微調整していくのでモフィラちゃん側の髪の毛も非表示にして確認します。

ヤバい…首の隙間が大きすぎる…!

通常首の付け根部分はメッシュがないことが多いのですが…桔梗ちゃんの首の大きさと全然合っていません泣

頭を小さくすることでなんとか合うようにしようとしたのですが、今度は体と頭の大きさのバランスが悪くなってしまいました。これはもうBlenderに持っていって首の穴部分をふさぐしかないな…ということでBlenderをちょっとだけ使いました泣(Blender嫌い)

同じような現象で悩まれた方はBlenderで頭の穴をふさいでください。

Blenderで首の穴部分をふさいだ記事こちらです!

 

Blenderで首の穴をふさいできました。Blender側で出力したfbxをUnityにインポートして使用しています。

余計なボーンやメッシュはついでにBlenderで消してしまったので頭のメッシュとボーンしかありません!

 

再び桔梗ちゃんにモフィラちゃん頭の位置を合わせていきます(2回目)

こんな感じでいいですかね?モフィラちゃんの頭にはBlenderから持ってきた際にマテリアル設定をしていないのですごく怖い感じになってしまいました。どうせ最後にマテリアル設定をしないといけないのでとりあえずこのまま進めます。

 

桔梗ちゃんの髪を非表示にして首部分に問題がないか確認します。今度はいい感じですね!

あたまをからだに入れる

位置が最終決定したら、モフィラちゃんの頭を桔梗ちゃんにぶち込んでいきます。

いつもおなじみ、モフィラちゃんの頭を選択>右クリック>Unpack Prefabをします。

 

まずはメッシュを移動させていきましょう…と言いたいところなのですが、このままメッシュを移動してしまうと1つのアバターに同じ名前のメッシュが2つ存在してしまいます(モフィラちゃんも桔梗ちゃんも頭のメッシュ名がBody)。

そうなるとアニメーションファイルが「え!?Body2つあるけどナニコレ!?」とびっくりしてしまい表情のアニメーションが動かなくなってしまいます。

そのため、桔梗ちゃん側のBodyを「Body kikyo」という名前に変更しました。

あたま側のメッシュ名を変えてアニメーションやFXに不具合が起きると怖いから、必ず使わない側のメッシュ名を変更しよう!

 

Avatar3.0のアイトラッキング(VRC Avarar DiscripterのEye Look)を動かすために頭のメッシュ名をBodyにしないといけないため、Bodyとつけられているアバターが多くあります。他にも同じ名前のメッシュがある場合は念のため変更をしておいてください。

次こそ本当にモフィラちゃん頭のメッシュを桔梗ちゃんに入れます。

  

衣装を着せるときのようにモフィラちゃん頭のボーンを対応する桔梗ちゃんのボーンに入れ子にしていきます。今回はBlederに持っていったときに余分なボーンは削除してしまいましたのでボーン数が少なめです。

ボーン移動について分からない方は「【VRChat改変】アバターに衣装を着せる方法を徹底解説!初心者でも楽々着せ替え!」を確認ください。詳しく書いてあります。

 

基本的には頭側のHeadボーンを体側のHeadボーンに入れるだけで大丈夫ですが、まれにウェイト(メッシュとボーンをくっつけてる接着剤的な役割のもの。Blenderでしか確認できない)がHeadボーンだけじゃなくNeckボーンやChestボーンまでのっていることがあります。

その場合Headボーンだけしか移動しないと頭のメッシュが「あれ、僕たちNeckにもいるんだよ!?」と2つに分断されてしまい、VRChatにアップロードした際にメッシュが変な方向に伸びてしまう、挙動がおかしくなるなどの問題が起きてしまいます。

本来はボーン数が無駄に増えるとアバターが重くなってしまうためできればHeadボーンだけの移動が望ましいのですが、モフィラちゃんの頭のメッシュのウェイトがどこのボーンまでのっているか分からなかったため、念のためHeadだけではなくSpineやHipsも含めて移動することにしました。

何を言っているかよくわからんという人はとりあえずHeadボーンだけを移動させてみて。アップロードした際に挙動がおかしくなってしまったら、Hips⇢Spine⇢Chest⇢Neck⇢Headのボーンも入れてみると解決するかも!

  

色々とありましたが、とりあえずモフィラ頭のメッシュとボーンを無事、桔梗ちゃんのほうへ移動が完了しました。

 

マテリアル設定を合わせる

マテリアルの設定を直していきます。普通、アバターのマテリアル設定は使っているシェーダーやその中の数値が違うため、同じではありません。

アバター作者さんが各々設定してるからマテリアル設定が全く一緒になることはまずない!

 

なのでどちらかのマテリアルに合わせていきます。今回は桔梗ちゃん側のマテリアルに合わせることにしました。桔梗ちゃんマテリアルにはliltoonシェーダーが設定されているので、liltoonシェーダーで説明が進みますが、基本的にVRChat向けのシェーダーは名前が違うだけで似たような項目がありますので、liltoonシェーダー以外の場合は参考にしながら必要に応じて変更をしてください。

  

モフィラちゃんの部位はもちろん頭しかないので、桔梗ちゃんの頭のマテリアルをモフィラちゃん頭に入れていきます。

まず、モフィラちゃんのマテリアルはなにがあるか確認します。メッシュに入っているマテリアルは、ヒエラルキーでBodyを選択>インスペクターMaterials で確認ができます。

モフィラちゃんのマテリアル数は異常に多いですね…普通は1つ、せいぜい2つくらいなのですがモフィラちゃんは5つも入っています。

よく見ると、顔のベースのマテリアル×1(Face)、目のマテリアル×2(Eye,EyeETC)、表情のパーツマテリアル×2(FacePart,FaceETC)の構成のようです。

桔梗ちゃんの顔のマテリアルはそもそも1つですべて完結しているので、顔のベースのマテリアルに桔梗ちゃんの顔マテリアルを入れてあとはモフィラちゃんのデフォのマテリアルを使おうと思います(目や表情パーツくらいはマテリアルが別でも多分違和感ない)。

 

桔梗ちゃんの顔のマテリアルであるM_Faceをモフィラちゃんに入れました。なんだかすごいことになってしまいました。こうやってぼやぼやが出ているのは、シェーダーの設定から輪郭線の数値を小さくすると解決します。

 

Liltoonシェーダーは、メッシュを選択>インスペクターから該当のマテリアルの▶を選択>輪郭線 から☑を外します。

他のシェーダーの場合でも同じように輪郭線(Outline)に関する項目があると思うので、数値を小さくするかチェックを外してしまいましょう。

ぼやぼやは消えましたが、顔はまだおかしいですね。

それもそのはず、テクスチャがまだ桔梗ちゃんのテクスチャのままなので、モフィラちゃんの顔のテクスチャに差し替えます。

 

liltoonは色設定>メインカラー/透過設定(色替え)>メインカラーからテクスチャの変更ができます。

モフィラちゃんのテクスチャを入れたらすっきりしました!

  

非表示にしていた髪と、Blenderから持ってきたことでおかしくなっていたシェーダーの設定もすべて元に戻しました!

テクスチャの地肌の色が桔梗ちゃんとモフィラちゃんは似ているようで顔と身体の色の差にそこまで違和感がありません。

Skined Mesh Rendererの設定

モフィラちゃんのメッシュを選択し、インスペクターからSkined Mesh Rendererの設定を行います。

 

RootBoneに入っているHipsはモフィラちゃんのからだのHipsなので、桔梗ちゃんのからだのHipsを入れます。

 

Anchor Overrideには、桔梗ちゃんの他のメッシュに入っていたAnchorをドラッグ&ドロップしました。からだ側アバターのメッシュに入っているものと同じボーンを突っ込んでください。

あたま側アバターから持ってきたメッシュすべてに同じように設定をします。

ここを設定しないとワールドによっては頭と身体の色が変わってしまうことがあります。

VRC Avatar Discripterの設定を行う

まだ設定しないといけない部分はありますが、ここまできたら一度テストアップロードをしてあたまとからだが正常につながっているか確認してみます。

表情もPhysBoneの設定もしていないので表情は動きませんし髪も動きませんが、とりあえずあたまとからだは繋がっていることが確認できました。

ここで繋がっていなかった場合はどこか間違えて作業をしている可能性があるので、以降の作業をしても無駄になってしまいます。

  

VRC Avarar Discripterの設定のをしていきます。

View Pointの設定

ヒエラルキーでアバターを選択しインスペクターのVRC Avarar DiscripterからView Pointを設定します。Editを押すと、大体頭の位置に丸いグレーの球が出てくるので、目の間に半分埋める位置に調整しReturnで決定します。

View PointはVRChat上で自分の視点になるものだよ!

 

LipSyncの設定

次はリップシンクの設定です。FaceMeshの項目にあたま側のメッシュをドラッグ&ドロップしてきます。

その下のViseme:Sil~と並んでいますが、こちらは自動で入ればそのままでOKです。空欄になってしまった場合は、あたま側のアバターのVRC Avarar Discripterを参考にして同じように設定をしてください。

リップシンクを設定することで、声を発した時に設定された形でアバターの口が動いてくれるよ!

  

Eye Lookの設定

モフィラちゃんのVRC Avarar Discripterを見たところ、どちらも真ん中で設定されていたので同じようにしました。基本的にあたま側のアバターのVRC Avarar Discripterと同じように設定すれば問題ありません。

目が自動で動くときの頻度や動き方についての設定だよ!

 

Eyesの設定

Eyesにはモフィラちゃんのヘッドボーンの中に入っているEye_LとEye_Rをそれぞれドラッグ&ドロップします。名称は違うかもしれませんが同じようなボーンがHeadの中に入っていると思いますのでEyesの設定にドラッグ&ドロップして入れてください。

  

Rotation StateはモフィラちゃんのVRC Avarar Discripterを真似して設定しました。アバターによって結構数値が違うようなので必ず確認して入れてください。

目が左右上下どこまで動くかの設定!

 

Eyelids

モフィラちゃんのEyelidsの設定を確認したところNoneだったのでNoneにしました。あたま側のアバターに設定が入っているようであれば同じように設定をしてください。

 

Playable Layers

ここが一番重要な設定になってきます。ここの設定で表情や体の動きをつけているのでミスると表情が動かなくなります。

まずBaseには桔梗ちゃんのLocomotionを入れます。からだの動きに関する設定なのでからだ側のアバターのLocomotionを入れないと破綻してしまいます。

Locomotionには座りや寝ころびの設定値が入っています。

 

だったらGestureもからだ側のアバターの設定を入れないといけないんだろうか?と思い、桔梗ちゃんのGestureを入れたところ表情が破綻しました。VRChatでは手のジェスチャーと表情が連動しているので、ここはあたま側のGestureを入れた方がよさそうです。

最後にFXの設定をします。FXには表情や着せ替えのアニメーションが設定されている部分になります。表情を動かしたい場合はあたま側アバターのFXを入れないといけません。しかし、あたま側アバターのFXには、もちろんからだ側アバターの着せ替え設定値は入っていないのでExpressionMenuからできる着せ替えシステムは動かなくなります。

多分頭、頭すげ替えをするくらい改変好きな方は別衣装を着せると思うのであまり問題ないとは思いますが、からだ側アバターのデフォの着せ替えシステムを使いたい場合、FXを設定しなおさないといけません。

どうせ別の衣装をきせてしまうので、ExpressionMenuで着せ替えはできなくてもいいやの精神なので、ここでは別途設定は行いません。

 

Expressions

上で触れたExpressionメニューの設定です。

どうせほとんどのシステムが死んでしまい動かないと思いますが、気休めにモフィラちゃんのMenuParametersを設定しました。

 

一応必要なすべての設定が終わったのでもう一度VRChatにテストアップロードをして動きを確かめてみます。

無事桔梗ちゃんのLocomotionが作動し、表情も動くようになりました。

一応これで完成にします!

めちゃくちゃ長い作業にお付き合いいただきありがとうございます。

ここまでおつかれさまでした!

  

PhysBoneの設定について

大変申し訳ないのですが、PhysBoneの設定値に関する知識がほぼないのでPhysBoneの設定についてはこの記事では説明ができません。なので必要な方は各自調べて設定をお願いします!(すみません!)

  

髪も別の髪にしちゃうし、ケモミミも非表示にしちゃうからあたま側アバターのほうで揺れ物の設定は必要ないよ!という方はそもそも飛ばしちゃってOKな項目です。

 

実は、モフィラちゃんの髪の毛やケモミミのPhysBoneの設定値をコピーしてキメラアバターにペーストして設定を試みたのですがうまくいきませんでした。

というのも、PhysBoneの設定値(特に髪の毛)はほとんどがPhysBoneColliderの設定値と連動しており、PhysBoneColliderがからだ側アバターには存在しないボーンに関連付けられて設定されていたからです。キメラにしてしまうとこういった問題が生まれるのですね💦

その問題を別にしても、コライダー設定を削除してもなぜか元のアバターからコピーをしてきても髪に動きがつかなかったので、諦めました。もう少しUnityの勉強をしようと思います。