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

Reply via email to