Quest対応よりさらにもう一歩踏み込んだFallback対応に挑戦してみます。
FallBackとは
容量が重かったり、Quest対応をしていないアバターを使用しているときに事前に設定したFallbackアバターになります。
ほとんどの人はメニュー>アバター>フォールバック>にあるパブリックアバターの中から選んでいると思います。
私の場合だとムルルに設定しています。

独自のフォールバックにするデメリット【ShowAvatar】
Quest対応をしていない場合は仕方ありませんが、容量の問題でフォールバック表示、又はインポスター(低画質ローポリ姿)になっている場合、ShowAvatarをすることによって本来の姿が表示されることが多いです。
このとき定番のムルルなどをフォールバックに設定しておけば「あ、この人フォールバックになっている。ShowAvatarしよう。」となってくれたりします。
対して独自のフォールバックを設定した場合、オリジナリティのある分、ぱっと見でフォールバックであることがわかりにくくなり、ShowAvatarしてもらいにくくなります。
簡単なアバターでフォールバックに
wあたしの名前が「さしみももんが」のため、メインアバターショコラと共にこちらのエゾモモンガにさしみをつけたアバターをたまに使っています。

今回はこちらの素の状態のさしみがないエゾモモンガをフォールバックにしてみたいと思います。
一旦アップロードして問題箇所を確認
無料のエゾモモンガ をまずはQuestToolsで変換してアップロードしてみました。
Excellentでほとんど0なので問題点はこちらのみでした。
- 三角ポリゴンの数10000以下
- マテリアルスロットの数1個まで

マテリアルスロットの数を1にする
調べてもまとまった情報がなくて試行錯誤でめっちゃ大変でした、、、
しかもエゾモモンガ以外でやろうとすると条件違くてまた大変そうかも、、
テクスチャを1個にする
まずは簡単なところから
マテリアルを結合して1つにしましょう。
TexTransToolのインストール
TexTransTool をVCC又はALCOMにインストールします。
Download-VPMを押して画面に従いインストール。

プロジェクトの管理(ManageProject)から今回追加したパッケージをインストール。
Unityの画面に戻ったら実際にインストールが始まります。
※よくわからないのでとりあえず全部追加してますがもしかしたら一部でいいかもです。

コンポーネントを追加
なぜかTextranstoolが出てこないので一度Unityを再起動。
、、したらsafemodeになったのでバツでキャンセルして、管理(manage project)からTexTransToolを更新してみたら起動できました。(競合している警告が出たがとりあえず無視した。)
改めて
アバターを右クリックしてTexTransTool>TTT AtlasTextureをクリック。

アバター直下にAtlasTextureが生成されます。
AtkasTexTureのインスペクターで全選択をクリック
再生ボタンを押してNDMFコンソールにアトラス再配置結果が表示されるのを確認。
体のテクスチャを確認するとTailもnoseもeyeもBodyもすべて同じ”Atlas Tex_Main”に統一されています。
最後に注意点
ここまできてTexTransTool公式ドキュメントの「最後に注意点」に気付いたのですが、マテリアルをまとめるだけでマテリアルスロットの結合はできないようです。
なのでここからはMergeSkinnedMeshを使ってマテリアルスロットを1つにしていきます。
マテリアルスロットを1個にする
AAOはおそらく入っていると思うので
アバターを右クリックAvatar Optimizer>Merge Skinned Meshをクリック。

生成されたMerge Skinnned Meshのインスペクターをクリックで開く。
AAO Merge Skinned Meshのスキンメッシュレンダーにマテリアルスロットを結合したいものを入れる。(今回の場合は体のみ)

アップロードしてみたらNDMFにエラーが2つ
マテリアルスロットの数は4つのままなのでエラーを解決してみます。

直すには?
に従ってアバターをクリック>インスペクターの一番下に行き、MA Mesh Settingsコンポーネントを追加します。

設定モードをそれぞれ”親で指定されている時は継承、それ以外では設定”に
Anchor OverrideはHeadに
BoundsはSpineに設定します。

アップロードしても4つのまま、、、薄々感じていたがやはりこのエラーは関係ない模様
体のマテリアルにbodyを割り当てる
Review Any Alertsのマテリアルスロット4つについてのSelectを押してみたらなんとなくそれっぽそうなのがわかったのでやってみる。
体のインスペクターのSkinnedMeshRenderer>Materialsの要素をすべてBody_from_…に塗り替える


明らかにバグってるけどマテリアルスロット1つにできた!
もう一旦これで我慢してポリゴン減らし作業に移ることに。

三角ポリゴンの数を10000以下に
21384ある三角ポリゴンの数を10000以下まで落とします。
lilNDMFMeshSimplifier
lilNDMFMeshSimplifierをまずはインストールします。VCC(ALCOM)にはLiltoonをインストールした際におまけでついてきてるはずです。
管理(ManageProject)から追加しましょう。

anatawa12’s gists packもついでに入れておくとアップロードしなくてもポリゴン数が見れるようになります。(インストールしてツール>anatawa12’s gist serectorでActualPerformanceWindowにチェック>Apply Changes、Unityの再生ボタン押すと表示される)
体にコンポーネントを追加する
体のインスペクターからコンポーネントを追加>NDMF Mesh Simplifierを追加します。

Languageで日本語を選んでおくとわかりやすいです。

品質を変更する
初期設定だと0.5なので単純に半分になります。
このままだと10691なので0.47にしてみます。

これで10000以下を達成できたのでアップロードしてみます。

SDKに反映されないからフォールバックできない
今回使用したMerge Skinned MeshとlilNDMF Mesh Simplifierはアップロード時に処理されるため、通常であれば非破壊的にアバターの軽量化をできる便利なツールです。
今回の場合はたぶんそれが原因でうまくいかない、、?

ということでPlayモードにしてアップロードしようとしたのですが、
今度はPlayモードに入っているときのみアバターの位置が床下に埋まるようになってしまいました。

VQT Avatar Builder
同期会で聞いてみたところ、VQT Avatar Builderで出来ると教えてもらいやってみたところ出来ました!
ツール>VRCQuestTools>Show Avatar Builder

”開く”でSDKを開き、PlatformをAndroidにする

“可能な場合はフォールバックアバターにする”にチェックを入れ、”Build & Publish for Android”でフォールバックアバターに出来ます。

フォールバックアバター完成
とりあえずフォールバックアバターの完成!!
課題点
- マテリアルスロットを1つにした影響でバグった表示になっている。
これは一番解決したいけど一番難しそう、、、 - さしみ要素がない。
これはスロットもポリゴンもやり直し必要だけど簡単かも。 - フォールバックであることを伝えたい。
体などにフォールバックであることを自然に伝えるメッセージを載せたい。
とりあえず疲れたのでいつか続きやります。
コメント