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

Reply via email to