Hi,

I'm working on a Virtual Reality project that involves the rendering of a OSG 
scene in an Oculus Rift CV1 device using the OpenVR library. All these 
technologies are pretty new to me so everything is as exciting as frustrating :)
My code is based on the Chris Denham "osgopenvrviewer" project (you can find it 
on Github)

So, my starting point is a osgViewer::View that contains my immersive scene. I 
managed to render it in the headset display by doing this:


Code:
osg::ref_ptr<OpenVRViewer> vrViewer = new OpenVRViewer(myView, myDevice, 
myRealizeOperation);
osg::ref_ptr<osg::Node> sceneData = myView->getSceneData();
vrViewer->addChild(sceneData);
myView->setSceneData(vrViewer);



So far so good, the render quality and the stereo effect are perfect.
The problems start when I move my head to look around in the scene: it looks 
like the objects outside my first view frustum are not ready when the 
application starts, so I get serious frame drops when I see these objects for 
the first time. These frame drops are particulary annoying in the headset, 
where a frame drop freezes the view for a fraction of second multiple times, 
causing a very ugly effect.

This happens only the first time I look around: after a first "scan" of the 
scene, everything works smoothly and nice.

The system I'm working on started as a simple desktop application with a single 
view/camera and I couldn't reproduce these problems in the no-VR version. I can 
look around very fast using a gamepad without losing any frame.
So, I guess the problem is in the OpenVR integration.

Is there anyone who already had this kind of issues? Do you have an idea on how 
to manage pre-loading of the entire scene before the realtime simulation starts?

Thank you!

Cheers,
Lorenzo

P.S. I see that many people solved this problem using 
osgViewer::Renderer->setCompileOnNextDraw(true) but I think it is not enough in 
my case. I have two RTT slave cameras for VR rendering (left eye and right eye) 
and I saw that the "setSceneData" method internally calls 
"setCompileOnNextDraw" on every slave camera in the viewer.

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=69205#69205





_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to