ResoniteにVRM形式のアバターをインポートする【暫定版】
追記
JPチュートリアルで教えてもらったけど、そもそもここに色々書いてありそう。
はじめに
先日リリースされたばかりのResoniteがVR SNS界隈でちょっと話題になっています。元々NeosVRを開発してたメンバーが作っているので、同じく何でもVR内で出来るプラットフォームとか。
私は普段はバーチャルキャストでのんびり配信してるくらいなのですが、ちょっと面白そうなのでログインしてみようと思いましたが、ふだん使ってるアバターの持ち込み方が分からなかったので調べた限りのメモを記載しておきます。NeosVRで検索したら同等の情報は出てきそうですが、今時点ではResoniteでは検索してヒット率が悪かったので。
ただ、私がそもそもNeosVRやResoniteはもちろん3Dモデルに詳しくないので、不適切な部分があるかもですが、指摘等があれば随時更新したいと思います!
TL;DR
- Unityを使ってVRMをFBX形式に変換
- FBXをResoniteの画面にD&Dしてアップロード
- 取り込むときのマテリアルはXiexeToonかPBS_Emissiveが良さそう?
UnityでVRMからFBXに変換
とりあえず自分の普段使いのアバターを持ち込みたいのですよね。アバターの基本的なインポートの方法は以下の動画がとても参考になりました。
ただVRMにはネイティブ対応はしていないようです。普段使ってるのはセシル変身アプリで生成してるアバターなので、ちょっと一工夫してFBXに変換が必要でした。Resoniteは出たばかりという事もあって情報は少ないのですが、実質的にNeosVR2って感じのようなのでそちらの情報を参考にする事ができます。
VRMからFBXに変換するにはUnityを使う方法とBlenderを使う方法があります。今回はUnityを利用しました。以下のサイトを参考にuniVRMとFBX Exporterをインストールします。
手順に従って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を選ぶのよりいのかもしれません。
このあたりはもっと良い方法が分かり次第アップデートしておこうと思います。
まとめ
とりあえず、普段使いのアバターを持ち込む方法をまとめてみました。たぶんNeosVRからやってる人には自明だし、VRCとかに慣れてる人もサクッと辿り着きそうだけど、私見たいに3Dモデル分からん勢は多少の参考になるはず? ただ、Resoniteにはメンターという制度もあるようなので、特にこの辺の記事読まなくても、そこで質問して対応頂いたりできるのかもです。あと、もちろん手持ちのアバターが無くてもResonite内にたくさんのアバターがチュートリアル上とかにも置いてあるようですし。
私も準備は出来たのでResoniteの世界へ遊びに行ってみようと思います。
Happy Hacking!
参考
Discussion
記事拝読させていただきました。
追記もありがとうございます(追記記事執筆者です)。
記事で記載されていた「テクスチャの問題」については、恐らく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形式なだけなので同じですね)にすることに設定し、それに対し手段をいくつか記載した次第です。
コメントありがとうございます!
あと、そちらの記事を読ませて頂いて無事に変換も出来ました!
なるほど。3Dモデル界隈は詳しくなさ過ぎていまいち関係性が分かってなかったですが、GLTF/GLBの方がオープンな仕様なので上手く変換や検証をしやすいってことですね。たしかVRM自体がglTFをベースにしてた気もしますし。