Skip to main content
sh0v0r
Up and Coming
September 6, 2014

OVRSubCamera Problems

SDK Version 0.4.2
Windows 8.1
AMD R920X
CPU i7-4770k
RAM 8GB

I've been trying in vain to get a release of Lunar Flight out and smashing my head against a wall trying to get a set of Depth Ordered cameras so I can have a near and far setup for the Cockpit.

Lots of people have offered suggestions and different methods or changes to the script 'vrdaveb' provided.

So after much stuffing around I finally get it partially working in the Editor but there are problems.

I cannot use Image Effects, a known issue.
This means I can't use colour correction to fix the Black Smears
I can't fade the screen between transitions since the latest SDK broke Unity GUI which I was using for Screen fades.
I can't have the nice Sun Shafts in the cockpit which add greatly to the atmosphere.

It looks mostly fine, scale is correct, depth perception is correct, however I can sense some sort of eye strain, I'm wondering if this the 'cross-eyed' focus some people have mentioned in another thread, my eyes can't relax. I have other single camera controllers in the game and they do not produce eyestrain. The only real difference is that the OVRController in the cockpit is scaled down to 0.25 and it is using the SubCamera setup.

Finally a Standalone Build just displays a Blank Screen after switching to the Cockpit from the Front end attract screen. This is very odd behavior since it works fine in the Editor. I tried a DX11 build as well and got the same result. Speaking of DX11 for some reason this build looked very dull like someone turned the brightness down.
    This topic has been closed for replies.

    11 replies

    Up and Coming
    September 6, 2014
    i wish I could help you out, I did hear someone from Oculus giving a talk about the Unity integration and they made it sound like this whole SDK rendering feature of the new SDK should make things easier on our end when they upgrade the SDK, but they just implimented that starting in 0.4.0. I don't know how true that is, but going from 0.4.1 to 0.4.2 took me 1/1000 of the time it took me to go from 0.25 to 0.4.1, so hopefully once you get all this worked out it won't get blown up again.
    Participant
    September 6, 2014
    I think it's high time we all start trying to make Outerra's depth buffer precision technique work in Unity.

    http://outerra.blogspot.nl/2012/11/maximizing-depth-buffer-range-and.html

    I've spent a whole week trying to merge depth buffers of layered cameras with different clipping distances, but it's one heck of a mess to sort out, and maybe it's just the wrong way of going about it.

    Also, I've started to maintain a private fork of the SDK with my own patches. I'm a bit disappointed with the quality of the original code. Right now I have made it possible add an arbitrary amount of layered cameras per eye by adding them to lists in the OVRCameraController inspector.
    Volo Airsport - Wingsuit Skydiving
    Inspiring
    September 6, 2014
    Maybe it's time to consider porting to Unreal.
    Brad Davis - Developer for High Fidelity Co-author of Oculus Rift in Action
    New Participant
    September 6, 2014
    Let me quickly share how I'm doing multiple layered cameras. Maybe it's horrible but it seems to work for me.

    I have 3 OVRCameraControllers, with camera depths set in the order I want them to render. I use one for the scene, one for 3D UI, and one for fading.

    I'm not worried about the z buffers because:

    "cratesmith wrote:I'm using multiple cameras and clearing depth, so I'm not giving the timewarp filter depth values for most pixels.

    That should work fine. Timewarp doesn't use depth information."

    That from an Oculus employee.

    The fader has a sphere rendering in its layer, with a tweaked shader so that the inside faces will be rendered. I change the alpha value on this to fade the scene and UI in and out. I have a second sphere in the UI layer to dim the scene without dimming the UI.

    It all seems to work for me. The only hitch I ran into was that I had to have all the cameras deactivated at launch or Unity would sometimes bomb out. Activating them in the Start function of my game controller class instead seemed to eliminate that problem.

    Hope this helps, or someone tells me just what a mess I've made!
    sh0v0r
    sh0v0rAuthor
    Up and Coming
    September 7, 2014
    "mzandvliet" wrote:
    I think it's high time we all start trying to make Outerra's depth buffer precision technique work in Unity.

    http://outerra.blogspot.nl/2012/11/maximizing-depth-buffer-range-and.html



    Yeah, I've seen that before, I wonder if that is something that can be done in a shader?
    sh0v0r
    sh0v0rAuthor
    Up and Coming
    September 7, 2014
    "invariant" wrote:

    I'm not worried about the z buffers because:


    Depth information is required for certain Image Effects so ultimately we most likely need to have them combined between each camera into the final frame.
    Up and Coming
    September 9, 2014
    Not a single reply from an Oculus employee yet. Come on Oculus, this guy is trying to support your product to better help you sell your product. Give this guy a hand and work with him.
    CPU: i7 3770k 4.6Ghz GPU: EVGA GTX 780
    sh0v0r
    sh0v0rAuthor
    Up and Coming
    September 9, 2014
    boone188 from OVR has got in touch with me and is giving it some attention. Won't be until next week when I can spend some time to see if I can providing him with a repro case.
    Up and Coming
    September 11, 2014
    May i request a multi-camera prefab to be included for the next SDK?

    It seems each new build breaks the way its done and different workarounds have to be found. If you guys made a prefab and checked it works with each new SDK it would save us a lot of mucking around.

    I would love to release a DK2 version of Ambient Flight, but with a single camera the trees flicker so bad it will trigger an epilepsy attack :)
    Ambient Flight Eagle Flight Experience Dinosaur Voyage Running from Dinosaurs
    Inspiring
    September 11, 2014
    "sh0v0r" wrote:
    I cannot use Image Effects, a known issue.

    This is on Unity's radar. We will let you know as soon as they fix it.

    "sh0v0r" wrote:
    I can't fade the screen between transitions since the latest SDK broke Unity GUI which I was using for Screen fades.

    We are looking into this. As a workaround, you could try rendering to (or re-creating) OVRMainMenu's GUIRenderTexture, which gets rendered on a full-screen quad instead of going through the usual GUI compositing process. See OVRVisionGuide.OnGUIVisionGuide() for an example.

    "basedeltazero" wrote:
    If you guys made a prefab and checked it works with each new SDK it would save us a lot of mucking around.

    We have a test case for this. It uses one OVRCameraController, a pair of OVRCameras for the near cameras, and a pair of OVRSubCameras for the far pair. The only issues I see with it are with image effects (described above) and a 1-frame delay on the far cameras due to timewarp timing. There should be a fix for that soon.

    "sh0v0r" wrote:
    It looks mostly fine, scale is correct, depth perception is correct, however I can sense some sort of eye strain

    That doesn't sound good. How did you set up the OVRSubCameras? Do the near and far cameras stay aligned when you move your head?

    "sh0v0r" wrote:
    Speaking of DX11 for some reason this build looked very dull like someone turned the brightness down.

    There seems to be a regression in our x64 build causing this. Does x86 work better for you?