Forum Discussion

🚨 This forum is archived and read-only. To submit a forum post, please visit our new Developer Forum. 🚨
mgopshtein's avatar
mgopshtein
Honored Guest
10 years ago

PC SDK: disable Timewarp feature

I am using a PC SDK, and would like to disable the timewarp feature (and, even better - disable the tracking as a whole). I have seen similar questions with no answers (https://forums.oculus.com/viewtopic.php?f=20&t=26150), and recommendations to do OVRManager.tracker.isEnabled - but that is for Unity, and am using the PC version of the SDK.

An alternative would be submitting my rendered texture as "Debug" layer, but in that case the distortion is also disabled. Maybe there's a way to perform distortion manually, and combined with "Debug" layer I can effectively get disabled Timewarp?

Michael

10 Replies

  • lamour42's avatar
    lamour42
    Expert Protege
    Hi,

    applying tracking is not done automatically. You have to set it to your layer explicitly. Usually this is done with a call to ovr_CalcEyePoses(). It's last parameter is the render pose ouput. Just do not provide your layer but some temp structure, so your layer.RenderPose does not get overwritten.

    Then when you call ovr_SubmitFrame and provide your layer, the rendered image will be at a fixed position. You can experiment with the actual position data in your layer to have the image where you want it to appear.
  • This is an interesting suggestion, however I can't make it work. When I pass incorrect values to ovr_SubmitFrame the image is not shown at all. This makes sense, as, probably, the SDK also reads the sensors internally, as part of ovr_SubmitFrame processing, and when the difference is too large, it confuses it.
    If you have a code example that does that, would be great!

    I also tried providing the ovr_GetPredictedDisplayTime value as the SensorSampleTime in layer's info, did not help as well.

    Another possible direction that I've found is specifying an ovrLayerFlag_HeadLocked flag to the layer, but I could not make this work either - maybe other parameters were incorrect.
  • I would be interested by the solution too.
    Stop me if I'm wrong, mgopshtein: you would like to use the headset as a "simple 3D screen", wouldn't you ? So no tracking needed. This is the purpose of one of my applications but I didn't found a solution to disable the tracking (& timewrap). :?
  • "lamour42" wrote:
    A quad type layer should give you the same
    I have looked at it, but quads accept a single texture, so I can't produce a stereo image this way.
  • I don't fully understand what you guys mean by not being able to disable tracking. From my point of view, not being tracked is like the default state, you have to actively handle the transform of the eye to support tracking. Can't you do exactly as if you supported tracking but when you perform rendering you just use a zeroed out pose in your engine, no translation, no rotation ? If you want stereo you can still apply the offset to each eye, without the rest of the transform.

    Admittedly timewarp is another matter because it happens at a lower level.

    Are you guys using a custom engine?
  • "Mecrof" wrote:
    you would like to use the headset as a "simple 3D screen", wouldn't you ?
    Yes, exactly. But I still want the distortion to occur, otherwise I would simply use "debug" layer type.
  • "joan" wrote:
    Can't you do exactly as if you supported tracking but when you perform rendering you just use a zeroed out pose in your engine, no translation, no rotation
    This is exactly what I tried to do. Moreover, in my test I'm just copying a static image to the output texture. But still, after I submit the frame, Oculus will shift the image a bit (this is the timewarp feature - it tries to compensate for the slight movement of the head which occurred between the estimated pose at rendering time, and the more precise pose available later). This is exactly the feature I'm trying to disable.
  • "joan" wrote:
    when you perform rendering you just use a zeroed out pose in your engine, no translation, no rotation ? If you want stereo you can still apply the offset to each eye, without the rest of the transform.

    This is what I'm doing. But for unknown reasons, when I move the headset, the 2D plane (where the right and left images are drawn) move a little bit like latency. And this effect was increased since the 0.8 SDK.
    I don't know if it comes from the tracking or the timewrap or anything else. I'm not sure if I've explained clearly :?

    @mgopshtein is it your problem too ? [edit] this is it :lol: [/edit]
  • "Mecrof" wrote:
    is it your problem too ?
    I believe it is, yes, as the result of the Timewarp the whole plane is shifted a bit.