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<[email protected]> 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<[email protected]>  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<[email protected]>
>>>>  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<[email protected]>
>>>>>>  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
>>>>>>> [email protected]
>>>>>>>
>>>>>>>
>>>>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> osg-users mailing list
>>>>>> [email protected]
>>>>>>
>>>>>>
>>>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> osg-users mailing list
>>>>> [email protected]
>>>>>
>>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>>>
>>>> _______________________________________________
>>>> osg-users mailing list
>>>> [email protected]
>>>>
>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>>
>>>
>>> _______________________________________________
>>> osg-users mailing list
>>> [email protected]
>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>
>> _______________________________________________
>> osg-users mailing list
>> [email protected]
>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>
>
>
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to