🗂

VRMに動きをつけてみた

2024/06/30に公開

対象読者

私はhttps://hub.vroid.com/にあるサンプルモデルを編集し、一つだけモデルを作成してお人形遊びをしたことがあります。Clusterでのワールド作成に続き、ワールドにVRMを配置してみたいと思いました。この記事では、初めてVRM0.X系からVRM1.0に移行する際の躓きや、使用したソフトウェアについての流れを記述します。ネットで必要な記事を集めつつ、妥協を含めてVRMに動きをつけるまでの経緯に興味がある方が対象読者です。機能の紹介やAPIの使い方については詳しい教科書や記事があるので、そちらをご参考ください。

Hello, VRM!

こちらの記事の通りですが、最初に、UniVRMを使用してVRM0.X系からVRM1.0系への変換を行います。UniVRMはUnityのアセットとして提供されており、VRM 1.0 Import/ExportパッケージをUnityプロジェクトに導入します。この手順により、既存のVRM 0.XモデルをUnity上で開き、VRM1.0形式に変換することができます。
正直、この準備ができていないことがこの後の作業で躓いた現況でした。UniVRM-#.#.#.unitypackageで読み込んだVRMをインスペクターで確認するとVersion1.0といった表記を確認できるのでそれで十分だと思ったり、VRM1.0に変換したというモデルを利用させていただいたり、そのようなモデルで後続作業をしたのですがうまくいきませんでした。

私はAvatarSample_Aを使い、0.0から1.0に変換してそのまま利用しています。

Hello, VRMA!

VRM0系を使ってはいますがのように、unity上でモデルを動かすことはできると思います。しかし、ボーンの位置を平行と回転を使ってそろえるのは大変難しかったです。
ポーズやアニメーションをclusterのワールドにもっていく
で紹介されているように、VRM Posing Desktopを購入しました。サマーセールで840円で大変お安かったですが、定価では1400円でした。

BlenderでのVRMとVRMAのインポート

BelenderへのVRMインポーターの通り、VRMとVRMAをインポートするします。Blenderでは上の記事の通りVRM Add-on for Blenderを導入することで簡単にVRMのインポートオプションが表示されます。大変躓いたことは、VRMAをインポートしようとすると、
Armature not foundというダイアログが表示され、インポートに失敗しました。こちらはVRMが0.X系だったことが問題でした。(VRMを読まなくても、File Newをした状態でVRMAをインポートしても再現しますね)
この後私はインポートしたあとはCubeやSphere、カメラやライトを消してから、FBXにエクスポートしました。カメラやライトは残したほうがいいんですかね

2024/08/04 追記 BlenderでVRM Material修正できるみたいです

下記の通りUnityでMaterialの修正していますが、BlenderでもBody、Face、HairのオプションでVRM MaterialでVRM MToonを有効にし、RenderingのタイプにCutoffのオプションがありました。

FBXをUnityで利用

最後に、BlenderからエクスポートしたFBXファイルをUnityに配置します。UnityのシーンにFBXをドラッグ&ドロップすることで、VRMモデルを簡単に統合できます。よくわかっていないのですが、FBXを配置するとマテリアルがないとおこられます。プロジェクトに配置したFBXを選択し、インスペクターにあるMaterialsタブの抽出abstractボタンに沿うと自動で設定されていました。また、そのプレハブをプロジェクトに配置するとテクスチャの表示が乱れてしまいました。
マテリアルでCutoutこのあたり、知見がある方には常識なのかもしれませんが、プロジェクトのツリーにあるBody、Face、Hairのシェーダーがstandardになっていたので、VRM/MToonにし、Rendering TypeをCutoffにすると、もともとの見た目になったと思います。これがベストであるかはわかりませんが、現状そうしています。

振り返り

今回記事が少なく、またdiscordでもあまりとりあげられていないようでした。皆さんこのレベルであれば躓くことなくできてしまうのでしょうか、初心者には厳しかったです。。。


続き、プレイヤーに動くをアニメーションさせる

clusterのベータ機能でプレイヤーを踊らせるを参考にプレイヤーに動きをつけたいと思います。

mixamoでFBXを取得する話がありますが、VrmPosingDesktopでアニメーションを作成します。基本的には「ポーズ選択」にておよそのポーズを選び、「ポーズ編集」によって微調整することになります。出来たら「ループ/.vrma」で追加ボタンを押してシーン作成できました。数時間調べた範囲では一度登録したシーンでのポーズ再編集はできないようでした。いい感じなシーンが出来上がったら「ポーズ選択」にエクスポート・インポートの機能があるので、そちらで保存したほうがよさそうです(N敗)。
アニメーションをVrmPosingDesktopで作るのは結構厳しかったです。

vrmと作成したvrmaはblenderでインポートを行います。blenderで「Play Animation」の▷ボタンを押して正しくインポートできたかを確認するといいと思います(1敗)。確認ができたらfbxにエクスポートしましょう。

fbxをUnityのプロジェクトに配置し、そのfbxを選択したときのインスペクターでアニメーションタイプをヒューマノイドに変更しました。

このfbxをプロジェクトで選択して開くと、中にアニメーションがありますので、それを"clusterのベータ機能でプレイヤーを踊らせる"の記事の通りHumanoid Animation Listに追加しました。このようにして、特定のエリアに入ったときにプレイヤーに動きを付けました。

Discussion