[osg-users] Unable to place model on vpb terrain. How To ?

Tueller, Shayne R Civ USAF AFMC 519 SMXS/MXDEC Shayne.Tueller at hill.af.mil
Mon Apr 11 07:43:46 PDT 2011


Sanat,

The code I gave you assumes that your VPB terrain was built using the
--geocentric flag (e.g. round earth). If not, then you must resort to
what Glenn recommended in his email and handle the coordinate
conversions correctly from a flat UTM (or whatever) to a round earth.

If you do decide to build your VPB terrain using --geocentric, the X,Y,Z
coordinates have their origin at (0,0,0) (i.e. the center of the earth)
so your Z coordinate in convertXYZToLatLongHeight(276119.7034106,
4685765.312, 0.0,...) should never be zero unless you're exactly at the
equator (yielding a latitude of zero). In your call
convertLatLongHeightToXYZ(osg::DegreesToRadians(42.291966f),
osg::DegreesToRadians(-83.715645f), 0.0f,...) an altitude of zero will
only give you an X,Y,Z point on the ellipsoid.

-Shayne

-----Original Message-----
From: osg-users-bounces at lists.openscenegraph.org
[mailto:osg-users-bounces at lists.openscenegraph.org] On Behalf Of Sanat
Talmaki
Sent: Friday, April 08, 2011 11:07 PM
To: osg-users at lists.openscenegraph.org
Subject: Re: [osg-users] Unable to place model on vpb terrain. How To ?

Hi Shayne,

Thanks for your reply. I have tried a few different things and have a
few questions from that:

First of, when I try something like this:

 
Code:
osg::ref_ptr<osg::EllipsoidModel> em =
csnVisitor.coordinateSystemNode->getEllipsoidModel();
  if(!em)
  {
    std::cout << "ellipsoid model is null\n";
  }
  //where csnVisitor has a data member storing coordsystemnode



To get over this, I need to set the ellipsoid model first and then try
the above. This seemed strange but since the ctor is overloaded, I
didn't think much of it. But now that the convertXYZToLatLong and vice
versa are giving me incorrect results, I am wondering if this maybe a
cause??

Second, when I tried using a set of coords for which I had precomputed
the geocentric (XYZ) coords from lat-long using osgEarth, I got
incorrect numbers. 


Code:
csnVisitor.coordinateSystemNode->getEllipsoidModel()->
 
convertLatLongHeightToXYZ(osg::DegreesToRadians(42.291966f),
osg::DegreesToRadians(-83.715645f), 0.0f, 
                   terrainPosition.x(), terrainPosition.y(),
terrainPosition.z());
  double latitude, longitude, height;
 
csnVisitor.coordinateSystemNode->getEllipsoidModel()->convertXYZToLatLon
gHeight(276119.7034106, 4685765.312, 0.0,
 
latitude, longitude, height);



I think I have these functions right. But cannot figure out what maybe
causing this error. 

Third, when I try to get the height above terrain like:


Code:
osgSim::HeightAboveTerrain::computeHeightAboveTerrain(terrain,
terrainPosition)
//where terrain position is from the convert to XYZ function



This gives me a wrong height value. 

I wanted to know what it is that I can check or that I maybe doing
wrong. I have attached the terrain file (osg) that I am using in case
that helps.

Thank you

Sincerely,
Sanat.

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




Attachments: 
http://forum.openscenegraph.org//files/northcampus6levels_134.osg


_______________________________________________
osg-users mailing list
osg-users at lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.or
g



More information about the osg-users mailing list