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キーで削除します。
FBXのインポート
メニューバーのファイル>インポート>FBXをクリックし、ファイルビューを開きます。
編集するFBXファイルを選択し、「FBXをインポート」をクリックします。
FBXファイルがインポートされました。
メッシュの結合
右側のアウトライナーにはUnityと同じようなAmatureとメッシュのオブジェクトが表示されています。
メッシュを結合するオブジェクトをCtrlを押しながらクリックしていきます。最後にクリックしたオブジェクトに統合されるので、クリックする順番を間違えないように注意してください。
選択し終わったらカーソルを3Dビューウィンドウに置いた状態で、Ctrl+J をクリックします。選択したオブジェクトが1つに結合されます。
不要なオブジェクトをアウトライナーで選択してDeleteキーで削除します。
ここまでで、メッシュの結合は終了です。
Blender-Unity間の座標軸対応
次にUnity向けにエクスポートする前の作業を行います。
BlenderとUnityでは座標軸が異なるため、その対策をします。
アウトライナーでArmatureを選択し、トランスフォームの回転X欄に-90を入力します。
カーソルを3Dビューウィンドウに置いた状態で、Ctrl+A をクリックします。
適用メニューから回転を選びます。
その後、トランスフォームの回転X欄に90を入力します。
これで、アバターが立った状態になっているはずです。
FBXのエクスポート
メニューバーのファイル>エクスポート>FBXを選択し、ファイルビューを開きます。
エクスポート先のフォルダを選んでFBXファイル名を指定します。
内容欄のオブジェクトはアーマチュアとメッシュを選択します。(Shift押しながら2つクリック)
トランスフォームのスケールを適用は「FBX単位スケール」を指定します。
これらのオプションを指定した後に、「FBXをエクスポート」ボタンをクリックします。
UnityでFBXインポート
Unityに作成したプロジェクトにFBXをインポートし、FBXインポート時のオプションを指定していきます。
Modelタブ:Legacy Blend Shapeのチェックを外し、Blend Shape NormalをNoneにします。
Rigタブ:AnimationをHumanoidにしてApplyします。Jawに意図しないボーンが割り当てられることがあるので、Noneに修正します。
Animationタブ:特に変更する箇所はありません。
Materialタブ:変更前のFBXと同じマテリアルを指定してApplyします。
VRC Avatar Descriptorの追加や表情の指定はBlenderを使わない場合と同じようにできます。(この記事の範囲ではないので省略します)
ここまでで、Blenderを使ったメッシュの結合によるアバター最適化の手順を説明しました。メッシュの結合だけでは、アバターランクの改善には不十分なこともあるので、別の記事でも最適化に関する内容を取り上げていきます。
それでは、楽しいVRChatライフを!