

こんにちは!なつきです!
VRChatを遊んでいて重すぎて、画面がカクカクすることはありませんか?ひどい場合はVRChatが落ちてしまうこともあると思います…
そんな問題を軽減してくれるかもしれないギミックが『FrameTimeSwitch』というものです。
VRChatのFPS(フレームレート)によってPhysBoneやオブジェクトをオフにすることができます。
FPS(フレームレート)は、1秒間に画面が更新される回数です。
数値が高いほど動きが滑らかになり、低いとカクカクします。
目次
『FrameTimeSwitch』とは?
FrameTimeSwitch Boothページ:https://childwitch.booth.pm/items/6466573
『FrameTimeSwitch』は、FPS(フレームレート)が一定の基準を下回ったユーザーに対して、特定のオブジェクト(例:パーティクルエフェクト)を自動的にオフにすることで、負荷を軽減するギミックです。
- 自動切り替え:
FPSが設定した基準値を下回ると、3秒後に指定したオブジェクトがオフになり、基準値を上回ると再び3秒後にオンになります。 - 複数の基準値の設定:
30-35、30-40、40-45、40-50の4種類のプリセットがあります。例えば「30-35」の場合、FPSが30未満でオフ、35以上でオンとなります。
注意点:
アニメーターを使用してギミックを動作させているので、セーフティーをかけられていると正しく動作しません。なので根本的な軽量化にならない点には気を付けてください。
※User偽装をしているとUserとしてのセーフティーになります
動作の様子
画像のようにFPSによってオブジェクトが切り替わります。
FPSは常に変動していますが、しきい値をまたいだ瞬間にギミックが発動するわけではないのでオブジェクトのオン/オフが連続で切り替わることはありません。

導入方法
記事内で方法を紹介しますが、導入方法が少しだけ複雑で文字だけではわかりずらい部分があると思います。
なので『FrameTimeSwitch』の制作者様である「アマリリス」さんよりYoutubeに導入方法が投稿されているので合わせてごらんください。
① Unityで導入の準備をする
まず、『FrameTimeSwitch』を適用したいものをアバターに導入してください。
今回は「30~40fpsで帽子をオフ」に設定していきます。

次に、Boothより『FrameTimeSwitch』をダウンロードしてUnityにインポートします。

② 『FrameTimeSwitch』を適用する
インポートが完了したら制限の基準値を選んで、それに対応するPrefabをアバター本体にドラッグ&ドロップします。
- 30~35で制限をかけたい →「FTS_30-35」
- 30~40で制限をかけたい →「FTS_30-40」
- 40~45で制限をかけたい →「FTS_40-45」
- 40~50で制限をかけたい →「FTS_40-50」

Prefabを入れたら、アバターを選択して「Recording」というアニメーターをアバターのAnimatorにドラッグ&ドロップします。

アニメーションを作成する
ここまで設定ができたら、オフにしたいオブジェクトを指定していきます。
まず、「Switch_Off」というアニメーションをダブルクリックで開きます。するとアニメーションのメニューが開きます。

開いたら、ギミックによって切り替えたい箇所を選択します。
選択したら、メニューの赤い丸をクリックしてInspestorからチェックボックスを外します。チェックボックスを外したらもう一度赤い丸をクリックしてください。
記事内ではオブジェクト自体をオフにしていますが、「Physbone」のチェックボックスを外すことで、「Physbone」のみを無効にするといった使い方も可能です。
自分なりにいろいろな設定を試してみてください!

次に、先ほど追加したキーをドラッグで選択して「Ctrl+C」でコピーします。
そしたら、「Switch_On」のアニメーションに移動して、「Ctrl+V」でペーストします。ペーストした後は必ずチェックボックスにチェックを入れるようにしましょう。
「Switch_On」ではオフになったオブジェクトをオンにするアニメーションなので、複数のオブジェクトでギミックを適用したい場合はすべてのチェックボックスにチェックを入れてください。

以上で『FrameTimeSwitch』の導入は完了です。お疲れさまでした。
使用方法
正しく設定ができている場合フレームレートに合わせてオブジェクトが切り替わっているはずです。

エクスプレッションメニューからギミックの「有効/無効」を切り替えることが可能です。
- Local:自分視点での切り替え
- Others:他人視点での切り替え

まとめ
マテリアルを統合やポリゴン削減などと違ったアバターの軽量化方法である『FrameTimeSwitch』を紹介しました。
パソコンのスペックが高い人には見えるように、重い人には見えないようにという新しい発想が素晴らしいと思いました!
他の軽量化では多くの場合、見た目が劣化してしまうのですがこの方法を使用することで人によって分けることができるので効率的な軽量化ができます。
とても素敵なギミックだと感じたのでぜひ導入してみてください!
『FrameTimeSwitch』の制作者様である「アマリリス」さんはほかにも素敵がギミックを開発しているのでぜひ確認してみてください👇