2021.10.31この記事は約7分で読めます。アバターはできるだけ軽くしたいものですが、重くなってしまうことがあります。好きな姿になりたいもの。いろいろなものを積みたいのは分かります。必要のないもののせいで重くなるのは不本意です。Compression<Questのみ>ASTC圧縮を使用する余分なAnimationの削除イントロダクションここではアバターの最終ビルドサイズを小さくすることを主観点とします。アバターが重くなる原因はさまざまであり、容量が小さいから軽いとも限りません。Questスタンドアロン環境向けのアバターには最終ビルドサイズ(アセットバンドルサイズ)が10MBの絶対的上限があります。10MBを超えてしまうとアバターをアップロードできません。Quest向けビルドで10MBを超えた場合、上記のエラーメッセージが表示されアバターをアップロードできません。【追記】2022/10/29ダウンロードサイズだけではなく、VRAMの使用量も重要な指標と見られつつあります。すべてが同じ対策とは限りませんが、ダウンロードサイズの削減と共通する部分も多くあります。専用ビデオメモリと共有ビデオメモリはVRChatでどのように使われるかパソコンに映像を描画するための部品の1つとして、ビデオメモリがあります。www.proustite.com2022.10.29最適化は、まず無駄なものを洗い出してからあちこちで様々な最適化のテクニックがありますが、まず第一にとても重要なことがあります。無駄なものを積まないことです。この「無駄なもの」にはアバターやワールドの表現上必要なものは含みません。表現上必要で積まなければならないものは仕方ありませんが、明らかに使用していないものが原因で重くなっているのであれば不本意です。無駄を削減することで、アバターやワールドの品質を低下させずに容量を減らすことが簡単にできます。容量を減らした分だけ積み込めるものが増え、アバターやワールドの作品としてのクオリティを向上させられるかもしれません。この方法はVRChatに限らずUnity全般としても当てはまります。計測する何がともあれ、まずは何が原因で重くなっているのかを測定しなければ始まりません。ビルドを行った時、出力されるアセットバンドルに何が含まれたか、何が容量を占有しているかを表示できるパッケージが用意されています。Managerを選択します。packagesにチェックします。Inspectorを選択し、Installをクリックしてください。Windowsをクリックします。reportをクリックします。アバターやワールドのアップロードを実行する必要はありません。Inspectorに最後に実行されたビルドの情報が表示され、具体的に何のファイルがどれだけの容量を占有したかを視覚的に確認できます。この情報はアセットフォルダ直下のBuildReportsフォルダに保存され、後で確認することができます。容量を占有しやすいアセットと占有しにくいアセットについてオーディオファイル、テクスチャは特に大きな容量を占有する可能性があります。モデルデータは場合により変動します。ControllerやAnimationファイル、シェーダー、マテリアルはほとんど占有しません。これらはアセットフォルダ内ではテキストファイルで保存されているため、実際にアセットバンドルに格納される場合は圧縮されて無視できるほどまで小さくなるためです。不要なものを積まない使っていないものはビルドから取り除きましょう。使っていないのにビルドに含めていると容量の無駄となります。EditorOnlyGameObjectにEditorOnlyを指定した場合、そのGameObjectはビルドに含まれなくなります。テスト用に作成したり、アバターの改変を行う過程で不要となったメッシュやテクスチャを最終ビルドに含めないようにすることができます。EditorOnlyが指定されているとき、そのGameObjectはエディタ内では表示されますが、最終的なアバターに含まれることはありません。テクスチャの共用マテリアルを複数使用する場合、できるだけテクスチャを共有してください。アバター改変の時に起こりがちですが、マテリアルをコピーして入れ替えることがあります。このとき、同じテクスチャを使用しているすべてのマテリアルに対して同じ操作を行ってください。UV上異なる箇所を読み込んでいても、この操作を行わなければ改変前と改変後の2枚のテクスチャがビルドに含まれることになります。アバターによっては複数のマテリアルで1つのテクスチャを共有していることがあります。1つのテクスチャをもとに、シェーダーの設定値のみを変更して表現する場合があります。そのような場合に対応を行うと、必要のないテクスチャによる容量を減らすことができます。目立たない場所の品質を低下させるあまり目立たない場所について、品質を犠牲にすることで容量を削減することができます。多くの人はアバターの装備品よりもそのアバター本人を見ることが多いはずです。人間が会話するとき、大抵は顔を見ながら話すはずで、それ以外の場所を見ながら話す人は少ないでしょう。VRChatでは鏡を見ながら話す文化がありますが、その場合でも考え方は同じです。Unityアセットストアから持ち込んだアセットでは以下の施策が適用されていないことがあります。この操作をすることで大きく容量を削減できる余地が残されています。目立たない場所のテクスチャサイズを小さくする人が良く見るアバターの顔に多くの容量を割り当て、他の場所は小さくすることができます。テクスチャを選択し、Inspectorを確認します。Sizeを適当な大きさまで小さくします。このサイズを小さくすることで、アセットバンドルに含まれるテクスチャの容量を大きく削減できます。必要以上に小さくすると画質が粗くなりますのでご注意ください。Sizeの2乗に比例して変化します。Sizeは2のべき乗で指定できますので、1段階下げるごとにテクスチャの容量は1/4になります。逆に1段階上げるごとに、テクスチャの容量は4倍となります。Qualityに変更することでテクスチャの品質を下げる代わりに、容量をある程度削減することも可能です。Compressionテクスチャに対して非可逆圧縮を行います。わずかに品質が低下しますが、テクスチャの容量を数分の1まで削減することができます。Compressionにチェックをします。Qualityを調整します。数字を大きくするほど品質を保てますが、圧縮効果が低下します。Compressionによる容量削減効果はありません。<Questのみ>ASTC圧縮を使用するテクスチャの圧縮形式をASTCに変更することで、高い圧縮率を期待できます。Quest版VRChatが利用できる端末は決まっており、そのすべてがASTC圧縮に対応しているため変更することによるデメリットはありません。VRCQuestToolsによってQuest対応化を行った場合は、初回設定にてASTC圧縮を使用するよう促されます。余分なAnimationの削除PC版のアバターからQuest版を生成する場合、一部のギミックを削除することがあります。削除したギミック用のAnimationが残っているとそれもビルドに含まれてしまい、無駄に容量を消費することになります。Controllerから不必要なレイヤーを削除することで、容量の削減を図ることができます。レイヤーを削除するとレイヤーの階層が変更されるため、階層を指定しているコンポーネントがある場合はご注意ください。3.0で制作されているアバターを、VCCに移行させます。“Island-4”)と画面のちらつき、ワールドになされた対策について非常に広大なワールドでは、画面がチラついたりぐにゃぐにゃになったりします。Companionがアップデートできないことがあります。Controllerの使用が非推奨となっています。技術記事リンクを知っている人だけが入れるVRChatインスタンスすべてのVRChatインスタンスは、リンクが分かれば誰でも入ることができます。Instancesの場合は、その限りではありません。Controllerで統一しましょうUnity全般的な話で、VRChatのAvatars3.0にも大いに関わります。Unity2018.4.20f1および2019.4.29f1に該当。以下の内容は現在VRChatで使用されているUnity2019.4.29f1向けです。t=e.querySelector(".ep-widget-search-comments-input");t.addEventListener("keyup",d),t.addEventListener("keydown",(e=>{38===e.keyCode&&e.preventDefault()})),t.addEventListener("blur",(function(){setTimeout((()=>i(t)),200)}))}))}();タイトルとURLをコピーしました。