My guess is that, at the time you do the query, you haven't rendered a frame
yet. If so, the Viewer object hasn't queried the manipulator matrix yet. You
have the source code, so you can easily verify this with a debugger.
 
Paul Martz
Skew Matrix Software LLC
http://www.skew-matrix.com <http://www.skew-matrix.com/> 
+1 303 859 9466
 

  _____  

From: [email protected]
[mailto:[email protected]] On Behalf Of ami guru
Sent: Thursday, April 02, 2009 8:05 AM
To: OpenSceneGraph Users
Subject: [osg-users] default coordinate system and camera - newbie


Hello Paul,


I have made the following changes, still having the same value:


***************************************
int main()
{
    //Creating the viewer    
        osgViewer::Viewer viewer ;


    viewer.setCameraManipulator(new osgGA::TrackballManipulator());


    //add some event handler
    //to show the statistics
    viewer.addEventHandler(new osgViewer::StatsHandler);


    /*
      get camera related information

     */
    osg::Vec3f eye;
    osg::Vec3f dir;
    osg::Vec3f up;

    viewer.getCamera()->getViewMatrixAsLookAt(eye,dir,up);


    cout << "The eye  vector: " << eye.x() << " " << eye.y() << " " <<
eye.z() << endl;
    cout << "The look at position: " << dir.x() << " " << dir.y() << " " <<
dir.z() << endl;
    cout << "The up vector is: " << up.x() << " " << up.y() << " " << up.z()
<< endl;



***************************************


---------- Forwarded message ----------
From: ami guru <[email protected]>
Date: Thu, Apr 2, 2009 at 2:39 AM
Subject: Fwd: [osg-users] default coordinate system and camera - newbie
To: OpenSceneGraph Users <[email protected]>


Hello Paul,


I have the following snippet that deals with the viewer


******************************'
int main()
{
    //Creating the viewer    
        osgViewer::Viewer viewer ;


    //add some event handler
    //to show the statistics
    viewer.addEventHandler(new osgViewer::StatsHandler);


    /*
      get camera related information

     */ 

    osg::Vec3f eye;
    osg::Vec3f dir;
    osg::Vec3f up;

    viewer.getCamera()->getViewMatrixAsLookAt(eye,dir,up);


    cout << "The eye  vector: " << eye.x() << " " << eye.y() << " " <<
eye.z() << endl;
    cout << "The look at position: " << dir.x() << " " << dir.y() << " " <<
dir.z() << endl;
    cout << "The up vector is: " << up.x() << " " << up.y() << " " << up.z()
<< endl;


    //Creating the root node
    osg::ref_ptr<osg::Node> root  = createSceneGraph();
    
............................................................

............................................................

****************************'**


Could you provide some hint where the bug might be , at least  the way to
find it?


I want to implement a very simple scenario. A camera that moves along with
the key press event.

I already have that implemented in OpenGL program where i can roll, pitch
yaw and slide with user key press event.


I want to map that in the scene graph system.


I have the following information predefined

n = eye - look;
u = up * n;
v = n * u;


To move the camera in an ineractive way i have to have the access to there
values .


there is a function in the Camera Class called getViewMatrix() , i hope that
it is one to access these values.


Any more reference would be of great help.



---------- Forwarded message ----------
From: Paul Martz <[email protected]>
Date: 2009/4/2
Subject: Re: [osg-users] default coordinate system and camera - newbie
To: OpenSceneGraph Users <[email protected]>



The CameraManipulator (like TrackballManipulator, for example) determines
the default orientation. You can change this default by setting the up
vector in the TrackballManipulator. By default, the TrackballManipulator
uses positive Z up, so if your code is getting positive Y up, either you
have a bug or you are not using the TrackballManipulator or you have changed
its default.
 
The default view position is also determined by the CameraManipulator. The
TrackballManipulator, for example, has a home position that you can set. By
default, it considers the scene bounding volume and tries to position the
view so that the entire scene fits within a 50 degree FOV (I think it's 50,
not sure).
 
Paul Martz
Skew Matrix Software LLC
http://www.skew-matrix.com <http://www.skew-matrix.com/> 
+1 303 859 9466
 

  _____  

From: [email protected]
[mailto:[email protected]] On Behalf Of ami guru
Sent: Wednesday, April 01, 2009 1:58 PM
To: OpenSceneGraph Users
Subject: [osg-users] default coordinate system and camera - newbie


Hello forum,


osgViewer , by default uses the world coordinate system that is oriented
with positive X to right , positive Z up, and positive Y into the screen.


Does that mean  the camera' s defualt position is at the origin looking down
into  the screen which is positive Y?


I have tried to extract  the vectors using the function 

************************'
    osg::Vec3f eye;
    osg::Vec3f dir;
    osg::Vec3f up;

    viewer.getCamera()->getViewMatrixAsLookAt(eye,dir,up);


    cout << "The eye  vector: " << eye.x() << " " << eye.y() << " " <<
eye.z() << endl;
    cout << "The look at position: " << dir.x() << " " << dir.y() << " " <<
dir.z() << endl;
    cout << "The up vector is: " << up.x() << " " << up.y() << " " << up.z()
<< endl;


************************


The eye  vector: 0 0 0
The look at position: 0 0 -1
The up vector is: 0 1 0


I was wondering if the up vector be Z axis instead


Regards
Sajjad



_______________________________________________
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