复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97#include <Windows.h> #include <osgViewer/Viewer> #include <osgEarth/EarthManipulator> #include <osgDB/ReadFile> #include <osgEarth/GeoTransform> #include <osgEarth/AutoClipPlaneHandler> #include <osg/PositionAttitudeTransform> #include <osgGA/StateSetManipulator> #include <osgViewer/ViewerEventHandlers> #ifdef _DEBUG //osg库一共19个 #pragma comment(lib, "osgd.lib") #pragma comment(lib, "osgDBd.lib") #pragma comment(lib, "osgFXd.lib") #pragma comment(lib, "osgViewerd.lib") #pragma comment(lib, "osgVolumed.lib") #pragma comment(lib, "OpenThreadsd.lib") #pragma comment(lib, "osgGAd.lib") #pragma comment(lib, "osgUtild.lib") #pragma comment(lib, "osgManipulatord.lib") #pragma comment(lib, "osgTextd.lib") #pragma comment(lib, "osgSimd.lib") #pragma comment(lib, "osgTerraind.lib") #pragma comment(lib, "osgWidgetd.lib") #pragma comment(lib, "osgUId.lib") #pragma comment(lib, "osgShadowd.lib") #pragma comment(lib, "osgAnimationd.lib") #pragma comment(lib, "osgParticled.lib") #pragma comment(lib, "osgPresentationd.lib") #pragma comment(lib, "osgQOpenGLd.lib") //osgearth库1个 #pragma comment(lib, "osgEarthd.lib") //其他库2个 #pragma comment(lib, "glu32.lib") #pragma comment(lib, "opengl32.lib") #else #pragma comment(lib, "osg.lib") #pragma comment(lib, "osgDB.lib") #pragma comment(lib, "osgFX.lib") #pragma comment(lib, "osgViewer.lib") #pragma comment(lib, "osgVolume.lib") #pragma comment(lib, "OpenThreads.lib") #pragma comment(lib, "osgGA.lib") #pragma comment(lib, "osgUtil.lib") #pragma comment(lib, "osgManipulator.lib") #pragma comment(lib, "osgText.lib") #pragma comment(lib, "osgSim.lib") #pragma comment(lib, "osgTerrain.lib") #pragma comment(lib, "osgWidget.lib") #pragma comment(lib, "osgUI.lib") #pragma comment(lib, "osgShadow.lib") #pragma comment(lib, "osgAnimation.lib") #pragma comment(lib, "osgParticle.lib") #pragma comment(lib, "osgPresentation.lib") #pragma comment(lib, "osgQOpenGL.lib") #pragma comment(lib, "osgEarth.lib") #pragma comment(lib, "glu32.lib") #pragma comment(lib, "opengl32.lib") #endif; int main(int argc, char** argv) { osgEarth::initialize(); osgViewer::Viewer *viewer = new osgViewer::Viewer; osg::Group* root = new osg::Group; osg::Node*earth = osgDB::readNodeFile("simple.earth"); root->addChild(earth); //添加状态事件,可以相应键盘和鼠标事件,响应L T B W viewer->addEventHandler(new osgGA::StateSetManipulator(viewer->getCamera()->getOrCreateStateSet())); //窗口大小变化,响应F viewer->addEventHandler(new osgViewer::WindowSizeHandler); //添加路径记录 Z viewer->addEventHandler(new osgViewer::RecordCameraPathHandler); //帮助文档显示H viewer->addEventHandler(new osgViewer::HelpHandler); //截屏 C viewer->addEventHandler(new osgViewer::ScreenCaptureHandler); //添加一些常用状态设置,响应S viewer->addEventHandler(new osgViewer::StatsHandler); osgEarth::Util::EarthManipulator*em = new osgEarth::Util::EarthManipulator; viewer->setCameraManipulator(em); osgEarth::MapNode*mapNode = osgEarth::MapNode::findMapNode(earth); viewer->getCamera()->addCullCallback(new osgEarth::Util::AutoClipPlaneCullCallback(mapNode)); //先在坐标原点绘制三维曲面,再通过GeoTransform将绘制结果转移到雷达的经纬坐标处 osgEarth::GeoTransform* xform = new osgEarth::GeoTransform(); xform->setPosition(osgEarth::GeoPoint(osgEarth::SpatialReference::get("wgs84"), 116.0, 40.0, 10,osgEarth::AltitudeMode::ALTMODE_RELATIVE)); // 局部坐标系 osg::PositionAttitudeTransform* pat = new osg::PositionAttitudeTransform; pat->setUserValue("pos", osg::Vec3d(116.0, 40.0, 10)); //pat->setScale(osg::Vec3(20.0, 20.0, 20.0)); xform->addChild(pat); pat->addChild(osgDB::readNodeFile("cow.osg")); root->addChild(xform); viewer->setSceneData(root); em->setViewpoint(osgEarth::Viewpoint("", 116.0, 40.0, 10.0, 0.0, -90.0, 100), 5); return viewer->run(); }
最后
以上就是整齐战斗机最近收集整理的关于osgearth3.2在地球上加载模型的全部内容,更多相关osgearth3内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复