I adapted some old code found on the OSG site for a Qt implementation of 
osgGA/GUIEventAdapter and osgGA/GUIActionAdapter.  I did *not* extend 
osgGA::GraphicsWindow.  Instead, I adapted the existing window 
implementation.

The widget works in so much as it shows the scene, and will run the simple 
animated rotation if I toss it with the mouse.  I can also drag the scene 
around in all 3 dimensions.  

Here's the problem I have.  When the program starts, the camera is at the 
origin.  If I drag the scene to the back, I can see it from the perspective I 
want.  When I do this, the scene rotates about the origin as I desire.  I 
want to set the camera away from the origin before the scene is displayed.  
My event handler is an osgGA::KeySwitchMatrixManipulator with an 
osgGA::TrackballManipulator added to it.  If I do a setByMatrix to the 
location I want the scene to appear, the objects are positioned correctly, 
but when I rotate the scene, it rotates about the camera.  If I try to 
osgUtil::SceneView->setViewMatrix(where_I_want_it), nothing happens.  

This is the code for painting the scene:

void OSGWidget::paintGL() {

  if(!isValid()) return;
    
  _frameStamp_rptr->setFrameNumber(_frameStamp_rptr->getFrameNumber() + 1);
  _frameStamp_rptr->setReferenceTime(_clock.delta_s(_initialTick, 
_clock.tick()));

  if (_matrixManipulator_rptr.get()) 
_sceneView_rptr->setViewMatrix(_matrixManipulator_rptr->getInverseMatrix());

  _sceneView_rptr->update();
  _sceneView_rptr->cull();
  _sceneView_rptr->draw();
    
}

I suspect that what is happening when I try to set the view matrix is that it 
gets overwritten by the paint code.

How can I get the scene (or camera) located away from the origin, but still 
have the axis of rotation about the origin?
_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

Reply via email to