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

アバターのスケール調整に関する技術的な考慮事項

アバターのスケール調整機能を使用すると、プレイヤーは現在のアバターの身長を変更できます。

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

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

用語の定義

  • Eye Height: Tポーズ時のアバターの視点の高さ(Transform位置のY成分)。
  • Prefab Height: スケールがデフォルト値の時のアバターのアイハイト(Eye Height)。これは、SDKで「View Position」を配置する際に設定する値です。
  • Target Eye Height: プレイヤーまたはUdonによって設定された、アバターがスケール調整されるべき目標のアイハイト(Eye Height)。
  • Avatar Scale:「Prefab Height」と「Target Eye Height」の比率です。例えば、ターゲットが4.5メートルで、プレハブの高さが1.5メートルの場合、「Avatar Scale」は3になります。

値の範囲

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

「Target Eye Height」はUdonにおいて0.1メートルから100メートルの間に制限されており、アクションメニューで使用可能なスケーリング範囲は0.2から5.0メートルです。しかし、この範囲外のアバターをアップロードし、スケールダイアルを使用しないことで、それらの制限を超えることができます。その場合、「Target Eye Height」は制限のない「Prefab Height」と一致します。

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

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

スケーリングの適用方法

アバターのスケール変更は、アバターのルートトランスフォームの「localScale」を変更することで機能します。このスケールは強制適用されます。アバターのスケーリングに関連するUdon関数以外に、ユーザーがアバターのルートスケールを上書きする方法はありません。

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

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

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

最終更新: