【VRM】VRM1.0でのVRM設定方法【Unity】
はじめに
みなさんこんにちは。涼海と申します。
今回は、最近調べる機会があったVRM1.0の設定方法をまとめた個人的なメモとなります。
調べた内容は主にBone周りと揺れもの周りです。
VRM0.xxバージョンは使っている人が多いイメージなのですが、VRM1.0バージョンはあまり使っている人が少ないのか、情報が出てこない印象です。
また、0.xxバージョンと1.0バージョンでかなり変更があったらしく、調べていても「???」となることが多かったです。
そのため、今までVRMを使ったことのなかった私が、VRM1.0のセットアップ方法をメモしていきたいと思います。
何か間違っているところなどありましたら、私のXにでも連絡を投げていただけたら嬉しいです。
では、よろしくお願いします。
参考
毎度のことながら、いつもありがとうございます。
VRM1.0設定方法
作業環境
Maya 2024.2
Unity 2022.3.22.f1 Build-in RP
ここで書かれていない内容
まず、この記事に書かれていない内容です。
私がVRMについて調べたことは主にBone周りと揺れもの周りの設定方法です。
そのため、以下の内容は基本的に触れておらず、他で調べていただく必要があると思います。
モデル自体の作り方
マテリアルの設定 / それに付随するテクスチャの作成方法
ほかにもところどころ省略しているところがあるので、そのあたりは別で調べていただけると幸いです。
よろしくお願いします。
VRM1.0のインポート
VRM1.0をUnityにインポートします。
これはGitからUnityPackageをダウンロードしてきて、それをD&Dする形になります。
ここから、一番最新のバージョンのUniVRM1.0をダウンロードします。
注意する点は、一番下のAssetsのところからではなく、上部にあるVRM 1.0 Import/ExportのところにあるDownloadからダウンロードをおこなえる点です。
UnityPackageのダウンロードが終わったら、それをUnityのProjectWindowにD&Dして、インポートしてください。
Humanoidの設定
次は、モデルを読み込んでHumanoid設定をしましょう。
使わせてもらうモデルはAliciaちゃんになります。
説明用にちょっとだけ改造をしてあります。
かわいいね。
Humanoid設定は先人たちがかなり丁寧に説明しているサイト・動画がたくさんあると思うので、調べてみることをおすすめします。
……説明が面倒とか、そういうのじゃないよ。うん。
Scene上でのモデルの設定
ここから、本格的にVRMの設定を始めていきます。
やることは以下になります。
モデルをPrefab化する
シーン上でTポーズにする
VRMInstance Componentを設定する
Metaデータを設定する
まずはPrefab化です。
Scene上にFBXモデルを配置します。
この時にPositionやRotateは(0,0,0)にしておくようにしましょう。
その後ProjectWindowにScene上のFBXモデルをドラッグします。
すると、Prefabが作成されます。
次にモデルをTポーズにします。
Aliciaちゃんは初期ポーズがAポーズのため、腕を上げる必要があります。
これは、手動でボーンを選択して回転させることで調整してもいいのですが、UniVRMには1クリックでTポーズに設定できる方法があったので、こちらでやってみようと思います。
やることは以下になります。
Scene上のPrefabを選択する
上の
VRM1 > Export VRM 1.0 …
をクリックして、ウィンドウを開くExport VRM 1.0… ウィンドウの中にある
T-Pose (unity internal)
をクリックする
これで1クリックでTポーズになります。
次はモデルにVRM Instance Componentを設定します。
このコンポーネントをつけることによって、「このモデルはVRMモデルですよ」というのをUnity側に伝えることができます。
方法は、Hierarchy上のモデルを選択して、Add Conponent からVRMInstanceを選択します。
次にVRMの内部データを設定します。
最初にMetaデータと書いた工程です。
以下の流れで作成します。
Project Window内でMetaデータなどを保存するフォルダを作成
VRMInstance 内の
Create new VRM10Object and default Expressions. select target folder
をクリック作成されたデータの中身をそれぞれ調整
まずは、ProjectWindowでフォルダを作成します。
私は、「VRMData」という名前でフォルダを作成しました。
次にVRMInstance 内の「Create new VRM10Object and default Expressions. select target folder」をクリックして、各種データを作成します。
この時に先ほど作ったフォルダを選択します。
作成されたデータの中身をそれぞれ設定していきます。
基本的には、BlendShapeデータの割り当てとMetaデータの設定です。
各種設定は以下動画の47:08~にわかりやすく説明しております。
私が気をつけなきゃなと思ったのは以下の部分でした。
Metaデータ内のAutherを記入するためには、Sizeの数値を1以上にする
→このSizeで人数を指定する
ここでエラーが出てエクスポートできないことがあったので、確認してみると良いと思います。
Boneの軸方向について
ここは、必要のある人だけが見ると良い部分かなと思います。
私が調べていて思った0.xxバージョンと1.0バージョンの一番の違いがこのBoneの軸です。
私もすべて分かっているわけではないのですが、簡単に言うと
1.0バージョンでは、ボーンのローカル軸情報が維持されている
ということです。
0.xxバージョンでは、正規化と呼ばれる処理がVRMを作成する最中に自動でおこなわれます。
しかし、1.0バージョンでは、この正規化の処理が手動に変更されており、普通にエクスポートしたら、モデルの持っている軸方向がそのまま使用されます。
正規化をすることによって、ボーンの軸の方向が全てUnityのワールド軸と全く同じ方向に変わります。
また、正規化によって0.xxバージョンのモデルと同じ方向になるため、FinalIK(VRIK)を使ったりするときは、正規化をおこなったほうが良いのかなと思ってます。
正規化の方法
以下の流れで正規化をおこないます。
Scene上のモデルを複製する
VRM1 > VRM 1.0 MeshUtility
をクリックTargetObjectに複製したモデルを入れて、下部のProcessをクリック
これで正規化をすることが可能になります。
揺れものの設定について
VRMではSpringBoneを使って揺れものを設定しています。
揺れものの設定は以下のコンポーネントを使用します。
VRMInstance
VRM10 Spring Bone Joint
VRM10 Spring Bone Collider Group
VRM10 Spring Bone Collider
これらのコンポーネントを段階を経て設定してあげることで、揺れものを設定することができます。
段階の考え方は以下画像のような感じです。
VRM10 Spring Bone Jointは、揺れる側(髪の毛やスカートのボーン)に設定するコンポーネントです。
こちらのコンポーネントは、ボーン(ジョイント)一つ一つにくっつけるコンポーネントでそれぞれのボーンで揺れ方を調整することが可能です。
注意することは、以下画像のように黄色の球が出てくるのは、後述するVRMInstanceに設定してあげることで表示されます。
そのため、コンポーネントをつけただけでは黄色い球はScene上には表示されません。
VRM10 Spring Bone Colliderは、揺れものがぶつかる側(胸や頭、太ももなど)に設定するコンポーネントです。
これもボーンそれぞれに設定するコンポーネントですが、1つでは足りない場合には、1つのボーンに2つ以上のコライダーコンポーネントをくっつけても良いです。
このコンポーネントはボーンに設定するとピンク色の球がScene上に表示されます。この球がモデルを覆うように大きさや個数を設定してあげます。
また、このコンポーネントは後述するVRM10 Spring Bone Collider Groupで1つの部位につき1グループでまとめます。
VRM10 Spring Bone Collider GroupはVRM10 Spring Bone Colliderを一つの部位でまとめてあげるコンポーネントになります。
モデルのどの部位に設定しても大丈夫なコンポーネントですが、おすすめは、まとめた部位の一番親のボーンに設定すると個人的にわかりやすいかなと思いました。
このコンポーネントの注意する点は、「VRM10 Spring Bone Collider Componentを設定する」という点です。
つまり、設定したボーンをD&Dしても意味がなく、ボーンに設定されているコンポーネントをD&Dして設定する必要があるということです。
VRMInstanceは、VRMのさまざまな設定をまとめているコンポーネントですが、SpringBoneについてもまとめています。
まずVRM10 Spring Bone Collider Groupコンポーネントです。
これは2か所設定するところがあります。
一つ目はSpringBone > Collider Groupsです。
プラスボタンを押してグループの個数を設定した後、設定箇所にコンポーネントを設定します。
これは単純にコライダーグループをVRMInstanceに設定しているだけです。
二つ目はSpringBone > Springs > ColliderGroupsです。
こちらもプラスボタンを押して個数を設定し、コンポーネントを設定します。
ここに設定すると、Jointsに設定されたVRM10 Spring Bone Jointが設定したコライダーに接触する(ぶつかる)ようになります。
次にVRM10 Spring Bone Jointです。
これはSpringBone > Springs > Jointsに設定します。
髪の毛だったら髪の毛一束など、ここでグループに分けてあげることができます。
基本的には1つのボーンのつながりで1グループにしてあげると良いと思います。
VRMのエクスポート
全ての設定が終わったら、VRMをエクスポートします。
モデルを選択 > VRM1 > Export VRM 1.0…
Export VRM 1.0… Windowが開いたら、一番下のExportをクリックしてエクスポートをします。
さいごに
今回はVRM1.0でのエクスポート方法についてメモをしました。
主にボーンと揺れもの周りでしたが。
マテリアル周りや、他にもまだ勉強不足で触れられなかったところ(親指の向きについてなど……)もたくさんありますが、一度ここで終わりにしようと思います。
ここまで読んでくださり、ありがとうございました。
では、また逢う日まで。
この記事が気に入ったらサポートをしてみませんか?