I’m making a game for HTC Vive in Unity 5.2.0f3 using the SteamVR plugin.
When I create a world positioned canvas and parent it to an object with the SteamVR_TrackedObject component to follow the Vive controller, the UI follow the object, as expected, but with a small but very noticeable delay.
I was poking on its guts to try to undesrtand the problem and I think that it could be a problem on the way that the SteamVR_TrackedObject updates the object’s transform: SteamVR_TrackedObject.OnNewPoses, which actually updates the position and rotation of the object, is called when a “new_poses” event is broadcasted through the SteamVR_Utils.Event channel and this event is broadcasted by SteamVR_Render.RenderLoop coroutine.
Now I’m wondering if this pipeline leads to a late update of the object’s transform and, somehow, the canvas is always updated with a frame of delay.