Hi Jordi Torres,

Thank you very much for the help.

As you suggested I rendered the model with out transform. Model rendered on 
screen.

I am using a 3rd party lib for AR tracking. This lib is configured video 
background. This config is for video background. 

Here is the config code


Code:
 CameraDevice& cameraDevice = QCAR::CameraDevice::getInstance();
 VideoMode videoMode = cameraDevice.                              
getVideoMode(QCAR::CameraDevice::MODE_DEFAULT);

    VideoBackgroundConfig config;
    config.mEnabled = true;  //Enables/disables rendering of the video backgroun
    config.mSynchronous = true; //Enables/disables synchronization of video 
background and tracking data
/*Relative position of the video background in the render target in pixels. 
Describes the offset of the center of video background to the center of the 
screen (viewport) in pixels. (0,0) is the center of the screen*/
    config.mPosition.data[0] = 0.0f;
    config.mPosition.data[1] = 0.0f;
/*Width and height of the video background in pixels. */
config.mSize.data[0] = screenWidth;
        config.mSize.data[1] = videoMode.mHeight
                            * (screenWidth / (float)videoMode.mWidth); //for 
correct aspect ratio



Renderer::getInstance().setVideoBackgroundConfig(config);



After config video background I am rendering video background with the 
following statement


Code:
Renderer::getInstance().drawVideoBackground();




Even with the transformation matrix the model is rendering correctly with out 
this statement. When I added this statement the model disappears on the screen.

I tried to set Viewport and projection matrix to the viewers camera. But still 
I not able to see the 3D model on screen.


This is the code for OSG INIT


Code:
if(mload)
  {
      
        LOG("Init==============");   
  int x=0;
  int y=0;

  int width=screenWidth;
  int height=screenHeight;

  _viewer = new osgViewer::Viewer();
    _viewer->setUpViewerAsEmbeddedInWindow(x, y, width, height);
     _root = new osg::Group();

    _viewer->realize();
    _state = _root->getOrCreateStateSet();
    _state->setMode(GL_LIGHTING, osg::StateAttribute::ON);
    _state->setMode(GL_DEPTH_TEST, osg::StateAttribute::ON);
    _state->setMode(GL_CULL_FACE, osg::StateAttribute::ON);

    _viewer->setSceneData(_root.get());

    _viewer->addEventHandler(new osgViewer::StatsHandler);
    _viewer->addEventHandler(new 
osgGA::StateSetManipulator(_viewer->getCamera()->getOrCreateStateSet()));
    _viewer->addEventHandler(new osgViewer::ThreadingHandler);
    _viewer->addEventHandler(new osgViewer::LODScaleHandler);

 _manipulator = new osgGA::KeySwitchMatrixManipulator;

    _manipulator->addMatrixManipulator( '1', "Trackball", new 
osgGA::TrackballManipulator() );
    _manipulator->addMatrixManipulator( '2', "Flight", new 
osgGA::FlightManipulator() );
    _manipulator->addMatrixManipulator( '3', "Drive", new 
osgGA::DriveManipulator() );
    _manipulator->addMatrixManipulator( '4', "Terrain", new 
osgGA::TerrainManipulator() );
    _manipulator->addMatrixManipulator( '5', "Orbit", new 
osgGA::OrbitManipulator() );
    _manipulator->addMatrixManipulator( '6', "FirstPerson", new 
osgGA::FirstPersonManipulator() );
    _manipulator->addMatrixManipulator( '7', "Spherical", new 
osgGA::SphericalManipulator() );

    _viewer->setCameraManipulator( _manipulator.get() );

    _viewer->getViewerStats()->collectStats("scene", true);
    

_viewer->getCamera()->setViewport(0,0,width, height);

    
_viewer->getCamera()->setProjectionMatrix(osg::Matrix(projectionMatrix.data));



trans=new osg::MatrixTransform();
    
    
    LOG("Load Model");
  osg::ref_ptr<osg::Node> loadedModel = 
osgDB::readNodeFile("/mnt/sdcard/OSG/lz.osg");
  if (loadedModel == 0) {
            LOG("Model not loaded");
        } else {
            LOG("Model loaded");
            

            loadedModel->setName("/mnt/sdcard/OSG/lz.osg");
            //_root->addChild(loadedModel);
            trans->addChild(loadedModel.get());
        }
        
  _root->addChild(trans.get());

        _viewer->setSceneData(NULL);
    _viewer->setSceneData(_root.get());
     _manipulator->getNode();
    _viewer->home();

    _viewer->getDatabasePager()->clear();
    _viewer->getDatabasePager()->registerPagedLODs(_root.get());
    _viewer->getDatabasePager()->setUpThreads(3, 1);
    _viewer->getDatabasePager()->setTargetMaximumNumberOfPageLOD(2);
    _viewer->getDatabasePager()->setUnrefImageDataAfterApplyPolicy(true, true);
    mload=false;
  }

//_viewer->frame(); [b]If I enabled only this by commenting the following then 
the model renders correctly.[/b]


State state = Renderer::getInstance().begin();
  // Explicitly render the Video Background
    Renderer::getInstance().drawVideoBackground();   //
  
  for(int tIdx = 0; tIdx < state.getNumActiveTrackables(); tIdx++)
   {
     // Get the trackable:
        const Trackable* trackable = state.getActiveTrackable(tIdx);
        Matrix44F modelViewMatrix =         
Tool::convertPose2GLMatrix(trackable->getPose());


            _viewer->frame();

    QCAR::Renderer::getInstance().end();

    break;
   }





 

AR lib code to get the projection matrix


Code:
CameraCalibration& cameraCalibration = 
CameraDevice::getInstance().getCameraCalibration();
projectionMatrix = Tool::getProjectionGL(cameraCalibration, 2.0f,
                                            2000.0f); //Returns an OpenGL style 
projection matrix



Do I need to add any thing to the viewers settings.

Can you please help me where am I doing the mistake.

 

... 

Thank you!

Cheers,
Koduri

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=49724#49724




_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to