关
代码仅供部分参考,如使用还需自行修改
一、地形数据三维可视化(GRID DEM)
-
数据源
- QQ群上传的DEM文件:test.asc文件
- 自己下载的一块高分辨率影像数据,这里我用的SPOT5.tif,由ARCGIS转asc与bmp格式导入
-
技术要求
- 基于MFC + OpenGL,编写单视窗文档,初始化OpenGL环境(蓝色底色);
- 读取并且三维可视化DEM地形,分别采用正射投影和透视投影模式;
- 正射投影和透视投影下,可以中心旋转三维地形,可以拉近拉远地形,可以进行地形高度夸张;
- 自己从网站上下载一块高分辨率影像数据和矢量地图栅格化数据,作为地形的纹理进行渲染。
二、室内三维建模与可视化
见
/osg
文件夹提供3DMAX建模结果的可视化代码,使用C++与osg配置环境,实现了下述功能
- 数据源
- 某火车站 室内数据(1-3层) SHAPFILE数据与地下广场 DWG数据(略)
- 技术要求
- 可以使用3DMAX 、SKECHUP等大家熟悉的各种不同的建模工具,构建室内三维模型,上交格式一律统一为OBJ格式。要求具有建筑结构表达完整细致如走廊、门、窗户、墙 楼梯等;具有合适的纹理对功能区加以区分。
- 三维模型与二维矢量图形保持1:1比例对齐;
- 利用MFC(C++/Qt……) + OpenSceneGraph 将自己建模的OBJ模型、二维矢量数据叠加在第一次实习的三维地形数据上,可以进行漫游、缩放、旋转。
- 能够进行几何实体的拾取操作。
-
运行环境说明:
- 程序编写基于VS2019的MFC单视窗环境,OpenGL环境基于Nupengl库或自行通过glut配置的最新OpenGL,均可正常运行。
-
主要代码说明:
- pch.h/pch.cpp: 预编译文件
- CMFCDemOpenGLDoc.h/CMFCDemOpenGLDoc.cpp: 文档类,主要负责文件读取
- CMFCDemOpenGLView.h/CMFCDemOpenGLView.cpp: 视图类,主要负责图像与操作显示
- ……
-
实现功能: 基于OpenGL实现的DEM操作包括如下:
- 读取并且三维可视化DEM地形
- 中心旋转三维地形漫游
- 绕X/Y轴顺时针/逆时针旋转场景
- 缩小/放大场景(即拉近拉远地形)
- 增加/减小高度比(即地形高度夸张)
- 向左/右平移场景
- 粘贴渲染地形纹理
- 填充地形模式切换
- 正射投影和透视投影模式切换显示
-
配置好OpenGL/Nupengl环境后运行exe或在解决方案中直接运行代码。
-
打开运行程序MFC窗口,通过
打开文件
读入test.asc或其他DEM文件,通过菜单中的DEM操作
下的功能按钮或快捷键实现各类DEM操作功能。