VRChat View Point Bug - Advice

I’m making a post about the viewpoint / view issues I have experienced in Unity when trying to upload avatars. I’ve found a fix, but still want to understand why this problem occurs, if anyone else has advice.

Issue: Despite placing the Viewpoint ping-pong ball between the avatar’s eyes, actually “playing” or using the avatar (desktop or VR headset) gives me an “offset” view.

Attempted solutions (unsuccessful for my case):

  • Applying & resetting transforms & origin points for both armature and model in Blender
  • Resetting all transforms after model has been imported into Unity (ensuring model is zero-ed out, etc)
  • Fixing the Skinned Mesh Renderer to be centered/correctly in-bounds of character model
  • Wildly placing my view point ping pong ball in different locations
  • Completely re-importing my model
  • Remaking my Avatar Descriptor
  • Moving head bone in the Rig > Avatar Configuration t-pose area (and ensuring there were no wild transforms present)
  • Even though my Blender project had no cameras, I ensured the export AND import settings did not allow cameras

Current Solution:

I referenced this link for my deconstruction of the problem: The Avatar Descriptor | VRC School

This is the VRschool documentation website, which is awfully similar to the official VRChat Avatar creation documentation site, but had an additional bit of language that clued me into how I could better view my problem with the view point, shown below:

“The way this view position is used in VRChat is it plays the T-Pose controller, then it compares the location of the view position to the head bone, and saves this offset. This offset is what decides where your view point should be when moving around.”

“TIP: If your view position is in the wrong spot, you can put the VRChat sample T-Pose Controller in the Animator’s Controller Slot, go into play mode, and position the View Position in the right place.“

This clued me in to using the VRChat sample “vrc_AvatarV3UtilityTPose.controller” in place of my empty Animator controller, clicking the Play button, and moving to the Scene view to double-check my view point ping pong ball… lo and behold, it was offset exactly as I saw in-game. To fix this, I moved the view point to where I needed it to be (inside my avatar’s head) and copied the location, then leaving Play mode before pasting that location into the current view point’s values. Save, upload the avatar, and it should be as it needs to be.

Does anyone understand why this problem occurs? I still do not know what I was doing wrong. This has not been an issue under other avatars, and I use the same workflow on them.