まゆたまガジェット開発逆引き辞典

電子工作やプログラミングのHowtoを逆引き形式で掲載しています。作りたいモノを決めて学んでいくスタイル。プログラマではないので、コードの汚さはお許しを。参照していないものに関しては、コピペ改変まったく問いません

VRM(VRoid産)にパーツを追加して再びVRMに戻す

VRoidで出力したり他サイトで購入したVRMアバターにパーツを付け足して、再度VRMに戻す方法です。
Blenderを使用して変換する方法は紹介されていますが、「再度VRM化する際にボーンの割り当てが変更になっていることがある」という注意点があります。
今回はMayaを使ってパーツを追加していますが、Blenderでも注意点は同じです。

★VRoidStudio-v0.5.4-p2以降のバージョンでは、スキニングのあるなし関わらず、Unityに持っていった際に上手くいきませんでした

Mayaを使ってパーツ追加をする(Blenderの場合は2.3を飛ばす)

1.BlenderVRMを読み込み、FBX化

Mayaを使う場合はUnityでのアセットは使用厳禁。BlendShapeがおかしくなります。
プラグインの追加・VRM読み込み・FBX書き出し方法はこちらを参照します。このときBlenderのバージョンは2.8を使用します。
toylabo.tech

MacBlenderではVRMファイルの読み込みに失敗することがたまにあります。
失敗したか否かは見た目からは分かりません。エラーみたいなのも画面上には表示されませんでした。
Mayaに読み込んだ状態でボーンの形があからさまにおかしくなっている場合は失敗している可能性が高いです。

下記が成功例です。ボーンが身体全体を覆っている状態は失敗している可能性があります。
f:id:prince9:20190315235948p:plain

パーツ追加でBlenderを使用する場合は、この後2.と3.を飛ばしてパーツを追加・スキニング(ウエイト塗り)をしていきます。

2.1.で書き出したものをMayaで読み込み、パーツ追加・スキニング

スキニングが終わったら、ヒストリーを削除してから保存とFBX書き出しを行います。
追加パーツを移動・拡大縮小・回転させた際は、スキニング前に「修正」メニュー→「トランスフォームのフリーズ」をしておきます。
追加パーツは別シーンで作った後、モデルのみ消去して「追加パーツのみのFBXファイル」を作って読み込むとトラブルがなさげでした。
ヒストリーが残っているとエラーが起こりやすいです。

※スキニングによってはヒストリーを削除するとUnityでエラーが出ることがあります。
パーツを追加してそれのみFBXで書き出す→読み込み→トランスフォームのフリーズ→スキニング→書き出しがいちばん無難かもしれません

f:id:prince9:20190315192209p:plain

3.2.をBlenderで読み込み、FBXで書き出し(未確証ですが、3.をやらないとVRM化でエラーが起こる)

この作業の必要性が個人的に???だったのですが、ここを通さないとUnityでVRM化の際にBlendShape関連のエラーが起きました。ので一応記載。
書き出しの設定方法は1.と同じです。
toylabo.tech

1度目のVRM化(Blender使いもここ注意)

4.Unityで書き出したFBXファイルを読み込み、1回目のVRM化を行う(Blenderのみの場合も、VRoidを使用している場合はここ重要)

VRMで書き出す前に下記の作業をします。VRoidから書き出したモデルを使用している場合は必ず必要になります
1.Projectの中のFBXファイルをクリック
2.Inspectorが出てくるので、「Rig」タブから「Animation Type」を「Humanoid」にして一度「Apply」を押す
3.「Configure...」にチェックが入っていればOK
4.「Configure...」をクリックし、「Head」ボタンをクリックする

f:id:prince9:20190315193913p:plain
↑Headボタンをクリックした状態

5.Left Eyeの横の「J_Adj_L_FaceEyeSet」をクリックし、Hierarchyの中の「J_Adj_L_FaceEye」をクリックする
f:id:prince9:20190315194229p:plain

6.同様にRight Eyeの横の「J_Adj_R_FaceEyeSet」をクリックし、Hierarchyの中の「J_Adj_R_FaceEye」をクリックする
7.Headのボーンの割り当てが下記のようになっているか確認する。jawにボーンが入っていたら、jawの右の◎をクリックして「None」を選択する
f:id:prince9:20190315194348p:plain

設定が終わったら、「Apply」→「Done」の順にボタンを押す

8.1度目のVRM化。マテリアルとテクスチャはこの後設定するので、Humanoid化とボーンの割り当てを変更したらVRM化を行う。
FBXファイルをHierarchyに配置してクリック→「VRM」メニューの「UniVRM-バージョン」を選択→「Export humanoid」で1度目の書き出し
9.下記を参考にして、マテリアルとテクスチャを再設定する
qiita.com
10.こちらのやり方で揺れモノやコライダーの設定を再設定する
scrapbox.io
※上記の「[設定を出力する手順]」でHierarchy上にモデル1体のみ置くことを推奨されています。
この場合、このようにしてモデル1体のみ表示します。
1.「Assets」を右クリックして「Create」→「Prefub」を選択
2.新しくできた「New Prefub」の名前を英語で変更する
3.Hierarchy上のモデルを2.にドラッグ&ドロップする
4.Hierarchy上のモデルを右クリックし、「Delete」で消す
5.再度モデルを置く場合は3.でできたPrefubをHierarchyにドラッグ&ドロップする

5.その他細かいところを修正する

2度目のVRM書き出しを行う前に、10.では調整しきれていない箇所やBlendShape(表情)の再設定を行う。
VRoidからの書き出しの場合は、VRMアバターを選択して出てくるInspectorにて下記を修正する。
VRM Look At Bone Applyerの「Degree Mapping」→「Horizontal Outer」「Horizontal Inner」の「Curve X 〜」と「Curve Y 〜」の値を下記のようにする
f:id:prince9:20190315194919p:plain

VRM Blend Shape Proxyの「Blend Shape Avatar」→「BlendShape」をダブルクリックして、「LOOK〜」以外の表情を設定する
→「LOOK〜」は未設定でもOKだが、下記の方法で設定するとプログラム上でいぢりやすくなる。
1.Blend Shapeの設定画面を開いた状態で、「LOOKUP」ボタンをクリックする
2.「Material List」タブをクリックして「+」を押してから、VRoidの場合は下記のように設定する。
「LOOKUP(上を向いた状態)」では「Offset」のYの値を変えることになる。この値はモデルによって違うので、下の「BlendShape」画面を見ながら調整する
f:id:prince9:20190315195913p:plain
3.他の「LOOK〜」も同様に設定する

2度目のVRM

6.2度目のVRM書き出しを行う

1回目のVRM書き出しで作成されたVRMファイルをHierarchyに配置してクリック→「VRM」メニューの「UniVRM-バージョン」を選択→「Export humanoid」で2度目の書き出し


スキニングがちゃんと出来ていれば、下記のようにFBX化の際に追加した鈴が髪の毛(揺れモノ設定あり)に追従します。
hub.vroid.com