VRChat はじめてのBlender2.91を使ったアバター最適化① メッシュの結合

こんにちは!Klueleです。
最近いろいろなプラットフォーム向けにアバターを作成したり、大人数イベントに参加することが多くなり、Unityだけでは作業が難しいことが増えてきました。Blenderを使えば、Unityではできないアバターの最適化ができます。はじめての人でもできる内容を紹介していきたいと思います。
なお、Unityなら改変ができる程度の理解がある前提で書くので省略されている手順があります。

ここでいうアバターの最適化とは、データサイズを小さくすることではなくCPUへの負荷を減らすことを指しています。全体的な概要は公式サイトなどにも書かれているので、英語が読める人はそちらも参考にしてください。
この中にはSkinned Mesh Rendererの負荷が高いことも書かれており、メッシュを統合してSkinned Mesh Rendererのコンポーネント数を削減するとCPU負荷も低減できることになります。

VRChat | Avatar Optimization Tips
https://docs.vrchat.com/docs/avatar-optimizing-tips

Qiita | VRChatアバター最適化のTips [日本語訳]
https://qiita.com/tak5211/items/bfb4fd5358673f020c13

Blenderのインストールと基本操作

インストールはblender.orgからインストーラをダウンロードして実行します。Blenderのバージョンは2.91を前提とします。
https://www.blender.org/download/

基本操作は、以下ページの内容は目を通しておくといいかなと思います。
https://czpanel.com/lecture/blender/basic/
(実際に操作すると数時間程度かかるかもしれないです。。)

ここからの内容は新屋敷にむさん (@NIM_zip) の動作を参考にしました。ありがとうございました。
https://twitter.com/NIM_zip/status/1351369308966850560

Blenderを起動すると中央にCubeがあります。
クリックでCubeを選択し、Deleteキーで削除します。

画像1

FBXのインポート

メニューバーのファイル>インポート>FBXをクリックし、ファイルビューを開きます。

画像2

編集するFBXファイルを選択し、「FBXをインポート」をクリックします。

画像3

FBXファイルがインポートされました。

画像4

メッシュの結合

右側のアウトライナーにはUnityと同じようなAmatureとメッシュのオブジェクトが表示されています。
メッシュを結合するオブジェクトをCtrlを押しながらクリックしていきます。最後にクリックしたオブジェクトに統合されるので、クリックする順番を間違えないように注意してください。

画像5

選択し終わったらカーソルを3Dビューウィンドウに置いた状態で、Ctrl+J をクリックします。選択したオブジェクトが1つに結合されます。

画像6

不要なオブジェクトをアウトライナーで選択してDeleteキーで削除します。

画像7

ここまでで、メッシュの結合は終了です。

Blender-Unity間の座標軸対応

次にUnity向けにエクスポートする前の作業を行います。
BlenderとUnityでは座標軸が異なるため、その対策をします。
アウトライナーでArmatureを選択し、トランスフォームの回転X欄に-90を入力します。

画像16

カーソルを3Dビューウィンドウに置いた状態で、Ctrl+A をクリックします。
適用メニューから回転を選びます。

画像9

その後、トランスフォームの回転X欄に90を入力します。

画像10

これで、アバターが立った状態になっているはずです。

FBXのエクスポート

メニューバーのファイル>エクスポート>FBXを選択し、ファイルビューを開きます。

画像11

エクスポート先のフォルダを選んでFBXファイル名を指定します。
内容欄のオブジェクトはアーマチュアとメッシュを選択します。(Shift押しながら2つクリック)
トランスフォームのスケールを適用は「FBX単位スケール」を指定します。

画像12

これらのオプションを指定した後に、「FBXをエクスポート」ボタンをクリックします。

UnityでFBXインポート

Unityに作成したプロジェクトにFBXをインポートし、FBXインポート時のオプションを指定していきます。
Modelタブ:Legacy Blend Shapeのチェックを外し、Blend Shape NormalをNoneにします。

画像13

Rigタブ:AnimationをHumanoidにしてApplyします。Jawに意図しないボーンが割り当てられることがあるので、Noneに修正します。

画像14

画像15

Animationタブ:特に変更する箇所はありません。
Materialタブ:変更前のFBXと同じマテリアルを指定してApplyします。

画像16

VRC Avatar Descriptorの追加や表情の指定はBlenderを使わない場合と同じようにできます。(この記事の範囲ではないので省略します)

ここまでで、Blenderを使ったメッシュの結合によるアバター最適化の手順を説明しました。メッシュの結合だけでは、アバターランクの改善には不十分なこともあるので、別の記事でも最適化に関する内容を取り上げていきます。
それでは、楽しいVRChatライフを!



この記事が気に入ったらサポートをしてみませんか?