Hi Robert, I can really understand your situation :-) Maybe someone else has a good idea?
Greetings Mathias Robert Osfield wrote: > Hi Mathias, > > I'm afraid I have way too much work on my plate to go investigating > user applications. > > Robert. > > On Wed, Aug 5, 2009 at 2:44 PM, Mathias Buhr<mathias...@gmx.de> wrote: > >> Thanks again Robert! I really appreciate it. >> >> I've build a small example which should help to demonstrate the problem. I >> removed the post processing since it is not reallly helpful nor the problem. >> I hope this helps >> >> Greetings >> Mathias >> >> Am 05.08.09 14:49, schrieb Robert Osfield: >> >>> Hi Mathias, >>> >>> I can't really give you any recommendation as you are already doing >>> custom code w.r.t FBO which means there is too many unknowns for me to >>> guess at. >>> >>> Robert. >>> >>> On Wed, Aug 5, 2009 at 1:31 PM, Mathias Buhr<mathias...@gmx.de> wrote: >>> >>>> Yes, thats exactly the plan but I need the images back in the FB to get >>>> the >>>> 3rd party stuff working. This means I have to call >>>> glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0) before the call to >>>> distortion-code or the function won't work. This assumes the image in >>>> GL_BACK and GL_BACK has to be stored to the FBO afterwards. >>>> How to do this? >>>> >>>> Greetings >>>> MAthias >>>> >>>> Am 05.08.09 14:08, schrieb Robert Osfield: >>>> >>>>> HI Mathias, >>>>> >>>>> Given your setup it's pretty clear that you'd need to not use the OSG >>>>> in built stereo support (that is implemented internally using >>>>> osgUtil::SceneView), and instead setup up two slave camera sets that >>>>> do the render to texture/post render for each eye and in the final >>>>> step do the checkboard stereo at the same time >>>>> >>>> >>>>> Robert. >>>>> >>>>> On Wed, Aug 5, 2009 at 12:34 PM, Mathias Buhr<mathias...@gmx.de> >>>>> wrote: >>>>> >>>>>> Hi Robert, >>>>>> >>>>>> thank you for your answer. >>>>>> I'll try to give some more details on the current setup: >>>>>> - multiple physical displays/projectors which overlap to produce a >>>>>> single >>>>>> (flat-)screen >>>>>> - alignment and blending of the displays is done with the 3rd-party >>>>>> stuff >>>>>> - the displays support checkerboard-stereo >>>>>> >>>>>> In mono-mode my integration of OSG and the 3rd party stuff works >>>>>> perfectly >>>>>> and all display do what they are supposed to do. The post-processing is >>>>>> done >>>>>> in the camera's postDrawCallback without any magic :) The problem >>>>>> starts >>>>>> when I enable OSGs checkerboard-stereo because the image-distortion in >>>>>> the >>>>>> postDrawCallback will result in an unusable checkerboard-frame. So >>>>>> basically >>>>>> I'm trying to get checkerboard-stereo to work. >>>>>> Due to the described problem, I need access to the left and right >>>>>> frames >>>>>> to >>>>>> distort them individually. Normally they are "blend together" via >>>>>> stenciling >>>>>> in osg::RenderStage::draw(). As far as I know, there is no direct >>>>>> access >>>>>> to >>>>>> these frames. I could either implement some kind of callback into OSG >>>>>> or >>>>>> implement a variant of checkerboard-stereo myself. >>>>>> Currently I'm trying to render both frames individually to an FBO and >>>>>> putting them together afterwards. In this case I would have control of >>>>>> both >>>>>> frames and I would be able to manipulate them with the help of the >>>>>> 3rd-party >>>>>> code. osg::Camera::RenderTargetImplementation::FRAME_BUFFER_OBJECT >>>>>> wasn't >>>>>> able to do the trick since I've found no way to access the FBO OSG >>>>>> utilizes. >>>>>> Therefore I've tried my own implementation (currently on a single >>>>>> display) >>>>>> with the following setup and the given result in the post before (take >>>>>> a >>>>>> look at the attached picture). >>>>>> >>>>>> The current implementation is very similiar to the osgprerender example >>>>>> (stereo is not enabled) except that I'm creating my own FBO in a >>>>>> preDrawCallback of the PRE_RENDER cam. This FBO has an attached texture >>>>>> and >>>>>> is used as the rendertarget for the first (left) (RTT-)camera. >>>>>> RenderTargetImplementation for this camera has not been explicitly set. >>>>>> The >>>>>> texture is attached to a rectangular geometry, which is itself a child >>>>>> of >>>>>> the osgViewers camera. Unfortunately the result of the RTT looks like >>>>>> the >>>>>> attached image. The image was saved in the postDrawCallback. I'm pretty >>>>>> sure >>>>>> I've messed something up or missed something. RTT with OSGs FBO works >>>>>> fine >>>>>> and I've looked at the code but I didn't find anything. >>>>>> >>>>>> Does someone have an idea? Or maybe another way to implement >>>>>> checkerboard-stereo? It looks like some faces get culled away. If its >>>>>> useful >>>>>> I'll post some code. >>>>>> >>>>>> @Robert: I'm not using osgUtils low level stereo right now but I guess >>>>>> some >>>>>> of the code would later be useful to get the correct left and right >>>>>> camera-position-setup. >>>>>> >>>>>> Nice greetings and thanks for any help or hint! >>>>>> Mathias Buhr >>>>>> >>>>>> P.S.: I was already able to do the distortion with that implementation >>>>>> (with >>>>>> blitting the FBO-image back to the window-system provided FB to get the >>>>>> 3rd >>>>>> party stuff working). >>>>>> >>>>>> >>>>>> >>>>>> Am 04.08.09 19:14, schrieb Robert Osfield: >>>>>> >>>>>>> Hi Mathias, >>>>>>> >>>>>>> You don't really provide enough info about your overall viewer setup >>>>>>> to give a direct answer. It sounds like you are using the OSG's low >>>>>>> level stereo support in osgUtil and combining this with a 3rd party >>>>>>> code that does distortion correction or similar. Doing low level >>>>>>> stereo and distortion correction is really going to work visually even >>>>>>> if you got it to work code wise, as the low level stereo support in >>>>>>> osgUtil assumes a flat display. >>>>>>> >>>>>>> Have a bash at explaining what your system is trying to do at a high >>>>>>> level and then others will have a better chance of suggesting how to >>>>>>> go about it. >>>>>>> >>>>>>> Robert. >>>>>>> >>>>>>> On Tue, Aug 4, 2009 at 4:10 PM, Mathias Buhr<mathias...@gmx.de> >>>>>>> wrote: >>>>>>> >>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> before going into the details of the problem, I'd like to explain >>>>>>>> what >>>>>>>> I'm >>>>>>>> trying to do and what I have done until now. >>>>>>>> I have a 3rd-party function/method which is out of my scope. It seems >>>>>>>> to >>>>>>>> read and write the window-system provided framebuffer and >>>>>>>> manipulates/distorts the image. The first implementation was through >>>>>>>> calling >>>>>>>> this function in a postdraw-callback. Everything works fine this way. >>>>>>>> Unfortunately this is not possible if the CHECKBOARD flag is set >>>>>>>> because >>>>>>>> the >>>>>>>> postdraw-callback is called after the complete frame (including the >>>>>>>> stenceling for the checkerboard) is rendered. The function would >>>>>>>> distort >>>>>>>> the >>>>>>>> checkerboard. Hence, I have to apply this function for each "eye" >>>>>>>> separately. >>>>>>>> This seems possible with some changes to OSG itself but it also would >>>>>>>> break >>>>>>>> the possibilty to upgrade later. So I decided to take another >>>>>>>> approach: >>>>>>>> >>>>>>>> I've tried rendering to an FBO (RTT, similar to osgprerender) but I >>>>>>>> can't >>>>>>>> apply the function anymore in the postdraw-callback (gives GL >>>>>>>> errors). >>>>>>>> Since >>>>>>>> there is no access to the OSG-managed FBO (for bliting from FBO to >>>>>>>> FB) >>>>>>>> I >>>>>>>> have implemented my own and rendered to that instead. I'll give you a >>>>>>>> brief >>>>>>>> overview for that: >>>>>>>> >>>>>>>> MainCamera >>>>>>>> - addChild(QUAD_STRIP) //an osg:Geode with >>>>>>>> an >>>>>>>> osg::Texture2D >>>>>>>> - addChild(LeftCamera) >>>>>>>> - PreDrawCallback: >>>>>>>> - if (!fbo) glGenFramebufferEXT >>>>>>>> - glBindFramebufferEXT >>>>>>>> - glFramebufferTexture2DEXT //attach the >>>>>>>> osg::Texture2D >>>>>>>> - PostDrawCallback: >>>>>>>> - glBindFramebufferEXT(0) //bind window-system >>>>>>>> fb >>>>>>>> >>>>>>>> LeftCamera is set to PRE_RENDER >>>>>>>> >>>>>>>> This approach gives me the result which is shown in this picture: >>>>>>>> http://www.apparatus.de/test1.png >>>>>>>> >>>>>>>> Does someone have an idea what is going wrong or what I've missed? >>>>>>>> I've >>>>>>>> looked at the RenderStage code (and much more :-) ) but I haven't >>>>>>>> found >>>>>>>> something that might be the problem. >>>>>>>> >>>>>>>> Or maybe there is another (better) approach to this problem. Any >>>>>>>> hints >>>>>>>> for >>>>>>>> that? >>>>>>>> I would appreciate any help! Thank you very much for reading :-) >>>>>>>> >>>>>>>> Greetings >>>>>>>> Mathias >>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> osg-users mailing list >>>>>>>> osg-users@lists.openscenegraph.org >>>>>>>> >>>>>>>> >>>>>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> _______________________________________________ >>>>>>> osg-users mailing list >>>>>>> osg-users@lists.openscenegraph.org >>>>>>> >>>>>>> >>>>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >>>>>>> >>>>>>> >>>>>>> >>>>>> _______________________________________________ >>>>>> osg-users mailing list >>>>>> osg-users@lists.openscenegraph.org >>>>>> >>>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >>>>>> >>>>>> >>>>> _______________________________________________ >>>>> osg-users mailing list >>>>> osg-users@lists.openscenegraph.org >>>>> >>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >>>>> >>>>> >>>> _______________________________________________ >>>> osg-users mailing list >>>> osg-users@lists.openscenegraph.org >>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >>>> >>>> >>> _______________________________________________ >>> osg-users mailing list >>> osg-users@lists.openscenegraph.org >>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >>> >>> >> _______________________________________________ >> osg-users mailing list >> osg-users@lists.openscenegraph.org >> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >> >> >> > _______________________________________________ > osg-users mailing list > osg-users@lists.openscenegraph.org > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > >
_______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org