osgearth设置倾斜摄影贴地的代码
时间: 2023-09-16 07:15:04 浏览: 217
以下是osgEarth设置倾斜摄影贴地的代码示例:
```cpp
#include <osgEarth/MapNode>
#include <osgEarthUtil/EarthManipulator>
#include <osgEarthUtil/AutoClipPlaneHandler>
int main(int argc, char** argv)
{
// 初始化osgEarth
osg::ref_ptr<osg::ArgumentParser> arguments = new osg::ArgumentParser(&argc, argv);
osg::ref_ptr<osgEarth::Map> map = osgEarth::MapNodeHelper().load(arguments);
osg::ref_ptr<osgEarth::MapNode> mapNode = new osgEarth::MapNode(map);
// 创建倾斜摄影贴地的相机
osg::ref_ptr<osg::Camera> camera = new osg::Camera;
camera->setViewport(0, 0, 800, 600);
camera->setClearColor(osg::Vec4(0.1, 0.1, 0.1, 1.0));
camera->setProjectionMatrixAsPerspective(60, 800.0/600.0, 0.1, 1000.0);
camera->setNearFarRatio(0.00002);
camera->setCullingMode(osg::CullSettings::NO_CULLING);
camera->setAllowEventFocus(false);
// 设置相机的位置和方向
osgEarth::Util::EarthManipulator* manipulator = new osgEarth::Util::EarthManipulator(arguments.get());
manipulator->setHomeViewpoint(osgEarth::Viewpoint("My Home", 114.0, 30.0, 10000.0, 0.0, -90.0, 0.0));
manipulator->setNode(mapNode);
manipulator->setCamera(camera.get());
// 将相机添加到场景中
osg::ref_ptr<osg::Group> root = new osg::Group;
root->addChild(mapNode.get());
root->addChild(camera.get());
// 设置自动裁剪平面处理器
osg::ref_ptr<osgEarth::Util::AutoClipPlaneCullCallback> autoClip = new osgEarth::Util::AutoClipPlaneCullCallback;
camera->addCullCallback(autoClip.get());
osg::ref_ptr<osgEarth::Util::AutoClipPlaneHandler> autoClipHandler = new osgEarth::Util::AutoClipPlaneHandler(camera.get(), mapNode.get(), autoClip.get());
autoClipHandler->setBuffer(0.1);
osgViewer::Viewer viewer;
viewer.setSceneData(root.get());
viewer.setCameraManipulator(manipulator);
viewer.realize();
while(!viewer.done())
{
viewer.frame();
}
return 0;
}
```
该示例中,我们首先初始化了osgEarth的地图,并创建了一个倾斜摄影贴地的相机。接着,我们设置了相机的位置和方向,将相机添加到场景中,并设置了自动裁剪平面处理器。最后,我们创建了一个osgViewer::Viewer对象,设置了场景数据和相机操纵器,并进入渲染循环。
需要注意的是,该示例中的相机参数和裁剪平面参数都是根据实际情况进行调整的,需要根据自己的需求进行适当的修改。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)