5.OsgEarth加载地形

愿你出走半生,归来仍是少年!

        在三维场景中除了使用影像体现出地貌情况,还需要通过地形体现出地势起伏,还原一个相对真实的三维虚拟世界。

        osgEarth可通过直接加载Dem数据进行场景内的地形构建。

1.数据准备

        由于我也没有高程数据,所以在地理空间数据源中下载。

地理空间数据云 (gscloud.cn)

登录后选择
数据下载

         数据下载后可通过ArcMap或者QGis将其转换为Wgs84的Tif格式数据。

2.代码

        通过OsgEarth的GDALElevationLayer类构建地形图层并进行加载完成地形的构建。

/// 
/// 通过本地的tif(dem)数据创建地形图层
/// 
/// 
/// 
osgEarth::GDALElevationLayer* Cv::LayerFactory::CreateTerrainLayer(std::string fileFullName)
{
	osgEarth::GDALElevationLayer* ly = new osgEarth::GDALElevationLayer();

	ly->setURL(fileFullName);

	int pos = fileFullName.find_last_of('\\', fileFullName.length());

	auto name = fileFullName.substr(pos);

	ly->setName(name);

	return ly;
}

3.效果

大场景下明显的地形隆起(正方形范围)
边缘处抬起的地形
近处的地形起伏

你可能感兴趣的:(Osg,c++,qt)