見出し画像

【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からダウンロードをおこなえる点です。

Release Notesのすぐ下にあるDownloadから
ページ下部にあるAssetsからではなさそう

UnityPackageのダウンロードが終わったら、それをUnityのProjectWindowにD&Dして、インポートしてください。

上にVRM1というのがあれば大丈夫

Humanoidの設定

次は、モデルを読み込んでHumanoid設定をしましょう。

使わせてもらうモデルはAliciaちゃんになります。
説明用にちょっとだけ改造をしてあります。
かわいいね。

かわいい
DirectionalLightの色変え忘れてるから黄色いけど

Humanoid設定は先人たちがかなり丁寧に説明しているサイト・動画がたくさんあると思うので、調べてみることをおすすめします。

……説明が面倒とか、そういうのじゃないよ。うん。

Scene上でのモデルの設定

ここから、本格的にVRMの設定を始めていきます。
やることは以下になります。

  1. モデルをPrefab化する

  2. シーン上でTポーズにする

  3. VRMInstance Componentを設定する

  4. Metaデータを設定する

まずはPrefab化です。
Scene上にFBXモデルを配置します。
この時にPositionやRotateは(0,0,0)にしておくようにしましょう。
その後ProjectWindowにScene上のFBXモデルをドラッグします。
すると、Prefabが作成されます。

D&DするだけでOK

次にモデルをTポーズにします。
Aliciaちゃんは初期ポーズがAポーズのため、腕を上げる必要があります。

これは、手動でボーンを選択して回転させることで調整してもいいのですが、UniVRMには1クリックでTポーズに設定できる方法があったので、こちらでやってみようと思います。

やることは以下になります。

  1. Scene上のPrefabを選択する

  2. 上の
    VRM1 > Export VRM 1.0 …
    をクリックして、ウィンドウを開く

  3. Export VRM 1.0… ウィンドウの中にある
    T-Pose (unity internal)
    をクリックする

いろいろとエラーは起きているけど、今はまだ気にしない!

これで1クリックでTポーズになります。

次はモデルにVRM Instance Componentを設定します。
このコンポーネントをつけることによって、「このモデルはVRMモデルですよ」というのをUnity側に伝えることができます。

方法は、Hierarchy上のモデルを選択して、Add Conponent からVRMInstanceを選択します。

Add Componentから「VRM」と検索すると一番上に出てきます
また、一緒にHumanoid(Script)もついてきます。

次にVRMの内部データを設定します。
最初にMetaデータと書いた工程です。

以下の流れで作成します。

  1. Project Window内でMetaデータなどを保存するフォルダを作成

  2. VRMInstance 内の
    Create new VRM10Object and default Expressions. select target folder
    をクリック

  3. 作成されたデータの中身をそれぞれ調整

まずは、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のワールド軸と全く同じ方向に変わります。

右が正規化前で左が正規化済
Boneの軸の方向が違うことが分かる

また、正規化によって0.xxバージョンのモデルと同じ方向になるため、FinalIK(VRIK)を使ったりするときは、正規化をおこなったほうが良いのかなと思ってます。

正規化の方法

以下の流れで正規化をおこないます。

  1. Scene上のモデルを複製する

  2. VRM1 > VRM 1.0 MeshUtility
    をクリック

  3. TargetObjectに複製したモデルを入れて、下部のProcessをクリック

これで正規化をすることが可能になります。

Prefabを正規化するとPrefab化が解除されてしまうので、念のため複製することをおすすめ

揺れものの設定について

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グループでまとめます。

位置はOffsetの数値で調整
大きさはRadiusで調整

VRM10 Spring Bone Collider GroupVRM10 Spring Bone Colliderを一つの部位でまとめてあげるコンポーネントになります。
モデルのどの部位に設定しても大丈夫なコンポーネントですが、おすすめは、まとめた部位の一番親のボーンに設定すると個人的にわかりやすいかなと思いました。

このコンポーネントの注意する点は、「VRM10 Spring Bone Collider Componentを設定する」という点です。
つまり、設定したボーンをD&Dしても意味がなく、ボーンに設定されているコンポーネントを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が設定したコライダーに接触する(ぶつかる)ようになります。

2か所に設定

次にVRM10 Spring Bone Jointです。
これはSpringBone > Springs > Jointsに設定します。

髪の毛だったら髪の毛一束など、ここでグループに分けてあげることができます。
基本的には1つのボーンのつながりで1グループにしてあげると良いと思います。

VRMのエクスポート

全ての設定が終わったら、VRMをエクスポートします。
モデルを選択 > VRM1 > Export VRM 1.0…
Export VRM 1.0… Windowが開いたら、一番下のExportをクリックしてエクスポートをします。

さいごに

今回はVRM1.0でのエクスポート方法についてメモをしました。
主にボーンと揺れもの周りでしたが。

マテリアル周りや、他にもまだ勉強不足で触れられなかったところ(親指の向きについてなど……)もたくさんありますが、一度ここで終わりにしようと思います。

ここまで読んでくださり、ありがとうございました。

では、また逢う日まで。

この記事が気に入ったらサポートをしてみませんか?