Hi,

  I am trying to figure how to use config files for camera definition with
osgviewer.
After some search in the list and browsing the code, it seems that camera
config files
can be passed to osgviewer in two ways: the environment variable
OSG_CONFIG_FILE
and the command-line option "-c". There are some examples in
OpenSceneGraph-Data/Configuration (with .view extension), but they fail in
different ways:

  osgviewer -c Configuration/SingleScreen.view cow.osg

Warning: Could not find plugin to read objects from file
"Configuration/SingleScreen.view".

  OSG_CONFIG_FILE=Configuration/SingleScreen.view
  osgviewer cow.osg

Warning: Could not find plugin to read objects from file
"Configuration/SingleScreen.view".
Viewer::realize() - failed to set up any windows
Warning: Could not find plugin to read objects from file
"Configuration/SingleScreen.view".
Viewer::realize() - failed to set up any windows

  It seems that the program cannot find the plug-in to read ".view" files.
 What plug-in is this? Isn't it "osgdb_osgviewer"?

  Anyway, after browsing the source and experimenting a little more, I
managed to get it working
with regular .osg files (instead of .view) that I created with
osgDB::writeObjectFile from an
osgViewer::Viewer with the desired configuration. It works with the
command-line option:

  osgviewer -c mycamera.osg model.osg

  But using the environment variable OSG_CONFIG_FILE still does not work, it
keep showing
the following messages:

Viewer::realize() - failed to set up any windows
Viewer::realize() - failed to set up any windows

  One last issue with camera config in the command-line option is that even
though it work
for the projection matrix and other features, the initial view is reset by
osgviewer. To avoid
this, I added this code to osgviewer.cpp after keyswitchManipulator creation
and configuration.

        if ( arguments.read("--noautohomeview") ) {
            osg::Vec3 eye, center, up;
            viewer.getCamera()->getViewMatrixAsLookAt( eye, center, up );
            keyswitchManipulator->setHomePosition( eye, center, up );
        }

  This way, the config file view matrix is set as home position for the
manipulator, what
prevents the manipulator to override it. It is activated with a command-line
option, to keep
backwards compatibility.

  Btw, I am using OSG 2.9.9.

  My questions are:
  Is all this config file system deprecated? (the -c command-line option is
not shown in the
osgviewer help)
  If it is not, what am I doing wrong?
  Is there any way to see the initial camera position defined in the config
file,
without needing to modify the osgviewer code?

  Any help would be very appreciated.


  Best Regards,
  Javier Taibo.
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to