Skip to main content

Turning Waltzer into an Avatar with Avatar Dynamics

What sparked it all?

Thanks to the inspiration I got from @NinjaSteeve , I decided to try to turn the Waltzer into an avatar and check out the different features and capabilities of VRChat's Avatar Dynamics while at it.

jjAJHfPgdS.jpg


Replicating the physics

One of the primary selling points of my in-world Waltzer is its realtime physics, and I wanted to replicate them as accurately as possible on the avatar. After a bit of exploration and experimentation on the different options, I decided to utilize PhysBones for the realtime physics of the cars.

// TODO: Add demo video

The result isn't by any means perfect, but for what it is, I'm thoroughly impressed by the stability and performance of VRChat's implementation of PhysBones.


Features

VRChat_Z2mCCdtOsZ.jpg

I ended up implementing several different features into the avatar in order to make it more flexible and suitable for nearly any sized avatar or space for deploying it.

  • [Toggle] Drop: Drops the ride in world space
  • [Radial] Scale:  Scale of the ride between 100% (19 m radius) - 10% (1.9 m radius), this is perfect for spawning the ride as model toy for tiny avatars on top of a table etc.
  • [Toggle] Running: Running state of the ride, will automatically speed up and slow down based on the state
  • [Radial] Smoke: Emits the defined amount of smoke on the ride for added visual effect
  • [Toggle] Safety Bars: Raises or lowers the safety bars of the cars
  • [Radial] Distance: Deployment distance of the ride in relation to the player on the forward axis

To Do

  • Brakes - (It seems like animating PhysBones doesn't update the values on the component, in editor the PhysBone will apply the animated values as soon as any of the inspector fields are manually modified by the user)
  • Fake GI - Bake lighting on the ride and apply it on the surfaces based on the current lighting pattern on the ceiling
  • Music - Add an audio source to the ride for playing music
  • Animated ride operator - Animate one of my avatars as the operator of the ride who will walk around the platform
  • Add ability to grab the cars (Maybe) - This shouldn't be impossible with the current setup using PhysBones