OsgEarth节点跟随

osgEarth::Viewpoint vp;
//设置视点参数,focalPoint()函数返回的是一个点_point,然后调用set()函数进行设置,第一个参数是空间参考参数,第二个是经度,第三个是纬度,第四个是Z值
//最后一个参数用来描述Z是怎么解释的,有两种,ALTMODE_ABSOLUTE是绝对高程,从椭球体(?)开始算的,ALTMODE_RELATIVE是相对高程,从地形的标高以上开始算的,就是基准点在那个经纬度对应的点的最高处
vp.focalPoint()->set(mapNode->getMapSRS(), 100.0, 30.0, 0, osgEarth::ALTMODE_ABSOLUTE);
//设置相机相对于焦点的俯仰
vp.pitch() = -90.0;
//相机到focalPoint点的距离,也就是高度
vp.range() = 250000.0;
//设置视点属于操控相机视口,所以定义一个相机操作器,这里用的是EarthManipulator
osgEarth::Util::EarthManipulator* manip = new osgEarth::Util::EarthManipulator();
//把我们定义的vp设置进相机操作器
vp.setNode(Planemat); //Planemat为一个移动的osg::MatrixTransform
manip->setHomeViewpoint(vp);
//viewer把EarthManipulator设置为相机操作器
viewer->setCameraManipulator(manip);
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
osgEarth是一个开源的地理空间引擎,它基于OpenSceneGraph(OSG)库,提供了一套用于创建地理可视化应用程序的工具和功能。osgEarth可以用于创建各种地理信息系统(GIS)应用程序,包括地图浏览、地形渲染、卫星图像显示等。 在osgEarth中,视口跟随模型是一种常见的功能,它可以使相机(视口)跟随指定的模型进行移动和旋转。下面是一个osgEarth视口跟随模型的示例代码: ```cpp #include <osgEarth/MapNode> #include <osgEarthUtil/EarthManipulator> #include <osgViewer/Viewer> int main(int argc, char** argv) { // 创建osgViewer::Viewer对象 osgViewer::Viewer viewer; // 创建osgEarth的地图节点 osg::ref_ptr<osgEarth::MapNode> mapNode = osgEarth::MapNode::create(); // 设置地图节点为场景根节点 viewer.setSceneData(mapNode.get()); // 创建osgEarth的地球操作器 osg::ref_ptr<osgEarth::Util::EarthManipulator> earthManipulator = new osgEarth::Util::EarthManipulator(); // 设置地球操作器为相机操作器 viewer.setCameraManipulator(earthManipulator.get()); // 创建一个模型节点 osg::ref_ptr<osg::Node> modelNode = osgDB::readNodeFile("path/to/your/model.osg"); // 将模型节点添加到地图节点中 mapNode->addChild(modelNode.get()); // 设置相机跟随模型 earthManipulator->setViewpointNode(modelNode.get()); // 运行osgViewer return viewer.run(); } ``` 上述示例代码中,首先创建了一个osgViewer::Viewer对象,并创建了osgEarth的地图节点。然后,将地图节点设置为场景根节点,并创建了osgEarth的地球操作器。接下来,创建了一个模型节点,并将其添加到地图节点中。最后,通过设置相机跟随模型,实现了视口跟随模型的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值