Skip to main content
New Participant
March 30, 2026
Question

Meta Avatars Hands gripping controllers look unnatural. How to fix in Unity?

Hey everyone,

I’m working on a VR multiplayer project using Meta Avatars with Photon Fusion and Meta XR Building Blocks in Unity, and I’ve run into an issue with hand realism.

Current Setup:

  • Using Meta XR SDK (Building Blocks)
  • Avatar spawned via Networked Avatar (Fusion)
  • AvatarSDK → OvrAvatarEntity + Sample Input Manager (Standalone mode)
  • OVR Camera Rig assigned correctly
  • Controllers tracked and avatar loads fine

Problem:

  • Avatar hands appear and track correctly
  • But grip looks unnatural — like the controllers are “stuck” to the hands
  • Fingers don’t wrap properly around the controller
  • No subtle finger behavior (like index resting on trigger or thumb on joystick)
  • Looks very different from Meta Quest Home environment

What I’ve Tried:

  • Assigning OVR Camera Rig to Sample Input Manager
  • Switching Body Tracking Mode to Standalone
  • Trying OvrAvatarCustomHandPose (but skeleton is runtime-generated, tricky to bind)
  • Adjusting controller transforms manually
  • Testing OVRInput values (trigger, grip, touch — they work)

Questions:

  1. How do you achieve realistic controller grip with Meta Avatars?
  2. Are there any recommended workflows or examples for “Meta Home–level” hand realism?

Would really appreciate any guidance, sample setups, or best practices 🙏
Thanks!

1 reply

Degly
Inspiring
April 1, 2026

I get your frustration!

As far as I have seen when I used Meta Avatars before, they don’t automatically give you “Home-level” hand poses, you need to drive finger poses yourself.

If this information is not updated I would love if someone from the community could provide the new info, but for now in case it helps:

  • Use OvrAvatarInputTrackingDelegate + OvrAvatarInputControlDelegate properly
  • Feed trigger, grip, thumb touch values into the avatar each frame
  • Enable controller-driven hand poses (not just tracking)
  • Optionally use OvrAvatarCustomHandPose for better grip shapes

In short: you’re missing the input → pose mapping layer
Good luck!