[osg-users] porting from osg-3.4.0 to osg-3.6.3

Robert Osfield robert.osfield at gmail.com
Mon Oct 8 23:29:28 PDT 2018


Hi Herman,

Thanks for the stack trace, the crash site and value of nv suggest
that for some reason the application is setting up the viewer without
an EventVIsitior.  The osgViewer assigns one by default so this must
have been reset, or the call to handle customized in some way that is
non-standard.

Have a look for any places where setEventVisitor is called in VTP.

Robert.
On Tue, 9 Oct 2018 at 07:15, Herman Varma <hermanvarma at eastlink.ca> wrote:
>
> Hi,
> Hi Robert
>
>
>
> I down down further to this statement
>
> m_pOsgViewer->frame();//
>
> In 3.4.0 it executes and in 3.6.3 it bombs here
>
>
> The full code is posted below
> void vtScene::UpdateWindow(vtWindow *pWindow)
> {
>        if (!m_bInitialized) return;
>
>        // window background color
>        osg::Vec4 color2;
>        v2s(pWindow->GetBgColor(), color2);
>        m_pOsgViewer->getCamera()->setClearColor(color2);
>
>        // window size
>        IPoint2 winsize = pWindow->GetSize();
>        if (winsize.x == 0 || winsize.y == 0)
>        {
>               VTLOG("Warning: winsize %d %d\n", winsize.x, winsize.y);
>               return;
>        }
>        m_pOsgViewer->getCamera()->setViewport(0, 0, winsize.x, winsize.y);
>
>        // As of OSG 0.9.5, we need to store our own camera params and recreate
>        //  the projection matrix each frame.
>        float aspect;
>        if (winsize.x == 0 || winsize.y == 0)           // safety
>               aspect = 1.0;
>        else
>               aspect = (float) winsize.x / winsize.y;
>
>        if (m_pCamera->IsOrtho())
>        {
>               // Arguments are left, right, bottom, top, zNear, zFar
>               float w2 = m_pCamera->GetWidth() /2;
>               float h2 = w2 / aspect;
>               m_pOsgViewer->getCamera()->setProjectionMatrixAsOrtho(-w2, w2, -h2, h2,
>                      m_pCamera->GetHither(), m_pCamera->GetYon());
>        }
>        else
>        {
>               float fov_x = m_pCamera->GetFOV();
>               float a = tan (fov_x/2);
>               float b = a / aspect;
>               float fov_y_div2 = atan(b);
>               float fov_y_deg = osg::RadiansToDegrees(fov_y_div2 * 2);
>
>               m_pOsgViewer->getCamera()->setProjectionMatrixAsPerspective(fov_y_deg,
>                      aspect, m_pCamera->GetHither(), m_pCamera->GetYon());
>        }
>
>
>        // And apply the rotation and translation of the camera itself
>        const osg::Matrix &mat2 = m_pCamera->getMatrix();
>        osg::Matrix imat;
>
>
>        imat.invert(mat2);
>
>        m_pOsgViewer->getCamera()->setViewMatrix(imat);
>        m_pOsgViewer->getCamera()->setCullMask(0x3);
>        // Also set the mask for the case of split-screen stereo
>        m_pOsgViewer->getCamera()->setCullMaskLeft(0x3);
>        m_pOsgViewer->getCamera()->setCullMaskRight(0x3);
>
>        m_pOsgViewer->frame();// ***************************It bombs on this statement
>
>
> }
>
> I also ran it in debug mode and posted a diagnostic.jpg of the resulting
> debug screen
>
> Thank you!
>
> Cheers,
> Herman
>
> ------------------
> Read this topic online here:
> http://forum.openscenegraph.org/viewtopic.php?p=75049#75049
>
>
>
>
> Attachments:
> http://forum.openscenegraph.org//files/diagnostic_569.jpg
>
>
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


More information about the osg-users mailing list