C++ 地球相机位置
在几次消极尝试之后,我给你写信 我使用的是OSGEarth,尤其是我无法为起始位置设置相机的经度、纬度和高度 恐怕这与我使用地球操纵器有关C++ 地球相机位置,c++,camera,position,openscenegraph,osgearth,C++,Camera,Position,Openscenegraph,Osgearth,在几次消极尝试之后,我给你写信 我使用的是OSGEarth,尤其是我无法为起始位置设置相机的经度、纬度和高度 恐怕这与我使用地球操纵器有关 osg::ref_ptr<osgViewer::Viewer> g_viewer = new osgViewer::Viewer; osg::Vec3d eye(1110.0, 1110.0, 1110.0); osg::Vec3d center(10.0, 10.0, 10.0); osg::Vec3d up(0.0, 1.0, 0.0);
osg::ref_ptr<osgViewer::Viewer> g_viewer = new osgViewer::Viewer;
osg::Vec3d eye(1110.0, 1110.0, 1110.0);
osg::Vec3d center(10.0, 10.0, 10.0);
osg::Vec3d up(0.0, 1.0, 0.0);
g_viewer->setCamera(camera.get());
EarthManipulator* manip = new EarthManipulator();
manip->setViewpoint(Viewpoint(
"Home",
-71.0763, 42.34425, 0,
// -71.0763, 42.34425, 0, // longitude, latitude, altitude
24.261, -21.6, 3450.0), // heading, pitch, range//3450
4.0); // duration, 4.0);
g_viewer->setCameraManipulator(manip);
因此,我创建了摄影机:
osg::ref_ptr<osg::GraphicsContext> gc = osg::GraphicsContext::createGraphicsContext(traits.get());
osg::ref_ptr<osg::Camera> camera = new osg::Camera;
camera->setGraphicsContext(gc);
camera->setViewport(new osg::Viewport(0, 0, traits->width, traits->height));
camera->setClearMask(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
osg::ref\u ptr gc=osg::GraphicsContext::createGraphicsContext(traits.get());
osg::ref_ptr camera=新osg::camera;
摄像头->设置图形上下文(gc);
摄影机->设置视口(新osg::视口(0,0,特征->宽度,特征->高度));
摄像头->设置透明蒙版(GL_深度_缓冲_位| GL_颜色_缓冲_位);
然后,我创建了视图,我将地球操纵器传递到该视图
osg::ref_ptr<osgViewer::Viewer> g_viewer = new osgViewer::Viewer;
osg::Vec3d eye(1110.0, 1110.0, 1110.0);
osg::Vec3d center(10.0, 10.0, 10.0);
osg::Vec3d up(0.0, 1.0, 0.0);
g_viewer->setCamera(camera.get());
EarthManipulator* manip = new EarthManipulator();
manip->setViewpoint(Viewpoint(
"Home",
-71.0763, 42.34425, 0,
// -71.0763, 42.34425, 0, // longitude, latitude, altitude
24.261, -21.6, 3450.0), // heading, pitch, range//3450
4.0); // duration, 4.0);
g_viewer->setCameraManipulator(manip);
osg::ref_ptr g_viewer=新的osgViewer::viewer;
osg::Vec3d眼(1110.01110.01110.0);
osg::Vec3d中心(10.0,10.0,10.0);
osg::Vec3d向上(0.0,1.0,0.0);
g_viewer->setCamera(camera.get());
EarthManipulator*manip=新的EarthManipulator();
manip->setViewpoint(视点(
“家”,
-71.0763, 42.34425, 0,
//-71.0763,42.34425,0,//经度,纬度,海拔
24.261,-21.63450.0),//航向、俯仰、射程//3450
4.0); // 持续时间,4.0);
g_viewer->setCameraManipulator(manip);
但我不能从通常的角度出发
我还试着在EarthMipulator上工作,特别是设置起始位置
manip->setHomePosition()
但是没有任何变化您想要的方法是EarthManipulator::setHomeViewpoint:
manip->setHomeViewpoint(视点(
“家”,
-71.0763,42.34425,0,//经度,纬度,海拔
24.261, -21.6, 3450.0)); // 航向、俯仰、范围