【VRChat】アバター軽量化その③ ~ポリゴン削減編~
のとのと

こんにちは、のとです!

これまで、アバターの軽量化シリーズとして”その①「基礎とテクスチャ」”、”その②「Avatar Optimizer」”についてご紹介してきました。

今回はその③、「ポリゴン削減」について、分かりやすく説明していきます!

“ポリゴン”ってなに?

まずは「そもそもポリゴンって何?」というところから。

“ポリゴン”とは3Dモデル構成する小さな平面のことを言います。

アバターの肌や髪、服などは、なめらかに見えて、実は無数のポリゴンでできています。

ポリゴンが細かく・多いほど見た目はキレイになりますが、その分データが重くなってしまうため、PCやVR機器に負荷がかかってしまいます。

のとのと

ゴルフボールの表面みたいに、細かい面が集まってるイメージです!

VRChatとポリゴンの関係

VRChatでは、アバターの「三角ポリゴンの数」がパフォーマンスに影響します。

この数は、アバター詳細に「〇〇 / 70,000」などと表示されています。

70,000というのは、目安の上限になります。

パフォーマンスランクとポリゴン数の関係は、以下の通りです。

ランクExcellentGoodMediumPoorVery Poor
ポリゴン数32,000以下70,000以下70,000以下70,000以下70,000以上
VRChat公式ドキュメント “Performance Ranks“より

※これはあくまで一例で、パフォーマンスランクには他にもテクスチャ容量やPhysBonesの数なども影響します。

Unityでポリゴン数を確認する方法

Unityでポリゴン数を確認したい場合、”lilAvatarUtils“という便利なツールがあります。

導入方法は以下の記事で解説しているので、そちらのご確認をお願いします!

導入が完了したら、「① プロジェクトを立ち上げ、上部メニューの「Tools」から「lilAvatarUtils」を開きます

② lilAvatarUtilsの画面が表示されたら、一番上の個所にアバターをドラッグアンドドロップします

するとそのアバターのテクスチャやマテリアルなど、様々な情報を一度に確認することが出来ます。

ポリゴン数はこの中の”レンダラー“という項目から確認することが出来ます。

それぞれのパーツ(メッシュ)のポリゴン数と、一番下にその合計が表示されます。

※このポリゴン数は「現在のシーン上の数」で、削減ツールを反映した後の数ではありません。

ポリゴン削減の方法

ポリゴンを減らすには、主に2つの方法があります。

① “Blender“などの3Dモデリングソフトを使う方法

細かく調整できる反面、難易度は高めです。

のとのと

正直、僕もこちらのやり方は分かりません…!

② “Unityのツール“を使用する方法

Blenderなどと比べるとできる範囲は限られてしまいますが、Unityだけで完結することができます。

最近は無料かつ簡単、綺麗にポリゴン削減を行えるツールがいくつかあるので、今回はおすすめのものを3つ紹介します。

おすすめしているものはすべて”非破壊“で行うことが出来るため、間違えてしまってもアバターが壊れてしまう、ということはないので安心してください!

Avatar Optimizer(AAO)

1つ目は”アバター軽量化 その②”の記事で紹介した”Avatar Optimizer“を使用する方法です。

このツールはシェイプキー単位でメッシュを削除したり、範囲を指定してその範囲のメッシュを削除することなどができ、細かい部分のポリゴン削減を直感的に行えます!

特徴としては、ポリゴン(メッシュ)を完全に”削除することが可能です。

詳細は下記の記事内の”Remove Mesh 〇〇“について解説している部分を見てみてください!

lilNDMFMeshSimplifier

2つ目はliltoonの作者さんであるlilさんが提供している”lilNDMFMeshSimplifier“を使用する方法です。

このツールは削減したい部分(メッシュ)のポリゴンを”削除“ではなく、”削減“することが可能です。

導入方法

まず、VCC(ALCOM)にlilNDMFMeshSimplifierを追加します。

“lilToon”を導入済みの方は既に追加されているので、プロジェクトへの適用から実施してください。

下のボタンからlilToonの公式ページに飛び、”VCCに追加”を選択します。

ポップアップが表示されるので、”ALCOM を開く”を選択します。(VCCを使用している方は”VCC を開く”を選択してください。)

選択するとVCC(ALCOM)に移動するので、”VPMリポジトリを追加”を選択します。

VCCでも同様の追加を許可するボタンを選択してください。

続いて、プロジェクトに追加します。

VCCの場合は”Manage Project”、ALCOMの場合は”管理”を選択します。

パッケージ一覧から”lilNDMFMeshSimplifier”を見つけ、「+」を選択してプロジェクトに追加します。

これでプロジェクトへの追加は完了です。

他に”Modular Avatar(MA)”に使用されている”Non-Destructive Modular Framework(NDMF)”というパッケージも必要となります。
“Modular Avatar”を導入すると自動で導入されますが、未導入の場合は”NDMF(MA)”もプロジェクトに導入してください。

使用方法

実際にミルフィちゃんの王冠に対して使用してみます。

① ポリゴンを削減したいメッシュを選択し、② “Inspector欄”の”Add Component”を選択します

③ 検索欄に”NDMF”と入力し、”NDMFMeshSimplifier“を追加します

追加すると下図のようなコンポーネントが追加されます。

色々な設定がありますが、基本的には一番上の”品質”を変更していきます。

こちらの数値を変更することで、ポリゴン削減をすることが可能です。

“品質”を下げることでポリゴン削減をすることが出来ますが、その分形状は簡略化されてしまいます。

どの程度まで”品質”を下げるかは、形状を見ながら判断しましょう!

のとのと

その他の項目に関しては、チェックを入れることでおそらく端のポリゴン削減を減らしたりすることが可能だと思いますが、実はあまり分かっていません…

詳細やその他の機能に関しては、公式のGithubドキュメントをご確認ください!

Meshia Mesh Simplification

3つ目は”Meshia Mesh Simplification“というツールです。

2つ目の”lilNDMFMeshSimplifier”と同様に”削減“を行えるツールですが、こちらはアバター全体のポリゴンを一括で削減することができるツールとなっております。

下図のように、アバター全体のメッシュに対して、一括でポリゴン削減を行うことが出来ます。

また、全体のポリゴン合計数を指定したパフォーマンスランクになるように調整する機能もついています。

別記事にて導入方法から使い方まで紹介をしていますので、是非そちらをご覧ください!

削減結果をUnityで確認する方法

記事の前半で”lilAvatarUtils”を使用することでポリゴン数を確認することができる、と説明しました。

しかし、今回紹介した3つのツールはすべてUnityのPlayモードに入った際や、VRChatにアップロードをした際に初めてポリゴン削減が適用されるます。

つまり、通常のSceneビューでは反映されません

「えっ、それじゃ実際にアップロードしないと確認できないの?」と思った方もご安心ください!

そこはもちろん、Unity上で確認ができる方法があるのでご紹介します!

“Avatar Optimizer”の作者さんであるanatawaさんが提供している”anatawa12’s gist pack“というものを使用します。

導入方法

まず、下記公式ドキュメントから”VCCを使用する“内にある”このリンク“を選択します。

すると、画面上部に”ALCOM を開く(VCC を開く)”と表示されるため、それを選択した後、ALCOM(VCC)にて”VPMリポジトリを追加”(VCCの場合も導入を許可するボタン)を選択します。

その後、パッケージの管理画面から”anatawa12’s gist pack“を見つけ、追加します。

以上で導入は完了です!

使用方法

導入が完了したら、「① プロジェクトを立ち上げ、上部メニューの「Tools」から「anatawa12’s gist pack」を開きます

② 「ActualPerformanceWindow」の項目にチェックを入れ、「Apply Changes」を選択します

これで準備は完了です!

この状態でPlayモードに入ると、アップロードをしたらどうなるかを確認することができます。

「lilNDMFMeshSimplifier」を髪の毛に使用して比較してみます。

ポリゴン削減がちゃんと行われていることが確認できました!

のとのと

“ActualPerformanceWindow”では他にもPhysBonesの数やMaterialスロットの数も確認できるので、軽量化を行う際には必須級のツールとなっています!

ポリゴン削減時の注意点

削減のしかたによっては、アバターの見た目が崩れてしまうことがあります。

ポリゴン削減を控えたほうがよい部分

まず、顔まわりはポリゴン削減を控えたほうがよいです。

まつげや口の形が崩れやすいのと、表情の破綻が起きやすくなる為です。

次に髪の毛は注意が必要です。

毛先などの細くなっている部分が、ポリゴン削減により飛び飛びになってしまうことがあります。

もポリゴン削減による見た目の変化が分かりやすく、特に指先などはカクカクしているのが分かりやすいです。

撫でたりすることが多い人は、あまりポリゴン削減をしないほうがよいと思います。

最後に、フリルや細かい柄のある衣装の場合、マテリアルを適用する先のメッシュの形が変わる為、柄が崩れてしまうことがあります。

ポリゴン削減を行いやすい部分

無地のもの色の暗いものはポリゴン削減を行っても見た目の変化が分かりにくい為、積極的に削減をしても良いと思います。

まとめ

Unityで行えるポリゴン削減の方法を3つ紹介しました!

それぞれの特徴をまとめると以下の通りになります。

Avatar OptimizerlilNDMFMeshSimplifierMeshia Mesh Simplification
方法削除削減削減
特徴ブレンドシェイプやBOXで指定するなど、直感的に削除が可能
削除している為、ポリゴンを大きく減らすことができる
メッシュ単位でポリゴン削減をすることが可能アバター全体のポリゴンを一括で削減することが可能
目標とするパフォーマンスランクを指定して、それ以下になるように自動で調整をしてくれる

自分のアバターや目的に合わせて、使いやすいツールを選びましょう!

👇合わせて読みたい記事!