【Unity】Blenderで作った3DモデルをVRMにして動かす

Unity

今までは3Dモデルを作って動かすのはVRChatでやっていたのですが、Blederで作ったキャラをVRM化して色んなとこで動かすことができたので、そのメモを残しておきます。

最初から最後までVRoidで作ったのならVRMで出力できるのでそのままでいいのですが
この子はベースをVRoid、細かい調整をBlenderで作ったので、VRoidのもとの揺れ設定やコライダーの設定は全部削除された状態です。BlenderからFBXでエクスポートしてUnityで設定する手順になります。
Unityの基本的な操作とかは書いてないので、そのあたりは動画とかで検索してみてください。

最初に用意するもの

とりあえず用意しておくものは
①Unity Hub
②UniVRM
③FBXで出力した自作モデル

Unity Hubの用意の仕方は、私の過去の記事の「Unityからアバターをアップロードする」にもありますが、探せば動画がたくさんあると思うのでそちらを見てもいいと思います。

UniVRMは(今なら2023年9月)ここからv0.99.2をダウンロードしておきます。
https://github.com/vrm-c/UniVRM/releases/tag/v0.99.2

FBXの出力の仕方はVRChat用の時と同じです。
Shiftを押しながらカメラとランプのチェックを外す。スケールを適用をすべてFBXに変更。
アーマチュアのリーフボーンを追加のチェックを外してFBXをエクスポートでOKです。

全部用意ができたら、Unity Hubから「新しいプロジェクト」をクリックして、3Dの状態で適当に名前を付けてプロジェクトを作成します。

Unityの画面が開いたら、ダウンロードしておいたUniVRMをダブルクリックしてインポートします。


なんかAccept Allみたいなのが出たらクリックして進みます。
Assetsの中に、右クリック⇒Create⇒Folderで新しくフォルダを作っておいて、そこに出力したFBXファイルやテクスチャファイルをまとめてドラックアンドドロップでぽんっと置きます。
置いたらFBXファイルをHierarchyのところにもっていっておきます。私のはマテリアルとテクスチャがうまくつながってないせいか真っ白ですが、あとで設定するのでいったん置いておきます。

マテリアルを設定する

本当ならRigの設定からやったほうがいいんでしょうけど、今見た目が真っ白で見づらいので先にマテリアルの設定をしちゃいます。
FBXのモデルを選択して、MaterialsからExtract Materials..ってボタンをクリックします。
たぶん今現在のフォルダが指定されているのでそのままフォルダの選択でOKです。

すると丸いマークのやつが出てきたので、ここでテクスチャと紐づけていきます。
この時この丸いマーク、これがどこのマテリアルなのかよくわかんないってときはBlender側で分かりやすい名前にしておくといいです。
細かい設定はあとでやるので、いったんマテリアルをCtrlを押しながらすべて選択します。
ShaderのところからVRM⇒MToonを選びます。

例えば私の場合、「髪の色」という丸いアイコンをクリックして
このTexureのところに髪の毛のテクスチャをぐーっともっていってぽんっと置きます。
デフォルトの色が暗いので、①のところを真っ白に、②のところで好きな影色を設定します。
あとはこの辺をいじってみてお好みで影や線の調整をします。
個人的なメモとしてはこれくらいですね、設定をいじったのは。
・Shading Tonny:影をどれだけはっきりとさせるかぼやーっとさせるか
・Shading Shift:影の範囲?どれだけ影を付けるか、影を減らすかを調節できる

アウトラインを付けたい場合は、ここのModeを「ScreenCoordinates」にすると、線がでてくるので
色や太さの調整をします。

半透明のマテリアルの場合、Rnering Typeの値をCutoutにしておきます。
照れとか青ざめとか、目のハイライトとか半透明のテクスチャにしてある部分はCutOutにしておきます。半透明の設定をしてる時はアウトラインを付けると変になるので、マテリアルを一気に設定した場合は半透明のマテリアルだけアウトラインはオフにしておきましょう。

また、裏面を表示したい部分はCull ModeをOFFに設定しておきます。
スカートの中とか髪の裏面とかBlenderで見たとき面が赤い部分がある場合、テクスチャがおかしなことになってしまうので。

リグの設定

この辺はVRChatでの設定とほぼ同じですね。
FBXファイルを選択して、RigからAnimationTypeを「Humanoid」にします。
今更ですがこれは人型のモデルの話なので、人の形とは違う動物や人外のモデルはどうやるのかわかりませんすみません💦
Humanoidにしてから右下のApplyを押すと、Configureというボタンが押せるようになっているのでそれをクリック。

だいたいは綺麗にボーンが設定されていると思いますが、ここのBody,Head,LeftHand,RightHandを全部見て、ボーンがそれぞれの位置に正しく設定されているか確認してください。
だいたいHeadのJaw(あご)の部分に髪の毛のボーンが入ってたりするので、もし入っていたら右の丸のマークからNoneを選択してください。

もしこの時点で「このキャラ、Tポーズじゃないよ!」と警告が出ていたら
右下のほうにPose▼というのがあって、そのPose▼のとこから「Enfrce T-Pose」をクリックすればTポーズにしてくれます。

設定できたら右下のApplyをクリックします。
このMuscles&Settingsのところでスライダーを動かすと、足や腕、手がどういう風に動くのかが確認できます。この時点で腕や足が変な方向に曲がってる!とか、ウェイトペイントの設定がミスってる!とかわかったりするので、見つけたらBlenderに戻りましょう(涙目)

揺れ物の設定

リグとマテリアルの設定が終わったらいったんVRMで出力します。
VRMで出力するキャラクターが選択されている状態でVRM0からExPort to VRM 0.xを選択。


Titleにキャラの名前
Versionに自分の分かりやすい数字
Authorに自分の名前を書きます。

サムネを設定したいときはHierarchyにあるメインカメラをキャラクターの顔が映る位置までもっていって
スクリーンショットをクリックして、サムネイルを保存すると設定されます。

そしたら右下のExportをクリックします。
結構な数のファイル(フォルダ)が作られるので、わかりやすいようにどこかに新しいフォルダを作成してそこにVRMファイルを出力した方がいいです。

出力されたら、そのVRMのモデルをHierarchyに置きます。
さっきまで作業してたFBXのほうのモデルは見づらいので非表示にしておきます。
そのVRMのほうのモデルを選択すると、「secondary」というのが追加されてます。
ここにSpingBoneっていうものが入ってるので、ここで揺れ物の設定をします。

例えば私のモデルの場合は後ろの三つ編み部分だけ揺れを設定するとします。
三つ編み部分のボーン名はHair012なので、Root Bonesのところの値を1にしてHair012を指定します。
再生ボタンを押して、キャラクターを動かしてみると、三つ編みが揺れていることがわかります。

このままだと揺れが大きかったり形が崩れたりとかあるので、必要があれば値を調節します。
値の個人的なメモとしては

・Stiffness Force:元に戻る強さのようなもの。0(最小)にすると全然ついてこないというか、揺れた後なかなか戻らない感じで、4(最大)にするとあまりゆらーっとは揺れず、シュンッと形がすぐ戻るような揺れになる。

・Gravity Power:重力の設定。0だと元の形状が維持される。顔とか体を傾けても髪やケモミミが垂れ下がらない。値を上げると、重力に従って下にだる~んと垂れ下がるようになる。
頭とか体とかを傾けていい感じの重力設定にするのだ!

・Drag Force:引っ張る。抵抗する力?みたいなもの。値を小さくすると、めっちゃプルプルのゼリーのような、バネのようなあまり大きく揺れない揺れになる。値を大きくすると水中みたいなゆ~っくりとした大きな揺れになる。


※注意
再生ボタンを押しながら揺れの確認をした場合、再生ボタンをオフにすると値が元に戻ってしまうので再生中にその設定した値を取っておきたかったら右クリック⇒Copy Compornentをしておきます。
再生ボタンをオフに後にその値を設定したい場所で右クリックをしてPaste Component Valuesをすれば再生中に設定した値を設定できます。


あとはこのままだと三つ編みが背中とかお尻とかに貫通してしまうので、コライダーグループの設定をします。
三つ編みが当たりそうだなーと思う部位(ボーン)に設定していくのですが、直接ボーンに設定してもOKです。
私の場合、Hipのボーンを選択し、右クリックからCreate Emptyで新しい箱を作って、名前をわかりやすいものにします。のところに作り、お尻コライダーって名前を付けてます。

そのお尻コライダーにAdd Componentから「VRM Spring Bone Colider Group」を追加します。

大きさを変えたければRadiosの値を、もっと腕とか足とかに長ーくつけたい!って人はSizeの数を増やしてXやYの値をそれぞれ調整してコライダーの設定をしていきます。
とにかく三つ編みが当たりそうだなーと思う場所にひたすらコライダーを設定していきました。

あとはsecondaryで、追加したコライダーグループを設定します。
追加したコライダーグループの数を入力して、このように全部指定します。


あとは同じように揺れ物が必要な部分にどんどん追加していくのです。
ほかにも別のところに揺れが欲しいと思ったらscondaryのところからAdd ComponentでSpring Boneを追加します。
数が増えてくるとどれがどこの揺れの設定だったっけ?となるのでCommentのところにどこの揺れか書いておくといいです。

Blendシェイプを設定する

揺れ物の設定が終わったら表情を設定していきます。
VRMを作ったフォルダにBlendShapesっていうフォルダができているのでその中から「BlendShapes」という箱をクリックします。

それぞれにAとかIとかのボタンがあるのでAのところをクリックして、私の場合「Body」というパーツに顔のシェイプキーがあるのでそこから「あ」の口を設定します。

LookUpとか目の動きはシェイプキーで作っているならそれを割り当てます。
ない場合はそのままなしで進みます。
Clusterでは驚く表情もあるので、追加したいときはCreate BlendShapesClipから名前を「Surprised」にして驚いた表情も作っておきます。

目の可動域を設定する

VRMモデルを選択して、VRM Look At Headのところに頭のボーンを指定して、左目と右目のボーンがso指定されていることを確認します。

最初に再生ボタンを押して、Targetのところにメインカメラを設定します。
そしたらメインカメラを選択した状態でTransformからXやYの値を変えて目の動きを見てみます。

このままだと目が動きすぎてるので調整します。
私の場合目が上に動きすぎて気持ち悪いので、ここの値を調整してます。
調整し終わった後は右クリックでCopy Compornentで値をちゃんと取っておいてから再生ボタンをオフにしてPaste Compornentで設定した値にしておきます。

ここまで設定したら最初にVRMで出力したのと同じように、VRMで出力するキャラクターが選択されている状態でVRM0からExPort to VRM 0.xを選択で指定のフォルダに保存すればOKです。

VRMモデルを動かす

VRMモデルができたけどどこで動作確認をすればいいんだ…ってなると思うので
いくつかURLを貼っておきます。それぞれの詳しい使い方は書いてませんので
使い方や利用規約はそのサイトをよく読んで使ってくださいね。

3tene
VRMモデルの表情や歩く、走る、踊るといった動きを確認できます。
他にも背景やモデル以外のオブジェクトも設定できるようですが、私は簡単に動作確認で使ってます。


VARK SHORTS
VRMモデルのショートムービーが作れます。
用意されたテンプレートを選ぶだけでキャラクターが動きます。


VRM Live Viewer
VRMモデルを踊らせることができます。MMDモーションやカメラが使えるのですが、ものによっては利用規約で「MikuMikuDance以外では使っちゃだめよ!」とか「ニコニコ動画以外に動画を投稿しちゃだめよ!」とか言う決まりがあったりするので、その辺気を付ける必要があります。

Cluster
VRChatと並ぶ(?)メタバースプラットフォームです。スマホからでも遊べるみたいです。
でもVRMアバターを使うにはミッションをクリアしないとできません。
あと、ポリゴン数に制限はないですが、ポリゴン数が多いとグラフィックの値を下げたときにポリゴンが削られるのか見た目が割れたり汚く見えてしまうこともあります。

Blenderからやり直したい場合

やっぱりウェイトを塗り直したいなーとかシェイプキーがおかしいからやり直したいな。と思ったとき
またBlender⇒FBXエクスポート⇒Unityで設定…
という感じで最初からだと結構大変なのでこちらをまずダウンロードします。

unity-overwriter-master
こちらをダウンロードしたら、UnityでWindows⇒Package Managerから+のところをクリックしてAdd Package from diskを選びます。
そこでさっきダウンロードしたunity-overwriter-masterの中にあるpakage(Jsonファイル)を選択します。

そしたらやり直したFBXファイルを同じ名前で出力して、同じ場所にドラッグアンドドロップするとこんなメッセージが出てくるはずです。
ここで置き換えるを選ぶとFBXファイルが新しいものに置き換わってくれるので、マテリアルやリグの設定をもう一度やらなくてよくなります。


●揺れ物の設定を引き継ぐ場合
FBXファイルをまたVRMで出力して、別のフォルダに保存してHierarchyに持ってきたところまできたら、新しい方は揺れ物の設定が全くない状態なっていますね。
その揺れ物など設定した内容をコピーするためものをこちらでダウンロードします。これはVRChatのアバターの設定なんかでもよく使っています。

CopyComponentsByRegex
こちらをダウンロードしたらダウンロードしたフォルダごとAssetにぽんっと置きます。
するとAssetの下にこんなフォルダができるので、揺れ物の設定がしてあるモデルを右クリックすると「Copy Components ByRegex」というのが追加されてるのでそれを選びます。

今回はVRMの揺れの設定なので「VRM」と入力して「Copy」をクリック。
揺れ物を設定したい新しいモデルのほうを選択した状態で「Paste」すると揺れ物の設定がコピーできます。
ただ、ボーン名を変えたり、ボーンを追加したりすると正しくコピーできないのでそのあたりは手動で設定することになります。

スターライトⅢの配布について

大きく動かすとだいぶ髪や服の貫通や形崩れが目立ちます。
揺れも通常のVRoidよりもかなり固めなので、踊らせるにはあまり向かないかもしれません。
それでもよければこちらからダウンロードしてください。

Unity
スポンサーリンク

コメント

Ads Blocker Image Powered by Code Help Pro

本サイトは広告を使用しております。

広告をブロックする拡張機能を使用していることが検出されました。お手数おかけいたしますが、広告ブロッカーを無効にして更新ボタンをクリックいただきますようお願いいたします。