VRChat 非公式日本語ドキュメント

アバターのスケーリングに関する技術的考慮事項

アバターのスケーリング機能により、プレイヤーは現在のアバターの身長を変更できます。

このページでは、コミュニティのリソース開発に役立つ範囲で、VRChatのアバターのスケーリングが内部でどのように動作しているかを解説します。

Udonでアバターのスケーリングを使用する方法については、Avatar Eventsのドキュメントまたはサンプルスクリプトを参照してください。 スケーリングに関連する利用可能なアバターパラメーターについては、Avatar Parametersのページを参照してください。

用語の定義

値の範囲

"Prefab Height" に制限はありません。SDK内では、アバターの "View Position" を任意の高さに設定できます。ただし、アバターの全体的なスケールはパフォーマンスランクに影響することに注意してください。

"Target Eye Height" は、Udonでは0.1メートルから100メートルの範囲に制限されており、Action Menuで使用可能なスケーリング範囲は0.2メートルから5.0メートルとなっています。しかし、この範囲外のアバターをアップロードし、スケールダイヤルを使用しないことで、これらの制限を超えることが可能です。その場合、"Target Eye Height" は "Prefab Height" と一致し、制限は適用されません。

この制限があるため、Udonでスケールを完全に適用するには、"avatar eye height changed" イベント発生時にスケールを再適用する必要があります。そうしなければ、ユーザーは背の低い、または高いアバターに切り替えることで、ワールド側が設けた制限を回避できてしまいます。

ウェブサイト経由でスケーリングが無効化されているワールドでは、"Target Eye Height" は常に "Prefab Height" と一致します。

スケールの適用方法

アバターのスケール調整は、アバターのルートトランスフォームの localScale を変更することで機能します。このスケールは強制的に適用されます。アバターのルートのスケールを上書きする方法として、ユーザーが操作可能な手段は、アバターのスケールに関連する Udon 関数以外には存在しません。

スケールが変更されるたび(アバターを切り替えたとき、あるいは現在のアバターをリセット/リロードしたときなど)、そのアバターはローカル環境で「再計測」されます。このプロセスにより、新しい身長に合わせて視点が調整され、音声の発生位置などの内部コンポーネントが再配置されます。

スケールは各プレイヤーに対して「目の高さ(eye height)」として自動的に同期され、小数点以下3桁に量子化されます。リモートのユーザーに対しては、新しい身長データが受信されるたびに、スケールの変更は短い時間をかけて滑らかに補間されます。

Action Menu のスケールダイアルを使用している間、アバターのスケールは鏡の中でのみ変更されます。ダイアルでスケールを確定すると、新しいスケールが即座にアバターへ適用され、リモートのユーザーへと送信されます。

最終更新: