🔬

ResoniteにVRM形式のアバターをインポートする【暫定版】

2023/10/09に公開2

追記

JPチュートリアルで教えてもらったけど、そもそもここに色々書いてありそう。
https://sharedx.notion.site/VRM-d93c6e3ae2f647e0956054efff1d20b9

はじめに

先日リリースされたばかりのResoniteがVR SNS界隈でちょっと話題になっています。元々NeosVRを開発してたメンバーが作っているので、同じく何でもVR内で出来るプラットフォームとか。
https://www.moguravr.com/resonite-release/

私は普段はバーチャルキャストでのんびり配信してるくらいなのですが、ちょっと面白そうなのでログインしてみようと思いましたが、ふだん使ってるアバターの持ち込み方が分からなかったので調べた限りのメモを記載しておきます。NeosVRで検索したら同等の情報は出てきそうですが、今時点ではResoniteでは検索してヒット率が悪かったので。

ただ、私がそもそもNeosVRやResoniteはもちろん3Dモデルに詳しくないので、不適切な部分があるかもですが、指摘等があれば随時更新したいと思います!

TL;DR

  • Unityを使ってVRMをFBX形式に変換
  • FBXをResoniteの画面にD&Dしてアップロード
  • 取り込むときのマテリアルはXiexeToonかPBS_Emissiveが良さそう?

UnityでVRMからFBXに変換

とりあえず自分の普段使いのアバターを持ち込みたいのですよね。アバターの基本的なインポートの方法は以下の動画がとても参考になりました。
https://www.youtube.com/watch?v=mRTg09Vkz6c

ただVRMにはネイティブ対応はしていないようです。普段使ってるのはセシル変身アプリで生成してるアバターなので、ちょっと一工夫してFBXに変換が必要でした。Resoniteは出たばかりという事もあって情報は少ないのですが、実質的にNeosVR2って感じのようなのでそちらの情報を参考にする事ができます。

VRMからFBXに変換するにはUnityを使う方法とBlenderを使う方法があります。今回はUnityを利用しました。以下のサイトを参考にuniVRMとFBX Exporterをインストールします。
https://qiita.com/hextomino/items/993c9beaf9168ca89df0

手順に従ってEportした後に、FBXを選択してAnimation TypeをHumanoidにし、Legacy Blend Shapeにチェックを入れます。この辺はちょっとどういう意味になるかを具体的にまだ私が理解してないので、すでにいらないカーゴになってるかも? 要注意。

(必要に応じて)テクスチャを微調整

手順を参考にVRMをFBXに変換するのですがFBXに変換してUnityに取り込んだ時点で何故か髪の色が一部黄色に。

どうも、テクスチャの時点で黄色いです。

同じく別なアバターを読み込んでもリボンとか一部の色が飛んでいました。

恐らくですが、セシル変身アプリ側でデフォルトセットに無い色を選んだ場合は元のテクスチャの情報を表示してるように見えるので、VRMからFBXに変換する時に何らかの情報が消えてるようです。変換時のパラメータ指定で解決できるのかもですが、今回はPaint.NET等でテクスチャ画像の色を直接変更しました。手っ取り早そうだったので。

これで、Unity上の色も変更されました。

ちょっと面倒ですがこの辺の微調整を必要に応じて行っていきます。

Resoniteへのアバターのインポート

FBXに変換してしまえば、あとは通常のResoniteの手順です。先ほどの動画を参考にFBXをResoniteの画面にドラッグ&ドロップすれば以下のようなウインドウが出ます。ちなみに、VR上からデスクトップ画面を呼び出してやると、PCと行ったり来たりしなくて良くて簡単でした。Resonaite便利!

日本語化もされてて良いですね。余談ですが、NeosVRの頃よりもこの辺のUIはずいぶんスッキリしたように見えて個人的には好みです。

1点注意点がマテリアルの指定です。元の動画や参考にした記事の多くは 「XiexeToon」 を指定しています。ただ、私が試した限りだと以下の写真の右側のように暗くなってしまいました。

なので、一通りのマテリアルを試して一番しっくりきた 「PBS_Emissive」 を選択しています。これで写真の右側のように通常のVキャスのように表示されます。
ただ、XiexeToonはリアルタイムにライティングを反映するマテリアルで、こちらがNeos/Resonaiteでは主流のようなので以下を参考に何かしらのパラメータ変更をするのがPBS_Emissiveを選ぶのよりいのかもしれません。
https://neosvrjp.memo.wiki/d/�ޥƥꥢ��(����������)#content_2
このあたりはもっと良い方法が分かり次第アップデートしておこうと思います。

まとめ

とりあえず、普段使いのアバターを持ち込む方法をまとめてみました。たぶんNeosVRからやってる人には自明だし、VRCとかに慣れてる人もサクッと辿り着きそうだけど、私見たいに3Dモデル分からん勢は多少の参考になるはず? ただ、Resoniteにはメンターという制度もあるようなので、特にこの辺の記事読まなくても、そこで質問して対応頂いたりできるのかもです。あと、もちろん手持ちのアバターが無くてもResonite内にたくさんのアバターがチュートリアル上とかにも置いてあるようですし。

私も準備は出来たのでResoniteの世界へ遊びに行ってみようと思います。

Happy Hacking!

参考

https://note.com/yonfuku/n/nddfdac80b9d3
https://qiita.com/hextomino/items/993c9beaf9168ca89df0
https://www.notion.so/NeosVR-42febed5f90f443284ca6eb43cecaa9d
https://www.reddit.com/user/gkujthgdy/comments/kqb6d5/neosvr_に_セシル変身アプリ_の_vrm形式アバターを_インポート_するアイトラッキング対応/
https://zenn.dev/koduki/scraps/899e41d98a7d1c

Discussion

kazu0617kazu0617

記事拝読させていただきました。
追記もありがとうございます(追記記事執筆者です)。

記事で記載されていた「テクスチャの問題」については、恐らくUnityのFBX Exporterの実装の問題ですね。どうしてもFBXですと互換性が微妙な点が多いですので難しいところがあります…


追記で記載している方は、 VRM -> GLB に変換することを主眼としております。
といいますのも、FBXがプロプライエタリな規格なのもあり、Autodeskの「FBX I/O SDK」を使用する前提として設計されています。
しかし、BlenderからFBX出力する際のExporterも、ResoniteにFBX入力する際のImporterも、どちらもAutodeskの提供する「FBX I/O SDK」を使用しておりません。

それに対し、Khronos Groupの作成したGLTFの場合は全ての仕様が公開されており、そのデータがGLTFとして問題ないデータかどうかは容易に判断可能です。なおBlenderから出力されるGLTFはBlenderの更新のたびにGLTF Validatorにかけていますが、Blender 3.6時点で問題ないことを確認しました。

そのため、追記で記載しております記事では、ゴール地点をGLTF形式(GLBはただ1ファイルにまとめたGLTF形式なだけなので同じですね)にすることに設定し、それに対し手段をいくつか記載した次第です。

kodukikoduki

コメントありがとうございます!
あと、そちらの記事を読ませて頂いて無事に変換も出来ました!

なるほど。3Dモデル界隈は詳しくなさ過ぎていまいち関係性が分かってなかったですが、GLTF/GLBの方がオープンな仕様なので上手く変換や検証をしやすいってことですね。たしかVRM自体がglTFをベースにしてた気もしますし。