愿你出走半生,归来仍是少年!
在三维场景中除了使用影像体现出地貌情况,还需要通过地形体现出地势起伏,还原一个相对真实的三维虚拟世界。
osgEarth可通过直接加载Dem数据进行场景内的地形构建。
1.数据准备
由于我也没有高程数据,所以在地理空间数据源中下载。
地理空间数据云 (gscloud.cn)
数据下载后可通过ArcMap或者QGis将其转换为Wgs84的Tif格式数据。
2.代码
通过OsgEarth的GDALElevationLayer类构建地形图层并进行加载完成地形的构建。
/// <summary>
/// 通过本地的tif(dem)数据创建地形图层
/// </summary>
/// <param name="fileFullName"></param>
/// <returns></returns>
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;
}