仮想と物理とエトセトラ

xRや物理とかごった煮の備忘録的技術ブログ

Neos VRにVroid Studioのモデルをインポートする

たまにはMRではなく、VRの記事でも。
昨日、Neos VRというソーシャルVRプラットフォームを触ってみました。
neos.com

store.steampowered.com

その際、Vroid StudioのモデルをインポートしようとしたらWikiの情報だけでは作業が詰まってしまったのでメモしておきます。
概要は以下です。

  • Blenderでのモデルインポート時、テクスチャフォルダが作成されなかったため、FBXファイル自体にテクスチャデータを含めた。

参考:

neosvrjp.memo.wiki

前提

今回はVroid Studioでモデル作成済み、Neos VRのアカウント作成済みの状態から始めます。
基本的にはwikiの情報とほぼ同じですが、一覧性確保のため一連の流れをまとめておきます。

使用バージョン

Vroid Studio 1.6.0
Blender 2.9.3
Neos VR Beta 2022.1.28.1310

Vroid Studioからモデルをエクスポートする

まずは、Vroid Studioで作成したモデルをエクスポートします。
Vroid Studioで、エクスポートしたいモデルを選択し、開きます。

f:id:napo909:20220410191110p:plain

モデルの読み込みが終わったら、右上の真ん中のボタンをマウスオーバーします。
するとメニューが表示されるので、一番上の「VRMエクスポート」を選択します。
f:id:napo909:20220410191430p:plain

エクスポートの画面が表示されると、モデルのポリゴン数、マテリアル数などが合わせて表示されます。
行う作業は以下の2つです。
行うことでPCの負荷を下げるのに寄与します。

  • PCスペックに不安がある人は「ポリゴン数の削減」からモデルのポリゴン数を削減する。
    スライダから数値を増やすとポリゴン数が削減されるので、見た目が悪くならない程度に削減します。

  • マテリアル数は特にこだわりがなければ2、解像度は2048×2048にする。

設定が終わったら右下のエクスポートボタンを押して、アバター情報を入力した後、任意の場所にVRMファイルを保存します。
f:id:napo909:20220410192320p:plain
f:id:napo909:20220410192609p:plain

VRMモデルをNeos VRで読み込めるFBXに変換する

次に、出力したVRMモデルをFBXに変換します。
Blenderを使用するので、インストールしていない人はインストールします。

www.blender.org

今回は2.9.3を使用します。
Blenderを起動すると、立方体などがすでにシーン上に存在します。
不要なので、右上のアウトライナーウィンドウ(シーン中のオブジェクト一覧がある部分)で全オブジェクトを選択して「Deleteキー」を押し削除します。
f:id:napo909:20220410193511p:plain

アドオンの導入

次に、2つのアドオンを導入します。
アドオンを導入するために、以下からzipファイルをダウンロードします。

zipファイルをダウンロード出来たらBlender上部メニューの「編集」→「プリファレンス」を選択します。
※英語の場合「Edit」→「Preferences」
f:id:napo909:20220410194257p:plain

左メニューから「アドオン」を選択します。 アドオンメニューの「コミュニティ」を選択した状態で「インストール」ボタンを押します。
ファイル選択画面が現れるので、先ほどダウンロードしたアドオンのzipファイルを選択します。
f:id:napo909:20220410194713p:plain

アドオンが正常にインポートされると、インポートしたアドオンが表示されます。
チェックを入れて、アドオンを有効にします。
f:id:napo909:20220410194858p:plain
一度に1つずつしかインポートできないので、もう一方も同様に行います。
インポート後、以下の2つにチェックがついていることを確認してください。
f:id:napo909:20220410195000p:plain
f:id:napo909:20220410195020p:plain

モデル変換

準備ができたので、モデルを読み込みます。
右上のアウトライナーウィンドウの端の「<」ボタンを押します。
タブがいくつか出てくるので、「CATS」を選択します。
f:id:napo909:20220410195654p:plain
f:id:napo909:20220410195756p:plain

「CATS」タブを開いたら、「モデルインポート」ボタンからVroid StudioでエクスポートしたVRMファイルを読み込みます。
f:id:napo909:20220410214540p:plain

しばらくすると、モデルがBlender中に読み込まれます。
なお、wikiには以下の記述がありますが、私の環境では画像フォルダ(テクスチャファイル)が作成されることはありませんでした。

VRMファイルを選択して、インポートします。
暫く待つとモデルがインポートされます。
インポートすると、VRMがあるフォルダに画像フォルダが生成されます。

neosvrjp.memo.wiki

モデル読み込みが終わったら、「モデル修正」ボタンを押し、モデルを最適化します。
モデルが最適化されると、ボーンの位置などが修正され、テクスチャが適用された状態で表示されます。
f:id:napo909:20220410200523p:plain
f:id:napo909:20220410200624p:plain

この後、wikiではFBXファイルに出力していますが、Neos VR中で使用するテクスチャファイルが出力されていないので真っ白なモデルになってしまいます。
そのため、設定からファイル自体にマテリアルデータを含めるようにします。
「設定と更新」の項目をクリックし、メニューを表示します。
設定項目の「エクスポート時にテクスチャを埋め込む」にチェックを入れます。
これで、出力するモデル自体にテクスチャファイルを持たせることができます。
f:id:napo909:20220410223010p:plain

準備ができたらモデルをエクスポートします。
「モデル」項目の「モデルのエクスポート」を選択します。
ファイルエクスプローラーが開くので、「FBXのエクスポート」となっていることを確認し、任意の場所に保存します。
f:id:napo909:20220410201338p:plain

少し待つとFBXファイルが出力されます。
windows純正の3Dビューワで確認すると、テクスチャが適用されていることを確認できます。
f:id:napo909:20220410201544p:plain

Noes VRにモデルを取り込む

先ほど作成したモデルをNeos VRに取り込みます。
まずはNeos VRを起動します。VRモードで入ったほうが操作しやすいです。
アプリ内で、ダッシュメニューを開き、下メニューの右から3番目のファイルブラウザを選択します。
すると、ローカルデータを確認できるので先ほど出力したFBXファイルを選択し、トリガーを2回押します。(ダブルクリックの要領)
f:id:napo909:20220410211639p:plain

正しくFBXが読み込まれるとウィンドウが現れます。
以下の順で選択していきます。
* 3Dモデル
f:id:napo909:20220410213322p:plain

  • レギュラー/アバター
    f:id:napo909:20220410213445p:plain

  • ヒューマノイドの身長に自動設定
    f:id:napo909:20220410213526p:plain

  • 高度な設定
    f:id:napo909:20220410214642p:plain

  • マテリアルを「XiexeToon」へ変更
    f:id:napo909:20220410213632p:plain

  • 「アセットをオブジェクト内に入れる」にチェックを入れ「インポート実行」を押す
    f:id:napo909:20220410213821p:plain

以上の操作でモデルを空間上に表示することができます。
FBXファイル自体にマテリアルを含めているので、モデルにもマテリアルが適用されています。
f:id:napo909:20220410214746j:plain

次にアバターとして使用するために設定します。
ダッシュメニューのホームから「アバタークリエイター」を選択します。
f:id:napo909:20220410212334p:plain

選択すると、ウィンドウとHMD、左右の手が表示されます。
f:id:napo909:20220410214915j:plain

HMDと左右の手ををグラブでつかみ、頭、手の位置に配置していきます。
拡縮することで、大小を調整することもできます。
f:id:napo909:20220410215102j:plain

ある程度調整できたら、「頭の前方向をそろえる」から順番にボタンを押していきます。
おそらく手の位置は「手の位置を合わせる」を押してからでないと正しい位置に左右の手を配置できないので、「手の位置を合わせる」を押してから調整します。
f:id:napo909:20220410215140p:plain
f:id:napo909:20220410215321j:plain

調整が終わったら他人に着られたくない場合は「プロテクトアバター」にチェックを入れ「作成」ボタンを押します。 作成が終わったアバターはたいてい目が白目になっています。
これは後程設定を変えれば治せます。
f:id:napo909:20220410215353j:plain

アバターの頭部分にポインタを当て、トリガーを押すと「アバターを着る」メニューが現れます。
実行するとアバターを着ることができます。
これでアバター自体の作成ができました。
f:id:napo909:20220410215356j:plain

微調整

目の位置があんまりなので修正します。
ダッシュメニューのインベントリを開き、「Essential Tools」から「DevToolTip」をダブルトリガーし、空間に取り出します。
f:id:napo909:20220410220855p:plain

取り出した「DevToolTip」をグラブし、アバターの頭部分にポインタ当てて選択(Oculus Questコントローラの場合は、スティック押し込み)を行います。
アバターの頭の周りに座標軸とBounding Boxが現れたらセカンダリでギズモを開き、「インスペクターを開く」を選択します。
f:id:napo909:20220410220950p:plain

インスペクターが開いたら、「Eye Manager」を選択します。
f:id:napo909:20220410221447p:plain

「EyeRotationDriver」コンポーネントを探し、「MaxSwing」で目の動く範囲を変更します。
5~7程度にするとよいようです。

neosvrjp.memo.wiki

f:id:napo909:20220410221543p:plain

設定が終わったら、×ボタンでインスペクターを閉じます。
f:id:napo909:20220410222005p:plain

これでアバターの目の動きを抑えることができました。

アバターを保存する

せっかく作成したアバターですが、保存しないと次回ログイン時に使用することができません。
保存するためには、ダッシュメニューのインベントリで保存したいディレクトリを開いた状態で、モデルをグラブし、「インベントリーに保存」を選択します。
f:id:napo909:20220410222501p:plain

アバターがインベントリに追加されていれば保存成功です。
アバターを選択した状態で右上の「稲妻マーク」のボタンを選択すると着ることが、「ハートマーク」のボタンを選択することでデフォルトのアバターとして設定することができます。
f:id:napo909:20220410222526p:plain

これでアバターの保存ができました。

影周りの設定は追加で必要な場合もありますが、「JP チュートリアルワールド」に説明が書いてあったはずなのでそちらを参照してください。
neosvrjp.memo.wiki

Neos VR触って実質1日なので固有名詞など誤りなどあるかもしれませんが、気が付き次第後日修正するということで。

これからもちょくちょくNeos VR触っていこうと思います。
こちらでもラジコン飛行機とか作れたらいいな(既にありそうな気もするけど)