-
Notifications
You must be signed in to change notification settings - Fork 8
Height Scaling
Avatar height affects voice and audio range. Taller players can be heard from farther away, shorter players from closer.
The system reads each player's avatar eye height (in meters) and evaluates an AnimationCurve to produce a range multiplier:
- X-axis: avatar eye height in meters (VRChat limits: player-controlled 0.2–5m, Udon 0.01–10000m; officially supported 0.1–100m)
- Y-axis: voice range multiplier (1.0 = no change)
The multiplier is applied to voice distance far/near, volumetric radius, and avatar audio ranges.
If a player's height falls outside the curve's time range, Unity clamps to the nearest endpoint value.
The default curve is constant at 1.0 — height has no effect on range. This preserves backward compatibility. To enable height scaling, edit the curve.
Set different height curves per zone — e.g., height matters on stage, not in a lounge.
| Field | Type | Default |
|---|---|---|
HeightToVoiceCorrelation |
AnimationCurve |
Constant (0-25m, 1.0) |
See PlayerAudioOverride for field details.
Set the default height curve for all zones.
| Field | Type | Default |
|---|---|---|
HeightToVoiceCorrelation |
AnimationCurve |
Constant (0-25m, 1.0) |
See PlayerAudioConfigurationModel for field details.
| Curve Shape | Effect |
|---|---|
| Constant at 1.0 | No height effect (default) |
| Linear from 0.5 (at 0.5m) to 2.0 (at 2.5m) | Tall players heard at double range |
| Linear from 0.2 (at 0.5m) to 1.0 (at 1.5m) | Short players have reduced range, normal above 1.5m |
| Step at 1.0m | Below 1m = half range, above 1m = full range |
- Use the Unity curve editor to visualize the mapping before entering play mode
- Keep the curve smooth — sharp steps create abrupt range changes as players resize avatars
- Typical realistic range: 0.5x at 0.5m height to 1.5x at 2.5m height
- Roleplay worlds: taller characters have louder voices — matches physical presence
- Competitive games: avatar height affects audio advantage — smaller avatars are quieter
- Accessibility: compensate for avatar size differences in social spaces
- Voice Directionality — another range modifier (head rotation)
- PlayerAudioOverride — per-zone settings
- Architecture — how height scaling fits in the update loop
- Player Avatar Scaling — VRChat official docs on avatar height limits
- Architecture
- Occlusion
- Voice Directionality
- Height Scaling
- Audio Processing Pipeline
- Private Voice Channels
- WorldAudio Subsystem
- WorldAudio Limitations
- Set Up Occlusion
- Set Up Voice Channels
- Set Up Reverb
- Set Up Height Scaling
- Set Up Voice Directionality
- Set Up Microphone
- Set Up WorldAudio Emitters
- Enable Debug Mode
- Tutorial #1: Custom Voice Override Zone
- Tutorial #2: Private Voice Channels
- Tutorial #3: Setting Up World Audio
- PlayerAudioController
- PlayerAudioOverride
- PlayerAudioOverrideList
- PlayerAudioView
- PlayerAudioConfigurationModel
- SyncedPlayerAudioConfigurationModel
- VoiceUtils
- IgnoredPlayers
- AudioObstacle
- DefaultPlayerOcclusion
- NullPlayerOcclusion
- PlayerOcclusionStrategy
- Privacy Channel Reference
- AdjustableGain
- DynamicPrivacy
- PickupMicrophone — MVC microphone system with MicModel/MicController/MicView
- VoiceOverrideTriggerZone
- VoiceOverrideRoom