Forum Discussion
Vrally
11 years agoProtege
Possible to disable timewarp?
With the new compositor framework timewarp (both rotational and positional) is enabled by default. But I am tinkering a bit with augmented reality solutions using cameras and then timewarp only leads to a lot of juddering (because the video feeds are missing the depth component).
So my question is: Is there an easy way of disable timewarp?
So my question is: Is there an easy way of disable timewarp?
14 Replies
- cjwiddExplorer[deleted]
- VrallyProtege
jherico said:
Timewarp works because when you submit a frame you're supposed to provide the pose with which the frame was rendered. However, if you really want to defeat timewarp you could try fetching the predicted pose at the time of image submission and adjusting the passed 'rendered pose' by the inverse of the difference between the two poses.
However, the proper solution to augmented reality issues is to capture the head pose at the time of the input device capture and then use that pose information to render the image inside a 3D scene. The camera image from within the scene will wobble around, but the content viewed by the camera should remain steady.
In my case I used the Oculus on a motion platform, so it was necessary for me to roll my own tracker since the inertial information in the Rift got both head movements and motion platform movement. So disabling time warp was a must (or else I got horrible jitter). But then Oculus made the decision to remove the option of enabling/disabling time warp and the Rift was no longer usable on my motion platform (at least with the latest iterations of the SDK). - MikeB123Honored Guest
But then Oculus made the decision to remove the option of enabling/disabling time warp and the Rift was no longer usable on my motion platform (at least with the latest iterations of the SDK).
Actually, it's still in there. They've removed the enum but you can still get at it as of v1.3 of the SDK. You'll need to define ovrLayerDirect locally (It's a little different to previous versions due to other API changes):
typedef struct OVR_ALIGNAS(OVR_PTR_SIZE) ovrLayerDirect_
{
/// Header.Type must be ovrLayerType_EyeDirect.
ovrLayerHeader Header;/// ovrSwapTextureSets for the left and right eye respectively.
/// The second one of which can be NULL for cases described above.
ovrTextureSwapChain ColorTexture[ovrEye_Count];/// Specifies the ColorTexture sub-rect UV coordinates.
/// Both Viewport[0] and Viewport[1] must be valid.
ovrRecti Viewport[ovrEye_Count];} ovrLayerDirect;
To initialize the layer in code, use:
ovrLayerDirect ld = {};
ld.Header.Type = (ovrLayerType)6;
ld.Header.Flags = 0;
Notice the enum is still 6. No idea how long this will be possible for, however -- my guess is that it's getting ripped out completely soon!
Mike - mgopshteinHonored GuestFor AR you can use ovrLayerFlag_HeadLocked flag in your camera layer
Quick Links
- Horizon Developer Support
- Quest User Forums
- Troubleshooting Forum for problems with a game or app
- Quest Support for problems with your device
Other Meta Support
Related Content
- 4 months ago
- 9 months ago
- 6 months ago
- 7 months ago