【初心者向け解説】 VRoid Studio製アバターをclusterで使えるようにする方法

3Dアバターの使い道として、2019年12月現在でもっとも大きいのはおそらくVR-SNSであるVRChatですが、次点として上げられるのがVRイベントスペースであるclusterではないかと思います。

最近clusterではVRライブを始め、Vtuberとの交流イベントなども増えてきています。そうなると、やはりファンとしては「私はここだよ!」というのをアピールするためにも、初期アバターでない3Dモデルが欲しくなってくるのが人の性。アバターはtwitterのアイコンよろしく、個人を識別する指標として強力ですからね。

確かに最近は同人通販サイトのBoothや、3Dアバターの即売会であるバーチャルマーケット(Vケット)などでモデルを購入することも容易になりつつありますが、やはり自分だけのオリジナルアバターが欲しいとなると、モデリングのできない一般人の選択肢は限られます。
その有力な選択肢の一つが、pixivが提供しているVRoid Studioです。パラメータを調整することで、ゲームのキャラメイクのように顔や体型、髪色などを思い通りにでき、またBoothなどでテクスチャファイルを購入することでデフォルト以外の服も着せることができます。

画像12

ただ一方で大きな問題点が。それはclusterでのアバター制限
元々VRoid製のモデルは凝った構造になっており、また出力に当たって軽量化処理などもしていないので重いのです。VRChatは先日アバターの制限が撤廃され、そのままでアップロード可能になりましたが、clusterは依然VRoidモデルはそのままではアップロードできません

というわけで今回は、私がVRoidモデルをclusterにアップロードできるように加工したやり方について、まとめてみようかと思います。多少の知識さえあれば、十分できるレベルの作業かと思うのでぜひトライしてみて下さい。

軽量化という意味では同じなので、VRoid以外のVRMアバターの軽量化や、Quest向けVRChatに使うための軽量化などにも応用できるはずです。

なお今回の解説は、私と同じくらいのレベルの3D初心者(PC作業は多少できるが、BlenderとUnityはほとんど触ったことがない)を想定して書いています。そのため分かる方からすると冗長な部分も多いので、適宜読み飛ばして下さい。


(2020/6/6追記)
VRoidではv0.9.0より軽量化機能が公式サポートされました。
これで手軽にclusterへのアップロードが可能になるようです。

公式HPから最新版をダウンロードして、ぜひ試してみて下さい。


加工のポイントと基本的な流れ

では、まずcluster向けの軽量化作業にあたってポイントになるアバターの制限を公式のドキュメントから引用して説明します。

オブジェクト数:256個以下
ポリゴン数:32000以下
メッシュ数:16個以下
サブメッシュ数:32以下

ボーン数:128以下

マテリアル数:8個以下
テクスチャ:16枚以下

テクスチャサイズ:2048*2048以下

主な所はこのへんでしょう。うち、私が作った(さほど手を加えていない)VRoidモデルをclusterにアップロードするに当たり引っかかった制限は以下の通り(上記一覧の太字箇所)。

画像1

よって加工にあたっては、下記の所を押さえて軽量化すればOKです。

サブメッシュ数:メッシュを統合して69→32以下に
ボーン数:clusterでは不要なボーンを削除して160→128以下に
マテリアル数:マテリアルを統合して16→8以下
テクスチャ:テクスチャを統合して28→16以下

具体的には、以下のような作業の流れになります。

① VRoid Studioでモデル作成→VRM形式でエクスポート
② VRM Importer PluginでモデルをBlenderに読み込み
③ CAT'S Blender Pluginで自動軽量化+マテリアルを8個まで統合
④ Blenderからfbx形式でエクスポートし
⑤ UniVRMを使いモデルをUnityに読み込み
⑥ テクスチャとRigの設定を調整
⑦ ClusterSDKを使いclusterへアップロード

このうち軽量化作業は③の段階。サブメッシュとボーンについてはワンクリックで自動的に軽量化してくれますが、マテリアルとテクスチャについては少しだけ考える必要があります。
では、実際の作業に移っていきましょう。

必要なソフトウェアのインストール

まずは下記の必要なソフトをダウンロードしてインストールします。
これ以降の解説は下記のソフトウェアのインストールがすべて終わっていることを前提として進めます。

【① モデル作成
VRoid Studio
… モデル作成ソフト

【②~④ Blenderでの軽量化作業】
メインとなるBlenderは2019/12現在最新の2.81を使っておけばOKです。VRM ImporterとCAT's Blender PluginはBlenderのプラグインなのでBlenderインストール後にアドオンとしてソフト内からインストールします。こちらもバージョン2.8対応版を選ぶよう注意して下さい。

Blender … モデル編集・軽量化作業を行うメインのソフト
VRM Importer Plugin … Blender内で動作。VRoidのVRMファイルを読み込めるようになる
CAT's Blender Plugin … Blender内で動作。軽量化を半自動化してくれる神プラグイン

⇒ソフトウェアのインストール方法解説
【Blender初心者向け】Cats Blender PluginをつかってVRoidモデルを軽量化する - Qiita

(作業がしやすいように、上記解説に沿って日本語化設定もしておきましょう)

【⑤~⑦ Unityでのモデル調整とアップロード】

Unity本体はclusterが対応しているバージョン2019.2.8としてください。UniVRMとclusterSDKはUnityのアセットなので、これもUnityでプロジェクト作成後にインストールします。

Unity … Blenderで編集したモデルを再調整しclusterへアップロードするソフト
UniVRM … Unityのアセット。VRM向けのシェーダーを扱うのに必要
clusterSDK … Unityのアセット。clusterへモデルをアップロードする

⇒ソフトウェアのインストール方法解説
clusterSDKドキュメント - SDKの初期設定
UniVRMマニュアル - UniVRMのインストール


①VRoidモデル作成~エクスポート

まずVRoid Studioで頑張ってモデルを作ります。
完成したら、右上の「撮影・エクスポート」⇒左欄「エクスポート」と選択し、右欄のエクスポートを押します。VRMの設定を聞かれますが、特に何もしなくてOKです。

画像2


②Blenderにモデルを読み込む

Blenderを立ち上げます。右欄のメニューの「CATS」⇒「Model:Import」を押すとモデルのインポート画面が立ち上がるので、先程①でエクスポートしたモデルを選択肢て読み込みます。

画像3

もしCATSタブが表示されない、VRMが読み込めないなどの場合は↑で説明したBlenderのプラグイン(アドオン)のインストールが出来ていない可能性があります。インストールが完了した後も、チェックボックスをオンにして有効化しないといけないことに注意して下さい。
(参考:【Blender初心者向け】Cats Blender PluginをつかってVRoidモデルを軽量化する - Qiita


③CAT's Blender Pluginでの軽量化

さて、では本丸の軽量化作業に移ります。
初心者には荷が重いBoneの整理やメッシュの統合は、「Model:Fix Model」ボタンを押せばCAT'sプラグインが自動でやってくれます。神。
(ちなみにスパナマークから細かい設定もいじれます)

画像4

次におそらく一番手間のかかるマテリアルとテクスチャの統合作業です。
まず「最適化:Generate Material List」を押します。マテリアルの一覧が表示されます。これを8個以下まで減らすのが目標です。

画像5

画像6

この最適化ツールがどういうものかというと、複数のマテリアル(モデルの各部位の素材:色、影、反射などの情報や、テクスチャ(画像)の貼り付け方などの情報を含んでいる:詳しくは後述で補足)を一つにまとめることでモデルを軽量化するというものです。
このツールの便利な所は、別のテクスチャを使っている2つのマテリアルも簡単に統合できるところ(テクスチャも1つの画像へ統合した上で1つのマテリアルにしてくれる)。つまりは、何も考えずに全ファイル統合してしまうということもその気になれば可能です(実際はそう簡単にはいかないのですが)。

使い方は簡単で、統合したいマテリアルをチェック⇒Save Atlas to...をクリック⇒Atlas(統合されたマテリアルのテクスチャ)の保存先を選択⇒マテリアルとテクスチャが1つに統合される という流れになります。
つまりポイントはどのマテリアルを一つにまとめるかになります。VRoidモデルの場合、通常はおおよそ下記のようなまとめ方で良いと思います(どれが何のマテリアルかはファイル名で判別可能)。

・HAIR(髪関係)
・FACE(顔関係)+小物類
・EYE(目周り)
・BODY(統合しない)
・服関係(統合しない)

これで概ねマテリアルは8個以下まで統合できると思います。

画像8

注意点として、

・VRoidモデルは髪や眉などの色をマテリアルの設定で調整しているので、これらのパーツで色の設定が違うものは統合してはいけない
・Atlasファイルが2048*2048以上のサイズになるとUnityで圧縮されてしまうので、このサイズ以上にならないように組み合わせを調整する
・統合したマテリアルはシェーダの設定が個別にできない(見栄えの調整がしづらくなる)ので設定を分けたい場合はマテリアルも分ける

この辺りを守れば、あとは制限のマテリアル数8以下になれば何でもOKです。
ちなみにこの段階で、Blender上では髪や眉の色が真っ白になってしまう現象が発生しますが気にしなくてOKです(Unityで後ほど調整します)。

ちなみに、Atlasファイルが不必要に大きくなってしまう(スカスカなのに4096*2048とかになったりする)場合は下記の方法があります。

① マテリアルをまとめるのを諦めて2つにする(自信がない人でマテリアル数に余裕があるならこれを推奨)
② 画像を別ソフトで編集して2048*2048以下にしてからUVマップを再編集する
(画像をトリミング後、上メニューのUV Editing⇒編集⇒置き換えから画像を再読み込みした後、右欄マテリアルプロパティから該当マテリアルを選択⇒選択でUVマップを表示し、これを置き換え後の画像に合わせて編集(拡大縮小)することで調整)

②の方法はやや難易度高めですが、UVマッピングの仕方さえ理解すれば比較的簡単な部類の作業なので、「Blender UVマッピング」と検索してリファレンスを参照して下さい。


補足:マテリアルとテクスチャについて

マテリアルの統合をする上で、理解しておいた方が楽なのがこのマテリアルとテクスチャの関係性です。詳しく説明しだすときりがないので、要点をかいつまんで書くと、

・モデルの大まかなデータ構造は オブジェクト - メッシュ - マテリアル - テクスチャ - UVマップ となっている(下記ツイも参照)
・各オブジェクト(パーツ)にはそのマテリアル(素材)が割り当てられている(例えば腕のオブジェクト⇒Bodyのマテリアル、髪のオブジェクト⇒髪のマテリアルなど)
・同じマテリアルを複数のオブジェクトに割り当てることができる(例えば足のオブジェクトに、腕と同じBodyのマテリアルを割り当てることが可能)
・マテリアルは1つのテクスチャファイル(オブジェクトの表面に表示する画像データ:例えば服の画像など)を持っている(つまり同じマテリアルを割り当てられたオブジェクトは、同じテクスチャを参照する)
・各マテリアルのテクスチャに対して、そのオブジェクトの形状にどう貼り付けるかという情報(UVマップ)が設定されている


つまり、上記のマテリアルの統合処理というのは、

・マテリアルを統合するために、
・マテリアルに含まれるテクスチャ(画像)を統合し、
・それぞれのマテリアルに設定されているUVマップ(テクスチャの割当て)も統合する

という処理で成り立っているわけです。


④軽量化したモデルのエクスポート

お疲れさまでした。ここまでくれば後は終わったようなものです。
CAT⇒エクスポートでfbx形式でモデルをエクスポートします。

画像9


⑤-⑥モデルをUnityに読み込む&設定の調整

Unityを起動し、新規プロジェクトを作成します。この辺はUniVRMやclusterSDKのインポートも絡むので、冒頭のソフトウェアインストールの参考サイトを参照。
プロジェクトを作成④でエクスポートしたモデル(fbxファイル)を、Assetタブにドラッグ&ドロップしてUnityに読み込みます。インポートが完了したら、読み込んだモデルをD&DしてUnityに配置します。

続いてモデルを選択⇒右欄Inspectorから「Rig⇒Animation Type」をHumanoidに変更。続けて「Materials⇒Location」をUse External Materialsに変更します。

画像10

画像11

次にマテリアルの設定をします。先程Blenderで統合したマテリアルそれぞれに、テクスチャを再割当てします。また髪や眉などのテクスチャカラーで色を付けているマテリアルについては色の設定をここでします。

① Asset⇒Materialsフォルダを開く
② 設定するマテリアルを選択
③ 右上Inspector欄からShader⇒VRM⇒MToonを選択 (出ない場合はUniVRMをアセットに追加して下さい)
④ Rendering TypeをCutoutに変更(透過が適用されるようになります)
⑤ 設定しているマテリアルに対応したテクスチャファイルをインポート(MaterialsフォルダにD&D)します。Blenderで作業していたフォルダにAtlasファイルやその他のテクスチャファイルがあるハズ
⑥ インポートしたテクスチャをTexture欄の四角いボックスにD&D(Lit Color, Shader Colorとも)
⑦ 髪や眉などのマテリアルはカラーボックスをクリックして、色合いを調整

画像12

これを全マテリアルにすれば作業は完了です。うまく作業ができていれば、Unity上でモデルが元通りの色合いになっているはずです。


⑦clusterへのアップロード

最後に、調整が完了したモデルをclusterにアップロードします。詳しい手順は
clusterSDKのチュートリアルを参照してください。
ここまでの作業でちゃんとモデル制限内に収められていればアップロードが成功するはずです。動作確認はclusterアプリからどうぞ。

これにて作業完了です。お疲れさまでした!

https://twitter.com/omoi0kane/status/1205485100915314688

最後に

今回の作業にあたっては、下記の記事を大いに参考にさせて頂きました。こうしてWeb上に情報を残してくれる方がいるおかげで私のような素人でもこういう作業ができるわけで。本当にありがとうございます。

【Blender初心者向け】Cats Blender PluginをつかってVRoidモデルを軽量化する - Qiita

なおQuest向けの軽量化については、もう少しマテリアル数・テクスチャ数の制限がきついようです。かなりをまとめた上で、画像についても圧縮が必要でしょうね。
https://vrcworld.wiki.fc2.com/wiki/Oculus%20Quest%E5%AF%BE%E5%BF%9C

またVRMを軽量化してclusterで読めるようにするソフトとして検索すると出てくるVReducerですが、VRoidの対応バージョンが0.54で止まっています(2019/12現在の最新は0.7.5)。なのでせっかくPython環境を整えてモデルを読み込ませても下記のようなエラーが出て変換はできません。

  File "xxx\vreducer.py", line 66, in <module>
   main(sys.argv[1:])
 File "xxx\vreducer.py", line 42, in main
   vrm.gltf = reduce_vroid(vrm.gltf, opt.replace_shade_color, parse_texture_size(opt.texture_size), opt.emissive_color)
 File "xxx\vrm\reducer.py", line 633, in reduce_vroid
   }, '_Tops_', texture_size)
 File "xxx\vrm\reducer.py", line 451, in combine_material
   texture = vrm_material['textureProperties']['_MainTex']
TypeError: 'NoneType' object has no attribute '__getitem__'

0.54は現行とデータ形式が違い、服のテクスチャなども互換性がないため、VRoid Studioでのモデル作成は現行バージョンで行う方がよいと思います。この記事記載のやり方であればバージョンに関係なく変換作業が可能です。
(一応、手動でDL urlを打ち込んでやれば今でも0.54をDLすることは可能なので、それとVReducerを活用する手もあるにはあるのですが…)

以上、蛇足でした。


この他にも、VR関係での困りごとの技術解説記事や、VR・VTuberに関する考察分析記事を日々投稿しています。
もしよければぜひnote、Twitterをフォローいただければ嬉しいです。

また次の記事でお会いしましょう。

---------------------------------------------------------
今回も長文にお付き合いいただきありがとうございました。
引用RT、リプライ等でのコメントも喜んでお待ちしています。
画像13
Twitterhttps://twitter.com/omoi0kane
Youtubehttps://www.youtube.com/channel/UCpPeO0NenRLndISjkRgRXvA
マシュマロ(お便り): https://marshmallow-qa.com/omoi0kane
notehttps://note.com/omoi0kane

○引用RTでのコメント:コメント付のRTとしてご自由にどうぞ(基本的にはお返事しません)
○リプライでのコメント:遅くなるかもしれませんがなるべくお返事します




この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
この記事の読後に、何かがあなたの心に残りますように。
33
VRとVTuberを通して未来を見つめる知識系VTuberの思惟(おもい)かねです。 VRについての考察エッセイや、工学技術やニュースの解説記事を書いています。 記事はカテゴリ別にマガジンにまとめてあるのでぜひ。 プロフィール https://twpf.jp/omoi0kane

こちらでもピックアップされています

思惟かねのバーチャル技術解説
思惟かねのバーチャル技術解説
  • 2本

VR、VTuber関係での技術的な解説記事をまとめています。

コメント (1)
めちゃくちゃ参考になりました!ありがとうございます👼
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。